The short version
ContinuousReader and JustReader do not collect, analyze, or sell any
personal data. No analytics, no telemetry, no tracking, no
advertising. Your data stays with you — on your
own devices, in your own iCloud account if you turn on sync, and
briefly in transit between your devices when sync hands a fresh
reading position from one to another. Nothing else, nowhere else.
Data stored on your device
All app data is stored locally on your device:
- Books — converted to HTML and stored in your app’s
Documents directory. You can browse these files in Finder.
- Reading positions, bookmarks, notes — stored in a
local SwiftData database within the app sandbox.
- Reader settings — font, theme, layout preferences,
stored in UserDefaults on each device.
- Translation history — if translation statistics
tracking is enabled, looked-up words are stored locally. You can
disable tracking or clear the history at any time.
Sync (optional, ContinuousReader only)
When you turn on sync, your reading data lives in only three places —
and travels only between them:
- Your own devices, locally — the same content stored
on each device the app is installed on. This is also exactly what
you have when sync is off.
- Your iCloud account, under your Apple ID. Apple
hosts it; the developer has no access. Specifically: book files
(converted HTML, cover images, per-book metadata) go to iCloud
Drive; bookmarks, notes, library metadata, folders, OPDS catalogs,
and a backup of your latest reading position go to iCloud
Key-Value Store; translation records, if you opted into tracking,
go to iCloud Drive.
- In flight, between your devices — when you turn a
page, the new position is relayed to your other devices through an
encrypted realtime channel. The payload contains a hashed book
identifier, a paragraph anchor inside the book, and a progress
percentage — no titles, no content, no names. Messages pass
through and are not retained on the channel. The relay is
operated by Ably; tokens that let your devices connect to it are
minted by a small Cloudflare Worker. Both see only a randomly
generated user identifier we keep in your iCloud Keychain.
You can disable sync at any time; your library continues to work
locally on each device.
Network access
JustReader has essentially no network footprint — only URL import
touches the network. ContinuousReader uses the network for sync
and OPDS browsing when those are enabled. Specifically:
- Sync is enabled (ContinuousReader only) — book files
go through Apple iCloud Drive, bookmarks and metadata through
Apple iCloud Key-Value Store, and live position updates through
an encrypted realtime channel between your devices (see Sync,
above, for what each path carries)
- OPDS catalog browsing (ContinuousReader only) — you
connect to third-party book catalogs you configure yourself
- URL import (both apps) — when you drag a URL into
the import dialog to download a book file
During the act of reading, the only traffic is the position sync
covered above — and that carries only a hashed book ID, a paragraph
anchor, and a progress percentage, never any content. Translation
is on-device through Apple’s Translation framework —
nothing about the book itself ever leaves your device.
Third-party services
The apps do not integrate any third-party analytics, crash reporting,
advertising, or tracking services. The external dependencies are
Apple’s own frameworks (iCloud, Translation), and — only when you
turn on sync — Ably (an encrypted realtime relay for your reading
position) and a Cloudflare Worker (which mints short-lived tokens
that let your devices connect to that relay). Both see only a
random identifier we keep in your iCloud Keychain — never your
name, email, or anything tied to your real identity — and neither
retains the messages flowing through.
Children’s privacy
The apps do not collect personal information from anyone, including
children under 13.
Changes to this policy
If this policy changes, the updated version will be posted here with
a new "Last updated" date. The apps themselves do not collect data, so
changes would only reflect new features (like optional cloud services).
Contact
Questions about privacy:
hello@continuousreader.app