Browser engines
These are the oldest versions in which every required API below works, according to MDN browser compatibility data 8.1.5:
Inkkit uses the Custom Highlight API only when the engine supports both
CSS.highlights and ::highlight() styling. Firefox has the first from 140 and the second from 149.
What is tested
Changes to editor code, dependencies and workflows run the browser test suite in Playwright’s Chromium on Linux and Playwright’s WebKit on macOS, and opens pages built from the packed package in both. Documentation-only changes use formatting and site checks instead. These are the current Playwright builds, not the oldest supported versions. Firefox isn’t tested. Playwright’s WebKit is notWKWebView, so test your app’s own web view on the systems you support.
Page requirements
Declare UTF-8 in the page that loads Inkkit, for example with<meta charset="utf-8">. Without it, WebKit can read a single-file page as Latin-1 and the script doesn’t load; see Embed in a web view.
Package format
- ES modules only. The package is
"type": "module"and its exports have onlyimportconditions, sorequire()can’t load it. Import it through a bundler; the build targets ES2022. - Three specifiers. Import only
@aicayzer/inkkit,@aicayzer/inkkit/coreand@aicayzer/inkkit/style.css. Other paths in the package aren’t exported. TypeScript declarations are included. - Dependencies are bundled. The package contains Milkdown, ProseMirror and every other runtime dependency except Mermaid, so your app runs the tree that Inkkit tested. A fix in a bundled package reaches you only through an Inkkit release, and your own dependency audit doesn’t see bundled packages.
- Mermaid is the one dependency, pinned to an exact version. Your package manager installs it whichever entry you import.
- Node.js 22.14 or later is declared in
engines, which applies to the tools that install and build the package. The editor itself runs in the page.
Entries with and without Mermaid
Both entries use
@aicayzer/inkkit/style.css. Import from one entry throughout your app: if any module imports @aicayzer/inkkit, your bundle includes Mermaid. Setting rendering.diagramPreview to false turns previews off but doesn’t remove Mermaid from the page. For what the core entry does with diagrams in copies and print, see Markdown support.
Page size
Measured on October 25, 2026, with the package built frommain after version 0.1.6: a minimal page built with Vite and vite-plugin-singlefile, with every script and style inlined.
Mermaid makes up about 83% of the main-entry page, and a single-file build runs its module code at start-up even before a diagram renders. Measure your own page.
License notices
The package carries three notice files:LICENSE: Inkkit’s MIT license.NOTICE: the notice for the table styles that Inkkit adapts from prosemirror-tables, and a pointer to the file below.dist/THIRD-PARTY-NOTICES.txt: the name, version, license and license text of every package bundled into either entry. The package build generates it from the bundled modules.
dist/THIRD-PARTY-NOTICES.txt, so ship that file, LICENSE and NOTICE with your app. Mermaid and its dependencies aren’t in that file: if you import the main entry, collect their notices from your own build (#188).
Versioning
Inkkit is before version 1.0. Pin an exact version, for example withnpm install --save-exact, and read the release notes on GitHub before you upgrade. They describe public API changes and any migration your app needs.
