Zig Native Transpiler & Compiler
Fast, lightweight TypeScript toolchain
A transpiler + bundler written in Zig. JavaScript · TypeScript · JSX · Flow at native speed, with a Vite/Rollup-compatible plugin system.
import { init, transpile } from '@zntc/core';
init();
const { code } = transpile(source, {
filename: 'input.tsx',
jsx: 'automatic',
target: 'es2022',
}); Transpile
1K LOC · TypeScript
Bundle
10 modules
faster
vs rolldown (small)
Doc pages
ko · en
As of 2026-05-06 · darwin arm64 · 5-run median
Bundle performance
vs Bun 6.68 · esbuild 8.84 · rolldown 50.5 · rspack 58.8 ms
vs Bun 20.2 · esbuild 23.9 · rolldown 67.8 · rspack 84.2 ms
vs Bun 67.6 · esbuild 86.1 · rolldown 145 · rspack 211 ms
2026-05-11 · darwin arm64 · 5-run median · fan-out tree fixture (see full benchmarks →)
Why ZNTC
A JS/TS toolchain that combines the strengths of existing tools.
Type stripping
Strip TypeScript annotations, interfaces, enums, and decorators at native speed. Flow has an independent pipeline.
Production bundler
Tree-shaking · code splitting · preserve-modules · sourcemaps. ESM · CommonJS · IIFE output. On-par with rolldown/esbuild.
React Native ready
Metro-compatible bundling · InitializeCore · Hermes bytecode · Flow stripping. Babel migration guide included.
Pluggable
Rollup/Vite-compatible plugin API. Extensible in JS/TS, with Vite · Rollup · AST plugin adapters.
Usage
From a single CLI invocation to Vite integration — pick the style that fits your project.
# installnpm install -g @zntc/core
# bundlezntc build src/index.ts --bundle --outdir dist
# watch modezntc build src/index.ts --bundle --watchimport { build } from "@zntc/core";
const result = await build({ entryPoints: ["src/index.ts"], bundle: true, outdir: "dist", target: "es2020", platform: "browser",});
console.log(`${result.outputFiles.length} files emitted`);import { defineConfig } from "vite";import zntc from "@zntc/vite-plugin";
export default defineConfig({ plugins: [ zntc({ jsx: "automatic", target: "es2022", }), ],});export default { module: { rules: [ { test: /\.(?:tsx?|jsx?)$/, exclude: /node_modules/, loader: "@zntc/rspack-loader", options: { transpileOptions: { target: "es2020", jsx: "automatic" }, }, }, ], },};Start building today
First bundle in 5 minutes. Or try it right in the browser via Playground.