SayKit
Getting Started

Installation

Install SayKit and its supporting packages

SayKit is split into a small core runtime and a set of optional packages for configuration, formatters, transformers, and framework integrations. Pick the pieces you need.

What to install

Every SayKit project needs the same set of pieces:

PackageWhy
saykitThe core runtime, the Say class and ICU formatting
@saykit/configThe config schema (defineConfig) and the saykit CLI
One formatterReads and writes your translation files (e.g. @saykit/format-po)
One or more transformersExtracts and rewrites macros from your source files
One build-tool pluginWires the transformer into your bundler

The build-tool plugin and the transformers do different jobs: the transformer knows how to parse and rewrite .ts/.tsx source, the plugin knows how to hook your bundler. You usually install both.

Quick install

For a React + Vite project, including TanStack Start (or any other unplugin-compatible bundler):

pnpm add saykit @saykit/react pnpm add -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx unplugin-saykit
npm install saykit @saykit/react npm install -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx unplugin-saykit
yarn add saykit @saykit/react yarn add -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx unplugin-saykit
bun add saykit @saykit/react bun add -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx unplugin-saykit

For a Next.js, React Native, Expo, or other Babel-driven project:

pnpm add saykit @saykit/react pnpm add -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx babel-plugin-saykit
npm install saykit @saykit/react npm install -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx babel-plugin-saykit
yarn add saykit @saykit/react yarn add -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx babel-plugin-saykit
bun add saykit @saykit/react bun add -D @saykit/config @saykit/format-po
@saykit/transform-js @saykit/transform-jsx babel-plugin-saykit

For a Carbon Discord bot (with tsdown + Cloudflare Workers):

pnpm add saykit @saykit/carbon pnpm add -D @saykit/config @saykit/format-po
@saykit/transform-js unplugin-saykit
npm install saykit @saykit/carbon npm install -D @saykit/config @saykit/format-po
@saykit/transform-js unplugin-saykit
yarn add saykit @saykit/carbon yarn add -D @saykit/config @saykit/format-po
@saykit/transform-js unplugin-saykit
bun add saykit @saykit/carbon bun add -D @saykit/config @saykit/format-po
@saykit/transform-js unplugin-saykit

Package directory

Peer dependencies

A few packages have peer requirements worth knowing about:

  • @saykit/react peers react and saykit. The package uses the react-server export condition for server rendering, so React 18+ is required and React 19+ is recommended.
  • @saykit/carbon peers @buape/carbon and saykit.
  • babel-plugin-saykit expects @babel/core (you almost certainly already have it).

Next: quickstart

If this is your first SayKit project, the quickstart walks through the whole loop (config, source, extraction, and runtime) in a few minutes.

On this page