Show HN: Moji – A read-it-later app with self-organizing smart collections
by desmonding | 2026-03-06 01:18:48+00:00
I built Moji because I was drowning in saved articles. Every read-it-later app I tried became a graveyard of unread links — no structure, no way to surface the right article at the right time. Moji is a native iOS read-it-later app that saves articles for offline reading and organizes them automatically using smart collections. The name "Moji" comes from 墨迹 (mòjì) in Chinese — it literally means "ink traces," but colloquially it means being slow or dawdling. Felt fitting for an app that lets you save things to read later — no rush.

Smart Collections — the core idea

Instead of manually tagging or filing articles, you define criteria and Moji continuously filters your library for you. Criteria combine with AND logic between types and OR logic within a type, so you can build surprisingly precise filters:

- Domain: arxiv.org, paperswithcode.com + Saved: This Week → Fresh ML papers

- Keywords: "SwiftUI", "Combine" + Unread → Your iOS learning queue

- Reading Time: > 15 min + Unread → Weekend deep dives

- Domain: news.ycombinator.com + Saved: Last 7 days → This week's HN saves

- Language: zh + Reading Time: < 5 min → Quick Chinese reads for your commute

Four system collections come built in — Unread, Quick Reads (<5 min), Deep Dive (>10 min), and This Week — so it's useful out of the box. Pin your favorites to the filter bar for one-tap access.

Other features

- Native SwiftUI reader — Articles render as native SwiftUI views, not a WebView. This means real offline reading, smooth scrolling, and proper typography controls (font size, serif/sans-serif, line spacing).

- On-device AI summaries — One-sentence TL;DRs powered by Apple Intelligence. Runs entirely on-device, no cloud calls. Supports 10+ languages.

- Full-text search — Search across titles and content with context snippets that jump you straight to the match in the article.

- Reading position memory — Remembers exactly where you left off, down to the block and scroll offset.

- Image viewer — Pinch-to-zoom, double-tap, pan, alt-text display.

- PDF export — Save any article as a styled PDF.

- Share extension — Save from Safari in two taps.

- Language-aware reading time — Calculates differently for CJK (260 WPM) vs. English (200 WPM) vs. Arabic/Hebrew (150 WPM).

- iCloud sync — Optional CloudKit sync across devices.

- Privacy-first — All processing happens on-device. No analytics, no tracking.

Technical details for the curious

Built with Swift 6.2, SwiftData, structured concurrency, and Mozilla's Readability.js for content extraction. The HTML parser converts articles into typed ContentBlock values that SwiftUI renders natively. A three-phase background pipeline handles extraction, quality re-extraction, and summary generation.

Pricing

Start with a 2-week free trial — all features unlocked, no restrictions. After that, a one-time Pro purchase ($9.99 in US, price may vary in other countries) is required to save new articles. No subscription. You never lose access to your existing library, reading features, or smart collections — the gate is only on adding new articles.

I'd love feedback — especially on the smart collection criteria. What filters would make this more useful for your workflow?

---

App Store Link: https://apps.apple.com/us/app/moji-reader/id6758530352