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.
- Add feeds by entering their URL directly, or let the app discover available feeds from any website
- Pull down to refresh and get the latest articles
- Unread badges and visual indicators help you see what's new at a glance
- Mark a whole feed as read with a single tap
- Built-in offline article reader with clean typography optimized for readability
- Full dark theme support across the entire app, following your system appearance
- App icon adapts to light, dark, and tinted Home Screen styles
- Open any article in Safari when you need the full website experience
- Create folders to group feeds by topic, project, or however you like
- Drag and drop feeds between folders to reorganize effortlessly
- Collapse and expand folders to keep your list tidy
- Search across all your feeds at once with fuzzy text matching
- Recent searches are saved for quick repeat access via a pull-down menu
- Search results sorted by date so the most relevant content is always on top
- Handles Cloudflare-protected websites with a built-in verification flow
- Deep link support — open feed URLs directly in the app from other apps or Safari
- Works on both iPhone and iPad in any orientation
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.
- Swift 6 with strict concurrency checking — the codebase compiles free of data-race warnings, using
Sendabletypes,@MainActorisolation, and modern primitives such asSynchronization.Mutex - UIKit with the scene-based app lifecycle (
AppDelegate+SceneDelegate), supporting iPhone and iPad in all orientations - Core Data for persistence, with background contexts for heavy work and the view context reserved for UI reads
- WKWebView powering on-site feed discovery and the Cloudflare verification flow
- async/await bridging — callback-based APIs are wrapped into structured concurrency via
withCheckedContinuation - String Catalogs (
.xcstrings) driving localization into 23 languages - Settings bundle integration with the iOS Settings app
- Custom URL scheme for deep linking into the app
- Minimum deployment target: iOS 18.0
- VIPER — each feature module (Feeds, FeedItems, ArticleReader, ExploreFeeds, CloudflareBypass) is split into View, Interactor, Presenter, Wireframe, and Builder layers that communicate exclusively through protocols
- Coordinator pattern — a single Coordinator owns all navigation; wireframes report back via coordinating-delegate protocols
- Dependency Injection container — shared services are wired centrally and exposed through narrow, per-module dependency protocols (Interface Segregation)
- Programmatic UIKit with a small number of XIBs (launch screen, table view cells)
- UITableView drag & drop API powering feed reorganization between folders
- SFSafariViewController for the in-app Safari experience
- Swift Package Manager
- FeedKit — RSS / Atom / JSON Feed parsing
- SimpleSimilarity — fuzzy text matching for search
- KRProgressHUD & KRActivityIndicatorView — progress and activity indicators
- Swift Testing (
@Test,#expect,#require) for the unit test suite, mirroring the source layout - XCUITest UI suite (
iFeedUITests) covering the Feeds module end-to-end — empty state, list rendering, navigation, swipe- and editing-mode deletion, folder collapse/expand, add/explore/search alerts, and search results- Driven by deterministic in-memory seeding: a DEBUG-only launch path (
-uiTesting/-uiScenario) boots the app on an ephemeral Core Data store and an isolatedUserDefaultssuite, so the tests run fully offline, fast, and without touching real user data - Elements are located through shared
AccessibilityIDconstants compiled into both the app and the test target, so identifiers never drift
- Driven by deterministic in-memory seeding: a DEBUG-only launch path (
- Stress / monkey UI tests — seeded random-gesture fuzzing (a SplitMix64
SeededGeneratormakes any failure reproducible) plus targeted churn tests (rapid editing, add-menu, navigation, search, and bulk deletion), asserting the screen never crashes and always recovers under rapid interaction - Xcode Test Plans decouple test selection from the scheme:
- Unit (default) — unit tests only, with code coverage scoped to the app target
- UITests — functional UI tests (stress suite excluded)
- Stress — monkey/stress suite only, with randomized execution order and on-failure retries
- swift-mocking — compile-time generated mocks via the
@Mockedmacro; no hand-written mocks - OHHTTPStubs — network stubbing in tests
- SwiftLint as an Xcode build phase, enforcing a no-force-unwrapping policy and others
- Three build schemes: DEV / ADHOC / RELEASE
Please ensure that all pull requests are directed to the develop branch.
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.
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.