Modern successor to Knockout.js. Reactive data binding and UI templating with zero runtime dependencies.
Knockout applications written over a decade ago are still running in production. TKO gives them a path forward β swap the script tag, verify your tests pass, then optionally adopt modern features like TSX, native providers, and modular packages.
<script type="module">
import ko from 'https://esm.run/@tko/build.reference'
</script>Or as a classic script:
<script src="https://cdn.jsdelivr.net/npm/@tko/build.reference/dist/browser.min.js"></script>Or via a package manager:
npm install @tko/build.reference| Package | Description |
|---|---|
@tko/build.reference |
Recommended. Modern build with TSX, ko-* attributes, native provider, strict equality. |
@tko/build.knockout |
Knockout 3.x compatibility. Migrating from Knockout? Start here. |
| Command | Description |
|---|---|
bun install |
Install dependencies |
bun run build |
Build all packages |
bun run test |
Run tests (Vitest, headless Chromium) |
bun run verify |
Full check: lint + typecheck + build + test |
bun run knip |
Detect unused code and dependencies |
bun run check |
Biome lint + format |
See AGENTS.md for full contributor instructions.
27 modular @tko/* packages, two bundled builds. TypeScript source, esbuild compilation, Bun workspaces.
The core model: observables notify subscribers when they change. Bindings subscribe to observables and update the DOM. No virtual DOM, no diffing β updates are proportional to what changed, not tree size.
See agents/soul.md for the design philosophy.
TKO is moving toward an AI-maintained "dark factory" model β where the tooling, tests, and documentation are robust enough that AI agents can handle routine maintenance autonomously. See plans/dark-factory.md.
MIT β opensource.org/licenses/MIT
Copyright (c) TKO contributors. Based on Knockout.js.