Sync

Sync

Sync is the part of Enve that has the most prior-art baggage. Short version: there are three layers, none of them silently overwrites the others, and there's a single screen where you can see what's happening.

Three layers of sync

  1. iCloud (Apple only). Progress, bookmarks, and annotations across your Apple devices.
  2. Server sync. Audiobookshelf, Plex, Grimmory, Storyteller, Komga, Kavita, and their native progress APIs.
  3. External sinks. KOReader and KOSync (including via the Grimmory bridge), plus Hardcover.

Each layer is independently configurable. You can run all three, just one, or none.

iCloud (CloudKit)

On iOS, Enve uses CloudKit to sync between every device on your Apple ID:

Nothing leaves your iCloud. No Enve server touches this data.

Server-native sync

If your backend has its own progress API, Enve uses it:

You can prefer the server as the source of truth, or prefer iCloud. It's configurable per source.

KOReader and KOSync

Two integration paths:

Either way, when you finish chapter 12 on your Kobo, your iPhone audiobook picks up at the right spot.

Hardcover

Hardcover is a reading-tracking service. Enve integrates it for metadata enrichment, reading goals, and progress sync. Useful if you keep your bookshelf there. (iOS Book Player.)

Conflict resolution

When two layers disagree (say, the server says 30% and iCloud says 45%), Enve doesn't pick silently. It surfaces a conflict in the player and on the book detail page, and you choose which one wins for that book.

Why it works this way

Other apps have lost listener data by guessing at conflict resolution. Enve treats your progress as something you own. If it can't be 100% sure, it asks. The cost is one tap. The upside is no silent data loss.

Sync Center

Settings → Sync Center is the single place to see what's syncing where: which sources are enabled, last-sync timestamps, queued pending writes, and any unresolved conflicts. Useful when you suspect something is stuck.