Dropbox 云同步标注为 Alpha,稳定性有限;构建需 JDK 21+ 并按 AGP 版本选择对应 Android Studio;iOS 端为独立 Swift/Xcode 工程,需另行配置
twine
msasikanthGPL-3.0活跃维护用 Kotlin 和 Compose Multiplatform 写的跨平台 RSS 阅读器,手机、桌面都能用,适合想找轻量开源订阅工具的人。
Twine: A multiplatform RSS reader built using Kotlin and Compose
git clone https://github.com/msasikanth/twine.git
./gradlew spotlessApplyREADME 未说明硬件要求,仅说明开发需 JDK 21+
用 Kotlin 和 Compose Multiplatform 写的跨平台 RSS 阅读器,支持 Android 和 iOS
用 Kotlin 和 Compose Multiplatform 写的跨平台 RSS 阅读器,手机、桌面都能用,适合想找轻量开源订阅工具的人。
核心能力
- 支持 RDF、RSS、Atom 和 JSON 四种订阅格式
- 输入任意网站主页即可自动发现订阅源
- 支持 FreshRSS、Miniflux、Dropbox 云同步
- 提供播客音频播放与阅读视图字体配色定制
- 用 OPML 导入导出订阅,支持关键词屏蔽
容易踩的坑
- v3.10.0最新正式版2026-11-08 · 2026-11-08 09:04 UTC
Features
- New Add Feed Flow: Adding a feed is now a two-step sheet. After entering a link, you can rename the feed, pick its icon, set up notifications, choose whether to always fetch the full article, and add it to groups.
- Default Source on Startup: Pick a feed or group to open automatically when the app starts. You can set this in behavior settings, and the picker includes search.
- Feed List Filters: New "Unread only" and "Hide grouped feeds" options in the feeds list help keep long lists tidy.
- OPML Import During Onboarding: Import your existing subscriptions straight from the onboarding screen.
- Classic App Icon: Added a new "Classic" app icon option.
- Tables in Reader: The reader now renders tables, with better column widths.
- Keyboard Navigation: Move through the post list with the keyboard, with shortcuts working anywhere in the window.
Changes
- Per-Feed Icons: Choose between the feed's own icon and the website favicon for each feed. The global favicon setting now only sets the default for new feeds.
- Smoother Home Navigation: Added animated transitions when switching sources, plus a back button to return home from a selected source.
- More Reliable Reader View: Better full article extraction, with timeouts and a plain text fallback when parsing fails. Article content you already have is no longer replaced with shorter content.
- Better Article Formatting: Cleaner rendering of review scorecards and fewer empty headings on sites like The Verge.
- Share Feedback on Desktop: Desktop now shows a message when a link is copied to the clipboard instead of shared.
- Refreshed Text Fields: Text fields and login screens have a new look.
- Performance Improvements: Smoother UI and more efficient layouts.
Fixes
- Fixed opened posts not always being marked as read.
- Fixed back press not clearing the selected source on the home screen.
- Fixed the reader jumping to the wrong post when the post list changed in the background.
- Fixed feeds failing to load when extra elements appeared before the channel tag.
- Fixed feeds served with less common XML content types not being recognized.
- Fixed the navigation drawer opening on swipe in Search, Discover, Bookmarks, and Settings.
- v3.9.02026-09-09 · 2026-09-09 03:40 UTC
查看更新说明
What's Changed
- Update dependency com.materialkolor:material-kolor to v5.0.1 by @renovate[bot] in https://github.com/msasikanth/twine/pull/1930
- Update coil to v3.6.0 by @renovate[bot] in https://github.com/msasikanth/twine/pull/1927
Full Changelog: https://github.com/msasikanth/twine/compare/v3.8.0...v3.9.0
- v3.8.02026-08-30 · 2026-08-30 01:04 UTC
查看更新说明
Features
- Better YouTube Support: Video posts now show proper high resolution thumbnails, open directly in the YouTube app, and get a dedicated action bar in the reader.
- Smarter Feed Links: Pasting a Reddit, Mastodon, or YouTube link when adding a feed now resolves it to the right feed automatically, including YouTube handle links.
Changes
- Themed App Icons: App icons now match the color schemes, and can be picked right from the appearance settings.
- Smoother Visuals: Refined gradients and scrims across the home and reader screens, animated post items in the home feed, and a cleaner background blur transition when swiping through featured posts.
- Performance Improvements: Faster feed parsing with lower memory usage, plus smoother home screen scrolling and image loading.
- Simpler Add Feed: Removed the feed preference toggles from the add feed screen.
- No Shorts: YouTube feeds now come from the channel's uploads playlist, so Shorts stay out of your feed.
Fixes
- Fixed feeds that nested media inside items showing only a single post.
- Fixed missing images in feeds that put the image URL in the element text.
- Fixed full article fetching failing on sites that block browser-like requests.
- Fixed reading history not being recorded when posts were marked as read while scrolling or paging through the reader.
- Fixed missing channel images for some YouTube feeds.
- Added a fallback message when adding a feed fails without a reason.
Full Changelog: https://github.com/msasikanth/twine/compare/v3.7.0...v3.8.0
- v3.7.02026-08-20 · 2026-08-20 02:15 UTC
查看更新说明
Full Changelog: https://github.com/msasikanth/twine/compare/v3.6.0...v3.7.0
- v3.6.02026-08-16 · 2026-08-16 11:49 UTC
查看更新说明
What's Changed
- Update version to 3.5.0 (1734) by @github-actions[bot] in https://github.com/msasikanth/twine/pull/1855
- New Crowdin updates by @msasikanth in https://github.com/msasikanth/twine/pull/1801
- Add URL-based authentication for private feeds with credentials support by @Tha14 in https://github.com/msasikanth/twine/pull/1885
New Contributors
- @Tha14 made their first contribution in https://github.com/msasikanth/twine/pull/1885
Full Changelog: https://github.com/msasikanth/twine/compare/v3.5.0...v3.6.0
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Twine - RSS Reader
Twine is a modern cross-platform RSS reader app built using Kotlin and Compose Multiplatform. It features a nice user experience to browse through your feeds, with dynamic theming, changing app ambient color based on content.
Download
Features ✨
- Supports RDF, RSS, Atom and JSON feeds
- Feed management: Add, edit, delete, pin and group feeds
- Bottom bar in home screen to access pinned feeds and groups
- Smart fetching: Twine looks for feeds when given any website homepage
- Article shortcut to fetch full article in the reader view
- Audio player for podcasts and HTML audio tags
- Reader view customizations (fonts, colors)
- Bookmark posts to read later
- Search posts
- Blocked words: Filter out content based on keywords
- Background sync
- Cloud sync support with FreshRSS(GReader), Miniflux, Dropbox (Alpha ⚠)
- Home screen widgets
- Import and exports your feeds with OPML
- App icon customization
- Light, dark and amoled theme support
Project Structure 🏗️
The project follows a modular Kotlin Multiplatform structure:
androidApp: Android-specific application code and entry point.iosApp: iOS-specific application code (Swift/Xcode project).shared: Contains the core UI logic using Compose Multiplatform, ViewModels (usingkotlin-inject), and shared presentation logic.core/: Modularized business logic.base: Base utilities, common interfaces, and platform abstractions.data: Data layer containing repositories, local database (SQLDelight), and sync logic.model: Domain models used across the project.network: Network layer using Ktor for fetching feeds and parsing.
resources/icons: Shared icon resources.
Tech Stack 📚
- Kotlin Multiplatform
- Compose Multiplatform
- Kotlin Coroutines
- Ktor
- SQLDelight
- Kotlin-inject
- Coil
- Multiplatform Markdown Renderer
- Jetpack Libraries
For full list of dependencies used, please take a look at the catalog file.
Development 🛠️
You can just clone the repo and build it locally without requiring any changes.
Project requires JDK 21+, and based on the AGP version defined in libs.versions.toml file,
you can use appropriate Android Studio to import the project.
Contributing 🛠️
You can contribute bug fixes to the project via PRs, for anything else open an issue to start a conversation.
This project uses ktfmt, provided via the spotless gradle plugin, and the bundled project IntelliJ codestyle. Run
./gradlew spotlessApply to format the code before raising a PR.
Translations
You can help translate project on Crowdin. We use Compose resources for strings, you can read more about it here.
Privacy Policy 🔒
You can read the privacy policy here.
Made with 💖 by
- Sasikanth Miriyampalli / Development
- Eduardo Pratti / Design
