dorkhub

Feeds4U

RSS reader app.

EvgenyKarkan
Swift7022 forksMITupdated 1 month ago
git clone https://github.com/EvgenyKarkan/Feeds4U.gitEvgenyKarkan/Feeds4U

Feeds4U

Swift 6 Platform Apple Intelligence UIKit SPM Unit Tests UI Tests License

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://… or Feeds4U://… 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 UIKitAuto 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 UIDocumentPicker and a custom XMLParser-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, and Mutex-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_size via read-only SQLite pragmas), so it stays correct in WAL mode and shrinks as feeds are deleted, without a VACUUM
  • 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)

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

frirss

A modern, self-hosted, customizable web frontend for FreshRSS.

TypeScript51

veille-techno

Skill Claude Code de veille tech francophone. Agrège les flux RSS (Journal du Hacker, Human Coders News…) et produit un…

Python51

webfeed

Simple web feed reader extension for Chrome/Firefox

JavaScript52

search

search projects, people, and tags