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:
| Check | Command |
|---|---|
| Lint | pnpm lint |
| Typecheck | pnpm typecheck |
| Unit + integration tests | pnpm test |
| Production-path convergence | pnpm test:production-path |
| Sync reconnect (op log + queue) | pnpm test:sync-reconnect |
| Real-path chaos | pnpm test:chaos:real-path |
| Performance gates | pnpm 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- Create todos offline, refresh, confirm data persists (SQLite WASM + OPFS).
- Open two tabs — leader election should share one database (see multi-tab E2E).
- Run sync against local server from template; confirm both tabs converge.
- 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.sharedWorkerUrlto the bundled@korajs/store/sqlite-wasm/shared-hostscript plusworkerUrl. Default remainsnavigator.locksleader +BroadcastChannel. - React tests from monorepo root: Run
pnpm --filter @korajs/react testif rootpnpm testreports 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.statusandsubscribeStatusare event-driven;pendingOperationscounts from op log whenStoreSyncStatePersistenceis wired.sync:apply-failedevents surface per-op failures (including clock drift).kora doctorvalidates schema, worker asset, and optional sync HTTP probe.
Document history
| Date | Note |
|---|---|
| 2026-05-29 | Initial v0.5 internal beta checklist |

