Persistent Rust daemon
jestd parses your config, holds the dependency graph, and keeps the worker pool alive between invocations. The startup tax is paid once per session, not per run.
Features
rjest is a small idea executed carefully: move Jest's fixed startup cost into a background daemon, cache the expensive parts on disk, and keep the CLI you already type. Here is the full surface.
Speed
jestd parses your config, holds the dependency graph, and keeps the worker pool alive between invocations. The startup tax is paid once per session, not per run.
TypeScript and JSX are compiled in Rust by SWC — no Babel, no ts-jest, no plugin chain to reload on every run.
Transformed modules are cached in sled, keyed by blake3 content hash. The cache survives daemon restarts, so a cold restart still reuses prior work.
V8 cold-start is paid once per worker. Tests schedule onto already-JITed processes running in isolated VM contexts.
Compatibility
jest.config.js, .ts, .mjs, or the package.json Jest block. No new format, no schema migration.
--watch, --coverage, --runInBand, --testNamePattern, --json — the flags your CI script already passes keep working.
toBe / toEqual, jest.fn(), jest.mock(), fake timers, and toMatchSnapshot() are honored as compatibility contracts.
--coverage produces Istanbul reports in the formats your dashboards already ingest.
Tooling & agents
Structured results with file paths, test names, durations, and error details — no ANSI scraping for CI parsers or agents.
rjest --daemon-status, --daemon-stop, --daemon-restart. Caches persist on disk through restarts, so you can always audit state.
The daemon FS watcher keeps the dependency graph current, so a save re-runs exactly the affected tests.
macOS (Intel + Apple Silicon), Linux (x86_64 + aarch64), and Windows (x86_64). Node.js 16 or newer.
Read the architecture, browse the guides, or jump to use cases to see where rjest fits.