Why I Built Moji
I built Moji because every read-it-later app I'd tried had become a graveyard. You save articles with good intentions, and then a month later you have two hundred links you can't face. There's no structure, no way to surface the right thing at the right moment. The app becomes a place you avoid.
That always felt like a solvable problem. The articles have domains, lengths, languages, keywords, dates. That's enough signal to organize them automatically — you shouldn't have to do it yourself. So I built Moji: a native iOS read-it-later app that saves articles for offline reading and sorts them into smart collections based on criteria you define once.
The name comes from 墨迹 (mòjì) in Chinese. Literally it means "ink traces." Colloquially it means dawdling. Both felt right for an app whose whole premise is "read it later, no rush."
Smart Collections
The core idea is that a collection isn't a folder you drag articles into. It's a filter. You describe what you want ("arxiv papers saved this week", "SwiftUI posts I haven't read yet", "Chinese articles short enough for my commute"), and Moji keeps that view up to date on its own. Criteria combine with AND between types and OR within a type, which turns out to be expressive enough for almost everything I want to see.
The Rest of the App
Most of the other decisions followed from wanting reading itself to feel good. Articles render as native SwiftUI views rather than a WebView, which means real offline reading, proper typography controls, and smooth scrolling that doesn't stutter when you drag. Apple Intelligence generates one-sentence summaries on-device, no cloud round trip, in about a dozen languages. Search hits titles and full content and jumps you to the match. The app remembers exactly where you stopped, down to the scroll offset, so resuming a long article feels like flipping back into a paperback.
A few smaller things: PDFs import as first-class articles with search and smart-collection support. You can export any article back out as a PDF with the typography applied. Reading time estimates use different words-per-minute targets for CJK, Latin, and Arabic/Hebrew scripts, because otherwise the numbers are nonsense. There's a share extension and a Safari extension for saving without leaving what you're reading. iCloud sync is optional. There are no analytics, no tracking, no cloud processing.
None of that is particularly novel in isolation. What I wanted was an app where saving something to read later didn't feel like dropping it into a drawer I'd never open again. Smart collections are the thing that makes that work.