Back to Explore

shikijs/shiki

GitHub
7 updates · last 90 days1 watchersOpen source

Last release:

Shiki is a syntax highlighter for code, described as “beautiful yet powerful” and based on TextMate grammar. It is useful if you want accurate, high-quality syntax highlighting for Markdown or other text that follows supported grammar rules.

Project status

  • Actively maintained, with very recent updates (latest on 2026-08-10) and continued work through Aug 2026, plus multiple follow-on updates in late Jul and early Aug 2026.
  • Update cadence looks steady, roughly weekly across the 2026-07-31 to 2026-08-10 window (v4.4.1, v4.4.2, v4.4.3), suggesting an ongoing development cycle rather than maintenance mode.

AI summary generated

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v4.4.3

    v4.4.3 primarily addresses a ui behavior change in the VitePress Twoslash integration, delaying the twoslash tooltip appearance by 200ms. The release notes also mention dependency and grammar updates. The code diff reveals additional repository and tooling changes (build system, CSS tooling config, and workspace package renames) that are not called out in the release notes.

  • v4.4.2

    v4.4.2 includes a bug fix to keep CI working after a Vite 8 related dependency/tooling bump, plus a core performance improvement around token splitting. The code diff also shows several build tooling and bundling related adjustments that are not explicitly called out in the release notes.

  • v4.4.1

    Release v4.4.1 contains no explicitly described product changes beyond a general statement to update dependencies. The diff shows internal package version bumps plus lockfile-level dependency updates, including at least two major version upgrades.

    Breaking
  • v4.4.0

    Shiki v4.4.0 adds grammar/theme updates and improves language detection by inferring YAML from Markdown frontmatter. The code diff also includes substantial bundled grammar metadata changes (new languages, new aliases, and some alias remapping) plus various tooling and dependency updates.

    Features
  • v4.3.1

    v4.3.1 adds a new token `type` value to Shiki token objects. It also extends the `includeExplanation` option to support a new mode that can populate this token type during tokenization.

    Features
  • v4.3.0

    v4.3.0 primarily introduces Svelte renderer support for @shikijs/stream by adding a new ShikiStreamRenderer.svelte component. The stream package is extended with a new './svelte' entrypoint, along with build and test wiring so the renderer can be bundled and validated.

    Features
  • v4.2.0

    v4.2.0 introduces two new packages, @shikijs/stream and @shikijs/magic-move, along with documentation for both. The release notes also mention bug fixes related to transformer YAML comment handling and a mobile scrolling behavior fix in vitepress-twoslash.

    Features
  • v4.1.0

    v4.1.0 is described as a small bug fix related to the twoslash integration, specifically forwarding `tsModule` to `createTwoslasher`. The provided code diff, however, shows a much larger set of internal refactors across multiple packages (core, primitive, colorized-brackets, rechype, monaco, cli, and CI), with behavior-preserving changes in many places.

  • v4.0.2

    v4.0.2 is a small release focused on fixing ANSI highlighting when multiple themes are provided. The code changes refactor how tokenization is executed across themes (by threading the base tokenization function), and update tests/snapshots to cover the multi-theme ANSI case. It also includes a minor change to the bundled language display name for nextflow-groovy.

  • v4.0.1

    Release v4.0.1 is labeled as a bug fix focused on fixing TypeScript declaration (dts) bundling. The actual diff also includes a theme metadata change for the bundled horizon-bright theme and several build/tooling dependency bumps.

  • v4.0.0

    v4.0.0 drops Node v18 support and introduces new packages (a leaner @shikijs/primitive and @shikijs/markdown-exit). The code diff shows a major internal refactor where @shikijs/shiki core largely delegates low-level highlighting and tokenization to @shikijs/primitive, with several exports and function signatures changed accordingly.

    BreakingFeatures
  • v3.23.0

    v3.23.0 adds CLI enhancements (stdin support and new listing commands) and expands transformer capabilities to support rendering leading whitespace and the `[!code info]` notation. The diff also shows improvements around case normalization for CLI language/extension detection and updates to the bundled languages/themes catalogs.

    Features
  • v3.22.0

    v3.22.0 updates Shiki grammar and theme bundles. The code diff shows it also expands the set of built-in bundled languages (including new language IDs and aliases) and adds additional built-in themes, along with internal test snapshot updates and dependency/tooling bumps.

    BreakingFeatures
  • v3.21.0

    Shiki v3.21.0 introduces changes around grammar handling and improves `codeToHast` so HAST data and properties are preserved in the generated output. It also includes a VitePress Twoslash fix for scroll blocking on mobile viewports.

    Features
  • v3.20.0

    v3.20.0 adds an `@shikijs/cli` `--format` option to output HTML (defaulting to ANSI). It also improves robustness in `rehype` lazy language loading, and fixes a `vitepress-twoslash` popper recomputation timing issue, while shaving redundant work in the core tokenization pipeline.

    Features
  • v3.19.0

    Shiki v3.19.0 adds `rootStyle: false` support for disabling root `<pre>` styling, introduces new `classActiveCode` options for notation transformers, and ships a new `transformerRemoveComments`. It also extends Twoslash's transformer filtering with an extra `context` argument and includes several targeted bug fixes across core, registry dependency checks, and Monaco color mapping.

    Features
  • v3.18.0

    Shiki v3.18.0 adds a new `zeroIndexed` option to the `transformerMetaHighlight` transformer, and fixes token merging offset handling in `mergeWhitespaceTokens`. It also improves `langAlias` behavior so aliases can resolve to special languages (for example, aliases mapping to `ansi`).

    Features