Browser Support
TKO targets modern browsers — any browser that supports ES2020 and <script type="module">.
Supported engines
Section titled “Supported engines”| Engine | Browsers | Tested in CI |
|---|---|---|
| Chromium | Chrome, Edge, Opera, Brave, Arc | Yes |
| WebKit | Safari (macOS, iOS) | Yes |
| Gecko | Firefox | Yes |
These three engines cover effectively all modern browsers.
What we test
Section titled “What we test”Every pull request runs the full test suite (2700+ tests) across all three engines using Vitest browser mode with Playwright. The three engines run as parallel CI jobs.
CI tests against the latest stable version of each engine. We do not currently test against specific older browser versions, so minimum version support is not precisely known. If you discover a compatibility issue with a particular browser version, please open an issue.
The original Knockout supported browsers back to IE6. TKO’s modernized codebase uses ES2020+ features (optional chaining, nullish coalescing, etc.), so IE is no longer supported. Exact minimum versions for Chrome, Safari, and Firefox have not been established.
Loading TKO
Section titled “Loading TKO”The recommended way to load TKO is as an ES module:
<script type="module"> import ko from 'https://esm.run/@tko/build.reference'</script>An IIFE build is also available for classic <script> tag loading:
<script src="https://cdn.jsdelivr.net/npm/@tko/build.reference/dist/browser.min.js"></script><script> const ko = globalThis.tko</script>Server-side / Node.js
Section titled “Server-side / Node.js”TKO’s observable and computed primitives have no DOM dependencies and can run in Node.js, Bun, or Deno. Binding and template features require a DOM environment.