RSS 2.0
Spec ↗- Channels, items, enclosures
- TTL, cloud, skip days
- Categories and GUIDs
Swift 6 package · v10.10.1 · MIT
FeedKit reads and writes RSS, RDF, Atom, and JSON into typed Swift models — thirteen namespaces, one universal Feed type.
One package for Apple platforms, Linux, Wasm, and Android.
let feed = try await Feed(urlString: url)
switch feed {
case .rss(let feed): // RSSFeed
case .rdf(let feed): // RDFFeed
case .atom(let feed): // AtomFeed
case .json(let feed): // JSONFeed
}
FeedKit detects RSS, RDF, Atom, and JSON feeds before parsing.
01 · Formats
Dedicated models for RSS 2.0, RSS 1.0 (RDF), Atom, and JSON Feed — plus the namespaces real feeds actually use.
namespaces, handled.
02 · Performance
The chart is the record, not a highlight reel: measured releases since 10.5.0, same corpus, same baseline.
“The 10.5.1 date-decoding regression doubled parse time and went unnoticed for five releases; this table is the fix for that.”
PERFORMANCE.md · FeedKit
03 · API
Dedicated types when you know the format. The universal Feed enum when you don't.
Five ways in
urlString · url · fileURL · string · data
let feed = try await Feed(
urlString: "https://daringfireball.net/feeds/main"
)
switch feed {
case .rss(let feed): // RSSFeed
case .rdf(let feed): // RDFFeed
case .atom(let feed): // AtomFeed
case .json(let feed): // JSONFeed
}
let feed = RSSFeed(channel: .init(
title: "Breaking News",
link: "https://breakingnews.example/",
description: "Updates as they happen.",
items: [.init(
title: "All hearts are joyful",
link: "https://breakingnews.example/joy",
description: "A story of unity."
)]
))
let xml = try feed.toXMLString(formatted: true)
let type = try FeedType(data: data)
switch type {
case .rss: // application/rss+xml
case .rdf: // RSS 1.0
case .atom: // application/atom+xml
case .json: // application/feed+json
}
Samples adapted from the FeedKit README.
04 · Source
05 · Install
No third-party dependencies. Add the package URL in Xcode, or declare it in Package.swift.
Package URL
https://github.com/nmdias/FeedKit
Xcode → File → Add Package Dependencies…