The react config with the REACT COMPILER in the transform, exactly as next build runs it
(reactCompiler: true in the app's next config). Without it, a component can pass every test
while broken in production: the compiler caches expressions against their inputs, so a
non-reactive read like an imperative form.watch(name) — stable inputs, changing answer — is
computed once and never again. The template editor's type toggle shipped exactly that bug under
a green suite.
Self-contained rather than importing ./react: vitest's config bundler does not follow a
second hop of workspace-source imports, and the raw .ts then hits node unloadable.
The react config with the REACT COMPILER in the transform, exactly as
next buildruns it (reactCompiler: truein the app's next config). Without it, a component can pass every test while broken in production: the compiler caches expressions against their inputs, so a non-reactive read like an imperativeform.watch(name)— stable inputs, changing answer — is computed once and never again. The template editor's type toggle shipped exactly that bug under a green suite.Self-contained rather than importing
./react: vitest's config bundler does not follow a second hop of workspace-source imports, and the raw.tsthen hits node unloadable.