Feeds4U
RSS reader app.
git clone https://github.com/EvgenyKarkan/Feeds4U.gitEvgenyKarkan/Feeds4UFeeds4U
Your personal RSS reader for iPhone and iPad.
Subscribe to your favorite websites, blogs, and news sources — all in one place.
Supports RSS, Atom, and JSON Feed formats.
Requires iOS 18.0 or later.
Features
Subscribe to Anything
- Add a feed by typing or pasting its URL — and if your clipboard already holds one, the field pre-fills automatically
- Don't know the feed URL? Discover feeds from any website — the app crawls the page and lists what it finds
- Transparently handles Cloudflare-protected sites via a built-in human-verification flow
- Import an OPML file from another reader — pick the export with the system file picker and your subscriptions are added in one go, with a summary of how many were added, skipped, or failed
- One unified inbox for RSS, Atom, and JSON Feed sources
Read Comfortably
- Pull to refresh for the latest articles — with a subtle haptic tap to confirm
- Refresh everything at once — pull the feeds list down to update all your subscriptions in parallel; the spinner stays until every feed has finished
- Unread badges and a per-article dot indicator show what's new at a glance
- Mark a whole feed as read with one tap; individual articles are marked read as you open them
- A built-in offline reader renders articles with clean, readable typography
- On-device AI summaries — tap ✨ for an instant TL;DR (a short overview plus key points), generated entirely on your device with Apple Intelligence: private, offline, and streamed into the reader as it's written. Available on supported devices running iOS 26+, and gracefully hidden everywhere else
- Immersive reading — the navigation bar hides as you scroll, and a fluid zoom transition opens articles from their row
- Need the full site? Open any article in Safari — pre-warmed for an instant launch
Organize Your Way
- Group feeds into folders by topic, project, or however you like
- Drag & drop feeds to create folders, move them between folders, or ungroup them
- Collapse and expand folders to keep your list tidy
- Swipe to delete, or open the trash menu to enter edit mode for bulk cleanup
- Delete All — the trash menu shows how many megabytes of cache you'll reclaim (calculated live) and, after a confirmation, wipes every feed and article in one go
Find What You Need
- Fuzzy full-text search across every article in all your feeds at once
- Recent searches are saved to a pull-down menu for quick repeats — and clearable when you're done
- Results are sorted newest-first so the most relevant content is on top
Made for the Platform
- iPhone and iPad, every orientation
- Full dark mode, following your system appearance, with an adaptive app icon (light / dark / tinted)
- Deep linking — open
feed://…orFeeds4U://…links straight from other apps or Safari - Integrates with the iOS Settings app
Accessible
- Full VoiceOver support — feeds and articles announce their title, unread state and badge counts; folders announce their expanded/collapsed state and can be toggled; pull-to-refresh and the reader's actions are reachable and labelled
- Dynamic Type so text scales with your preferred reading size
Localized
Available in 23 languages: Albanian, Arabic, Belarusian, Bengali, Chinese (Simplified), English, Filipino, French, German, Hindi, Indonesian, Italian, Japanese, Korean, Polish, Portuguese (Brazil), Portuguese (Portugal), Punjabi, Russian, Spanish, Thai, Turkish, and Ukrainian.
Tech Stack
Platform
- Swift 6 (strict concurrency) and programmatic UIKit — Auto Layout with
UIStackView— targeting iOS 18+ on iPhone and iPad - Core Data for persistence, WKWebView for feed discovery, the Cloudflare flow, and the reader
- OPML import via
UIDocumentPickerand a customXMLParser-based parser — validates and de-duplicates feed URLs, then imports them sequentially - Foundation Models (Apple Intelligence) for on-device, streaming article summarization — availability-gated to iOS 26+ capable devices with a graceful fallback that hides the feature elsewhere
- Accessibility — VoiceOver labels/values, custom actions, and Dynamic Type
- Localization via String Catalogs (23 languages), with a Settings bundle and a deep-link URL scheme
Architecture
- VIPER feature modules talking only through protocols, with a Coordinator owning all navigation
- A dependency-injection container wiring services behind narrow, mockable protocols
- Modern Swift Concurrency throughout —
async/await,Sendable,@MainActor, andMutex-guarded state - Refresh-all fans out across feeds with a bounded
TaskGroup(parses run concurrently off the main thread, merges land on background Core Data contexts)
Engineering highlights
- Heavy work (parsing, imports, search indexing) runs on background Core Data contexts; the UI reads from the view context only
- Re-entrancy guards keep navigation, pull-to-refresh, and modal presentation single-flight under rapid taps
- Memory-conscious storage — article HTML is split into its own row and faulted in only when read
- Accurate cache size — the Delete All label reports live data (
(page_count − freelist_count) × page_sizevia read-only SQLite pragmas), so it stays correct in WAL mode and shrinks as feeds are deleted, without aVACUUM - On-device summaries stream into the reader — the model is prewarmed when the article opens, HTML is stripped off the main thread, and renders are throttled so token-by-token updates never flood the web view
Dependencies (Swift Package Manager)
- FeedKit — RSS / Atom / JSON Feed parsing
- SimpleSimilarity — fuzzy text matching for search
- KRProgressHUD & KRActivityIndicatorView — progress / activity indicators
Testing
- Unit tests in Swift Testing, with swift-mocking mocks and OHHTTPStubs network stubbing
- UI tests (XCUITest) over the main flows on deterministic, isolated seeded data — plus a stress / monkey suite, organized into Xcode Test Plans
- SwiftLint (strict no-force-unwrapping) and three build schemes: DEV / ADHOC / RELEASE
Build & Run
Requires a recent Xcode with the iOS 18 SDK (or later). Dependencies are resolved automatically via Swift Package Manager on first build.
git clone https://github.com/EvgenyKarkan/Feeds4U.git open iFeed/iFeed.xcodeproj
Select the iFeed - DEV scheme and run (⌘R). From the command line:
# Build xcodebuild build -project iFeed/iFeed.xcodeproj -scheme "iFeed - DEV" \ -destination 'platform=iOS Simulator,name=iPhone 16' # Tests — pick a plan: Unit (default), UITests, or Stress xcodebuild test -project iFeed/iFeed.xcodeproj -scheme "iFeed - DEV" -testPlan Unit \ -destination 'platform=iOS Simulator,name=iPhone 16'
Contributions
Please ensure that all pull requests are directed to the develop branch.
Important Note
You are free to use the code as you see fit, but please refrain from using any app icons or image assets, as their usage is strictly prohibited. Thank you.
Copyright
The source code is licensed under the MIT license. However, exclusive rights to distribute the Feeds4U application through the Apple App Store are reserved only for me. Copyright (c) 2015-2026 Evgeny Karkan. All rights reserved.
more like this
veille-techno
Skill Claude Code de veille tech francophone. Agrège les flux RSS (Journal du Hacker, Human Coders News…) et produit un…