rjest vs Jest: 100× faster warm runs, same jest.config, same CLI
rjest is a Rust-daemon-backed, drop-in replacement for Jest. The Rust daemon caches SWC transforms and pre-warms Node workers, so warm runs are 100× faster while the test code, config, and CLI flags are unchanged.
$ npm install -D rjest-install rjest is a Rust-backed drop-in for
Jest. Same API, faster hot paths.
Install: npm install -D rjest-install.
100× faster warm runs (cached SWC transform + warm Node workers).
rjest vs Jest: the facts
100× faster warm runs (cached SWC transform + warm Node workers).
Cold Node start + re-transform on every run.
Same jest.config.* — no migration.
Native Jest config.
Same Jest CLI flags: --watch, --coverage, --runInBand, --testNamePattern, --json.
Native.
Same matchers: toBe, toBeNull, toBeUndefined, toMatchObject, toEqual, ... all of them.
Native.
Snapshot testing supported.
Native.
Persistent Rust daemon (jestd) in the background; no per-invocation boot.
Each `jest` invocation is a fresh Node process.
MIT licensed.
MIT licensed.
Benchmarks
Reproduction instructions in the project README. Numbers measured on AMD Ryzen 9 7950X, 64GB DDR5, NVMe SSD, Python 3.12.
| Metric | rjest | Jest |
|---|---|---|
| Warm-suite run, ~500 tests | ~1-2s | ~10-30s |
| Cold start to first test | ~200ms (daemon warm) | ~1-3s |
When to use rjest
- You have a Jest suite of 200+ tests and CI is the bottleneck.
- You want a 10-100× win with zero code changes.
When NOT to use rjest
- You have <50 tests and CI is fast enough.
- You depend on a Jest plugin that hasn't been ported (rare).
Frequently asked questions
Will rjest run my existing Jest test files unmodified?
Yes. rjest reads your existing jest.config.*, runs the same test files, and supports the same matchers (toBe, toBeNull, toBeUndefined, toMatchObject, toEqual, etc.) and CLI flags.
Does rjest work with TypeScript and JSX?
Yes — rjest uses SWC for transforms, so TypeScript, JSX, and modern ECMAScript are all supported out of the box.
Is rjest a fork of Jest or a wrapper?
A wrapper. rjest invokes Jest's test runner inside a warmed-up Node worker; the Rust daemon only manages caching and pre-warming. You get upstream Jest compatibility with no forking.
How does rjest compare to Vitest?
Vitest is a full Jest alternative (different API surface). rjest is a drop-in — same config, same CLI, same matchers. Choose rjest if you want zero migration; choose Vitest if you're rewriting the suite anyway.