npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@chakra-docs/shiki

v0.2.0

Published

Optional Shiki syntax highlighting adapter for Chakra Docs.

Readme

@chakra-docs/shiki

Optional, first-party Shiki syntax highlighting for Chakra Docs. No React, Chakra UI, or Postkit dependency. The adapter contract also works with Chakra UI's CodeBlock provider and Postkit's codeBlockAdapter prop.

npm install @chakra-docs/shiki

Create one adapter at module scope and use your existing Chakra provider:

import { DocsProvider, MarkdownContent } from '@chakra-docs/chakra';
import { createChakraDocsShikiAdapter } from '@chakra-docs/shiki';

const adapter = createChakraDocsShikiAdapter();

export function Article({ markdown }: { markdown: string }) {
  return (
    <DocsProvider config={{ codeBlock: { adapter } }}>
      <MarkdownContent source={markdown} />
    </DocsProvider>
  );
}

The adapter initializes lazily and shares its highlighter across consumers. Before it is ready, code renders as plain text. It applies to both CodeBlock and fenced or indented code in MarkdownContent.

Options

const adapter = createChakraDocsShikiAdapter({
  languages: ['typescript', 'tsx', 'bash', 'json'],
  themes: { light: 'github-light', dark: 'github-dark' },
  onError: (error) => console.error('Code highlighting failed', error),
});

chakraDocsShikiLanguages exports the default grammars: Astro, Bash, CSS, HTML, JavaScript, JSON, Markdown, MDX, TSX, TypeScript, and YAML. Loaded Shiki language aliases work too. An unknown, omitted, or unloaded language uses escaped plain-text lines, preserving line metadata. Set languages: [] to use only plain text. Load errors fall back to unhighlighted source and allow a later initialization attempt to retry.

chakraDocsShikiThemes exports the default GitHub light/dark pair. Each highlight call reads meta.colorScheme: light selects the light theme; dark, omitted, or custom schemes use the dark theme. Only token markup is emitted—backgrounds, padding, borders, line numbers, wrapping, highlighted lines, and diff/focus treatments remain owned by the chakraDocsCodeBlock recipe and code-block props. No Shiki stylesheet is required.

Preloading and lifecycle

For synchronous server rendering, call await adapter.loadContext() before rendering. loadContextSync() then supplies the initialized highlighter. For hydrated applications, preload on both server and client before their initial renders, or use the default lazy mode on both sides to avoid hydration mismatches.

Call adapter.dispose() when the owning application or build job is finished with it, after all consumers have unmounted. Individual provider unmounts deliberately do not dispose the shared context, including React Strict Mode effect replays. Disposing during initialization releases the pending highlighter rather than reviving it; a later loadContext() creates a new one.

Postkit remains optional

Chakra Docs does not require Postkit for code highlighting. Existing applications can continue passing createPostkitShikiAdapter() from @postkit/shiki to DocsProvider. Alternatively, pass one createChakraDocsShikiAdapter() instance to both DocsProvider.config.codeBlock.adapter and PostkitProvider.codeBlockAdapter.