Skip to content
Postkit

Postkit 0.3.0. Bring your own design system.

Postkit renders headless by default, with Chakra as its own package, and every component can be restyled, overridden or ejected without forking.

Released
Not yet releasedIn development
Packages
  • @postkit/core
  • @postkit/react
  • @postkit/chakra
  • @postkit/cli
  • @postkit/email
Topics
  • components
  • theming
  • customization
  • email

This release separates what a component is from how it looks. Definitions live in @postkit/core, @postkit/react renders them as headless views, and today's Chakra components move to @postkit/chakra. Your posts don't change.

Added

  • createPostkit and kits: enable only the components you use, and ship only those.
  • Defaults, slot parts and views: change what authors get with defaults in createPostkit, swap one part, or replace the render, all without ejecting.
  • postkit eject and postkit diff, from the new @postkit/cli: own a component's source and still see what changed upstream.
  • Footnotes and sidenotes, carried through every renderer including email.
  • An optional styles.css baseline for the headless views, driven by --postkit-* tokens.
  • renderEmail() in @postkit/email, which turns a Markdown, MDX or @postkit/core document into email HTML and plain text.
  • Device, a screenshot in a plain iPhone, iPad or Mac frame drawn with CSS (kind, src, alt, caption). It's experimental.
  • Carousel presentation="peek": the current item centred with its neighbours faded either side, arrows only, and its caption announced to screen readers. Like every carousel, it never advances on its own.
  • Gallery presentation="row": two or three related pictures side by side, which become a swipeable rail on phones.
  • Video captions (a WebVTT track), captionsLang, duration and decorative.
  • Figure numbering: <PostkitProvider figures="numbered"> labels figures, videos and devices "Fig. 1", "Fig. 2"…, and the items of a carousel or gallery "Fig. 3", "Fig. 3b", "Fig. 3c".

Changed

  • @postkit/react renders headless views for every static component. Interactive components whose behaviour isn't shared yet stay Chakra-only until 0.3.x, and the component manifest marks them.
  • Chakra recipes follow the host's colour mode, with dark values for every colour in postkitDefaultTheme.
  • Every component now defaults to the subtle variant (D12). Pass variant="outline", or set defaults in createPostkit, to keep the 0.2 look.
  • Email support is computed from what the email renderer exports, and every component declares an email fallback.
  • Callout accepts type as an alias for tone, in directives and in MDX. tone stays the documented prop, and wins if both are set.
  • A Video without a captions track now gets a warning, in development and in your build output, unless you mark it decorative. It never fails the build, even in strict mode, so this isn't a breaking change.
  • Poll, Chart and SocialPost are marked experimental in the component manifest until they've been reviewed.

Removed

  • The unused async, colors, strings and utils packages.

Migrating from 0.2

If you render with Chakra, change one import. Component names and props are unchanged.

ts
// 0.2
import { Callout, PostkitProvider } from '@postkit/react';

// 0.3
import { Callout, PostkitProvider } from '@postkit/chakra';

Want only the components you use? Move to createPostkit when you're ready. The old exports keep working through 0.x.

View on GitHub
Postkit

Richer posts, written once, right everywhere.

© 2026 Postkit. MIT licensed.
LicensingPrivacy