Skip to content

v0.5 — Internal beta (correct convergence)

Target audience: Kora team and design partners validating multi-device convergence before public beta (v0.6).

Scope (best-in-class plan): Phase 0 (production-path matrix, observability) + Phase 1 (unified ApplyPipeline). The codebase also ships Phase 2–6 capabilities from the same program; treat them as preview APIs until v0.6 hardening sign-off.


Exit criteria

All commands must pass on Node 20+ after pnpm install and pnpm build:

CheckCommand
Lintpnpm lint
Typecheckpnpm typecheck
Unit + integration testspnpm test
Production-path convergencepnpm test:production-path
Sync reconnect (op log + queue)pnpm test:sync-reconnect
Real-path chaospnpm test:chaos:real-path
Performance gatespnpm benchmark:gates
Release gate (bundle)pnpm test:release-gate
E2E (browser, optional pre-tag)pnpm test:e2e

Production-path coverage

  • Causal deps on sequential inserts
  • Remote cascade delete on peer
  • Offline → sync → peer convergence
  • Delete vs update merge (newer update wins)
  • Remote cascade delete (multi-device)
  • Op-log compaction + reconnect convergence
  • createApp + merge-aware store + outbound queue

See the internal best-in-class implementation plan (92/92 complete; archived privately). Next milestone: v0.6 public beta.


What to try

bash
npx create-kora-app my-app --yes --sync
cd my-app
pnpm dev
  1. Create todos offline, refresh, confirm data persists (SQLite WASM + OPFS).
  2. Open two tabs — leader election should share one database (see multi-tab E2E).
  3. Run sync against local server from template; confirm both tabs converge.
  4. Trigger a merge conflict (edit same field on two devices) — DevTools Conflict Inspector + useSyncStatus().conflicts.

Known limitations (v0.5)

  • SharedWorker storage (3.1.5): Opt-in — set store.sharedWorkerUrl to the bundled @korajs/store/sqlite-wasm/shared-host script plus workerUrl. Default remains navigator.locks leader + BroadcastChannel.
  • React tests from monorepo root: Run pnpm --filter @korajs/react test if root pnpm test reports jsdom env issues.
  • Initial sync 5s target: Enforced for real Store paths in docs; CI sync gate uses mock stores with a relaxed ceiling (benchmarks/baseline.md).

Upgrade notes

  • Remote applies route through ApplyPipeline / MergeAwareSyncStore — zombie rows from delete-vs-update should be resolved.
  • app.sync.status and subscribeStatus are event-driven; pendingOperations counts from op log when StoreSyncStatePersistence is wired.
  • sync:apply-failed events surface per-op failures (including clock drift).
  • kora doctor validates schema, worker asset, and optional sync HTTP probe.

Document history

DateNote
2026-05-29Initial v0.5 internal beta checklist