Skip to main content
Inkkit runs in WebKit and Chromium from the versions below, ships as ES modules only, and has two entries: one that renders Mermaid diagrams and one that leaves Mermaid out of your page.

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 not WKWebView, 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 only import conditions, so require() can’t load it. Import it through a bundler; the build targets ES2022.
  • Three specifiers. Import only @aicayzer/inkkit, @aicayzer/inkkit/core and @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 from main 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.
A page that bundles Inkkit contains the packages in 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 with npm install --save-exact, and read the release notes on GitHub before you upgrade. They describe public API changes and any migration your app needs.