{"_id":"@acusti/vite-plugin-react-compiler","_rev":"6-00a6096ed054c1357bc141959b36af17","name":"@acusti/vite-plugin-react-compiler","dist-tags":{"beta":"0.1.0","latest":"0.5.0"},"versions":{"0.0.0":{"name":"@acusti/vite-plugin-react-compiler","version":"0.0.0","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"author":{"url":"https://www.acusti.ca","name":"andrew patton","email":"andrew@acusti.ca"},"license":"Unlicense","_id":"@acusti/vite-plugin-react-compiler@0.0.0","maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","bugs":{"url":"https://github.com/acusti/uikit/issues"},"dist":{"shasum":"dce5c53937d4c32005cb22a85ead046beb5abefb","tarball":"https://registry.npmjs.org/@acusti/vite-plugin-react-compiler/-/vite-plugin-react-compiler-0.0.0.tgz","fileCount":5,"integrity":"sha512-QTckZNI0T6lNtLnH3NvadZLuVjMlAR1jXOXTiyWNEmEoYWbdPgClBdD3C59Kt4L1GfiZro6/FX9d3tzNqEiAJA==","signatures":[{"sig":"MEYCIQDqhGtK9PQmqNqXnRUcTamWTROePq3Qb5ijQYbciU7b3gIhAIoSn4UfcMy/8kMDYdpPdpI1imVS5taWaA9V+JuyYLXp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17132},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"gitHead":"6a2eae044ca36489c1cb67b8800402bf2a6075f9","scripts":{"tsc":"tsc --noEmit","test":"vitest","build":"vite build && tsc -p tsconfig.build.json"},"_npmUser":{"name":"acusti","email":"andrew@acusti.ca"},"repository":{"url":"git+https://github.com/acusti/uikit.git","type":"git","directory":"packages/vite-plugin-react-compiler"},"_npmVersion":"11.11.1","description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","dependencies":{"oxc-transform-react":"0.144.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8","vitest":"^4","typescript":"^7","@types/node":"^26.1.0"},"peerDependencies":{"vite":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-compiler_0.0.0_1786894157457_0.6630468963619922","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@acusti/vite-plugin-react-compiler","version":"0.1.0","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"author":{"url":"https://www.acusti.ca","name":"andrew patton","email":"andrew@acusti.ca"},"license":"Unlicense","_id":"@acusti/vite-plugin-react-compiler@0.1.0","maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","bugs":{"url":"https://github.com/acusti/uikit/issues"},"dist":{"shasum":"7f632fc066408b4d37947f3b972b3d9136c86c8a","tarball":"https://registry.npmjs.org/@acusti/vite-plugin-react-compiler/-/vite-plugin-react-compiler-0.1.0.tgz","fileCount":5,"integrity":"sha512-5CydUVOGBcYv2FsFsp2oMW7YrMTV4QIK6of+Bp5qvpzkzTE2Py/7UfeygfD5y5y+YigODR/EP5XgO25Y38iaRg==","signatures":[{"sig":"MEUCIQCxGL7g1yezZ/FkA0WsKcW15qxrn1N0T1ByVe+9eBvhjAIgUDpxsJnLhFPE054bbkjXamjyfZ4/myayCnDFvUmWTL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17132},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"gitHead":"920f1b38b5deb370056feb0209b550a20210fc85","scripts":{"tsc":"tsc --noEmit","test":"vitest","build":"vite build && tsc -p tsconfig.build.json"},"_npmUser":{"name":"acusti","email":"andrew@acusti.ca"},"repository":{"url":"git+https://github.com/acusti/uikit.git","type":"git","directory":"packages/vite-plugin-react-compiler"},"_npmVersion":"11.11.1","description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","dependencies":{"oxc-transform-react":"0.144.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^8","vitest":"^4","typescript":"^7","@types/node":"^26.1.0"},"peerDependencies":{"vite":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-compiler_0.1.0_1787244600017_0.5218414359876946","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@acusti/vite-plugin-react-compiler","version":"0.2.0","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"author":{"url":"https://www.acusti.ca","name":"andrew patton","email":"andrew@acusti.ca"},"license":"Unlicense","_id":"@acusti/vite-plugin-react-compiler@0.2.0","maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","bugs":{"url":"https://github.com/acusti/uikit/issues"},"dist":{"shasum":"9d8ce0d3ae4559e60910cac3839bf25bf4ab2833","tarball":"https://registry.npmjs.org/@acusti/vite-plugin-react-compiler/-/vite-plugin-react-compiler-0.2.0.tgz","fileCount":5,"integrity":"sha512-3MHagAQNiM/T797jcYYxkebF4EnXIpCrk05PuabptmT2PHjwXH8bmNkM5CFFI9mEBfNvQlhQ5LJouB433E8aIQ==","signatures":[{"sig":"MEYCIQCvJW5emyVXBLHxhZD7hrj55hCHWIBjgsKTl+fElQf2QQIhAI4GCLAcS/q0tZBHb775KulGtLaKSqBmwjbAeLI2qQTq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17132},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"gitHead":"4777c68cd4ec0c7c3c6b8e53641b3b6d5dd1e37f","scripts":{"tsc":"tsc --noEmit","test":"vitest","build":"vite build && tsc -p tsconfig.build.json"},"_npmUser":{"name":"acusti","email":"andrew@acusti.ca"},"repository":{"url":"git+https://github.com/acusti/uikit.git","type":"git","directory":"packages/vite-plugin-react-compiler"},"_npmVersion":"11.11.1","description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","dependencies":{"oxc-transform-react":"0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8","vitest":"^4","typescript":"^7","@types/node":"^26.1.0"},"peerDependencies":{"vite":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-compiler_0.2.0_1787246561065_0.376259109841373","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@acusti/vite-plugin-react-compiler","version":"0.3.0","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"author":{"url":"https://www.acusti.ca","name":"andrew patton","email":"andrew@acusti.ca"},"license":"Unlicense","_id":"@acusti/vite-plugin-react-compiler@0.3.0","maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","bugs":{"url":"https://github.com/acusti/uikit/issues"},"dist":{"shasum":"346f1ea0e7b65f23cd1799f7b6575795e5deba43","tarball":"https://registry.npmjs.org/@acusti/vite-plugin-react-compiler/-/vite-plugin-react-compiler-0.3.0.tgz","fileCount":5,"integrity":"sha512-+Z/ZSgefmcET6LdkFQ1WRjwV7i/IFbs2qZHO9nu44MtR3yOFO4yTui3xtvPBujGEFNklRD/KQBp+kpd5itRlGA==","signatures":[{"sig":"MEUCIEfP2bzhlkIBOJQtWX/AbImCun3FX+IkYjTOps+GpYtEAiEAyIidjUDr9xrX+VMSe0MnqXZ6uSXAtiBgVMdNtkOHBCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17100},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"gitHead":"7a5892a8538697c85c85e7445d4a2cace66e9ea4","scripts":{"tsc":"tsc --noEmit","test":"vitest","build":"vite build && tsc -p tsconfig.build.json"},"_npmUser":{"name":"acusti","email":"andrew@acusti.ca"},"repository":{"url":"git+https://github.com/acusti/uikit.git","type":"git","directory":"packages/vite-plugin-react-compiler"},"_npmVersion":"11.11.1","description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","dependencies":{"oxc-transform-react":"0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8","vitest":"^4","typescript":"^7","@types/node":"^26.1.0"},"peerDependencies":{"vite":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-compiler_0.3.0_1787600535089_0.5871219234595655","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@acusti/vite-plugin-react-compiler","version":"0.4.0","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"author":{"url":"https://www.acusti.ca","name":"andrew patton","email":"andrew@acusti.ca"},"license":"Unlicense","_id":"@acusti/vite-plugin-react-compiler@0.4.0","maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","bugs":{"url":"https://github.com/acusti/uikit/issues"},"dist":{"shasum":"dbd99d6763c1e2fb49b0e0613ae6e0a808046151","tarball":"https://registry.npmjs.org/@acusti/vite-plugin-react-compiler/-/vite-plugin-react-compiler-0.4.0.tgz","fileCount":5,"integrity":"sha512-7lJol8YgWiJk3bnJnKqhD5vTCYXIzerP4tPRp3YnqDLaHvqrd8biGnxyLZHPDkDPA9X6idTnhlXdiAL7MWEwKQ==","signatures":[{"sig":"MEQCIEJl3Ub1ALfUJnNvYlRadTQGMKfU90/SzgX0Eqm0YBsVAiBSZUuEbcKfEho+3Wc59PSMpHiCKyStxpB4sskSduGUhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17383},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"gitHead":"781b076d394d8103f8ece4b7b5aabd453c2dd105","scripts":{"tsc":"tsc --noEmit","test":"vitest","build":"vite build && tsc -p tsconfig.build.json"},"_npmUser":{"name":"acusti","email":"andrew@acusti.ca"},"repository":{"url":"git+https://github.com/acusti/uikit.git","type":"git","directory":"packages/vite-plugin-react-compiler"},"_npmVersion":"11.11.1","description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","dependencies":{"oxc-transform-react":"0.147.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8","vitest":"^4","typescript":"^7","@types/node":"^26.1.0"},"peerDependencies":{"vite":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-compiler_0.4.0_1788197850341_0.6924011067240159","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@acusti/vite-plugin-react-compiler","version":"0.5.0","description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","bugs":{"url":"https://github.com/acusti/uikit/issues"},"license":"Unlicense","author":{"name":"andrew patton","email":"andrew@acusti.ca","url":"https://www.acusti.ca"},"repository":{"type":"git","url":"git+https://github.com/acusti/uikit.git","directory":"packages/vite-plugin-react-compiler"},"type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"scripts":{"test":"vitest","build":"vite build && tsc -p tsconfig.build.json","tsc":"tsc --noEmit"},"dependencies":{"oxc-transform-react":"0.148.0"},"devDependencies":{"@types/node":"^26.1.0","typescript":"^7","vite":"^8","vitest":"^4"},"peerDependencies":{"vite":">=8.0.0"},"gitHead":"698fb36c336a66c6810c68737ac712efc97e64cd","_id":"@acusti/vite-plugin-react-compiler@0.5.0","_nodeVersion":"25.8.2","_npmVersion":"11.11.1","dist":{"integrity":"sha512-WDlvyoDjoZ7Yc9QJ6EOgHTgDHqbTg4FJJ++exsRwXuHXEeOS5cFWKLwUwixoILzHhpSYjij8QM88JXfg4GCElQ==","shasum":"e65f8d847e980cf4ce4295e29eddb649fc769955","tarball":"https://registry.npmjs.org/@acusti/vite-plugin-react-compiler/-/vite-plugin-react-compiler-0.5.0.tgz","fileCount":5,"unpackedSize":17383,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDumwOun1Jzg5xfzIidOcYCEvVE7cwl4HU6vjTuoiQvgAIgF4NCFrOysYs6F2YvsM1xPebLwm/AClfWQNqOebT0mUw="}]},"_npmUser":{"name":"acusti","email":"andrew@acusti.ca"},"directories":{},"maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-plugin-react-compiler_0.5.0_1788493883031_0.9997280134549971"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-16T15:29:17.243Z","modified":"2026-09-04T03:51:23.294Z","0.0.0":"2026-08-16T15:29:17.633Z","0.1.0":"2026-08-20T16:50:00.180Z","0.2.0":"2026-08-20T17:22:41.243Z","0.3.0":"2026-08-24T19:42:15.206Z","0.4.0":"2026-08-31T17:37:30.485Z","0.5.0":"2026-09-04T03:51:23.162Z"},"bugs":{"url":"https://github.com/acusti/uikit/issues"},"author":{"name":"andrew patton","email":"andrew@acusti.ca","url":"https://www.acusti.ca"},"license":"Unlicense","homepage":"https://github.com/acusti/uikit/tree/main/packages/vite-plugin-react-compiler#readme","keywords":["memoization","oxc","react","react-compiler","rolldown","rust","ts","typescript","vite","vite-plugin"],"repository":{"type":"git","url":"git+https://github.com/acusti/uikit.git","directory":"packages/vite-plugin-react-compiler"},"description":"Vite plugin that runs React Compiler via oxc-transform-react, the native Rust port’s Node bindings, instead of Babel","maintainers":[{"name":"acusti","email":"andrew@acusti.ca"}],"readme":"# @acusti/vite-plugin-react-compiler\n\n[![Open on npmx.dev](https://npmx.dev/api/registry/badge/version/@acusti/vite-plugin-react-compiler)](https://npmx.dev/package/@acusti/vite-plugin-react-compiler)\n[![Open on npmx.dev](https://npmx.dev/api/registry/badge/size/@acusti/vite-plugin-react-compiler)](https://npmx.dev/package/@acusti/vite-plugin-react-compiler)\n[![Open on npmx.dev](https://npmx.dev/api/registry/badge/dependencies/@acusti/vite-plugin-react-compiler)](https://npmx.dev/package/@acusti/vite-plugin-react-compiler)\n[![Open on npmx.dev](https://npmx.dev/api/registry/badge/downloads-month/@acusti/vite-plugin-react-compiler)](https://npmx.dev/package/@acusti/vite-plugin-react-compiler)\n[![Open on npmx.dev](https://npmx.dev/api/registry/badge/updated/@acusti/vite-plugin-react-compiler)](https://npmx.dev/package/@acusti/vite-plugin-react-compiler)\n\nA [Vite][] plugin that runs [React Compiler][] via [oxc-transform-react][],\nthe native Node bindings for the oxc project’s Rust port of the compiler —\na drop-in alternative to the Babel-based React Compiler build path.\n\nIt was extracted from the build tooling of [Outlyne][], where it runs in\nproduction.\n\n[vite]: https://vite.dev\n[react compiler]: https://react.dev/learn/react-compiler\n[oxc-transform-react]: https://www.npmjs.com/package/oxc-transform-react\n[outlyne]: https://outlyne.io\n\n## Why this exists\n\nVite/Rolldown decided against shipping the Rust React Compiler integration\nin Vite core over the binary size it would add, so the official React\nCompiler path for Vite remains Babel: @vitejs/plugin-react’s\n`reactCompilerPreset` running babel-plugin-react-compiler via\n[@rolldown/plugin-babel][]. That works, but it drags a full Babel\nparse/transform/print pipeline through every source file of an otherwise\nall-native oxc/rolldown build.\n\nThis plugin is the published native alternative: a `transform`-hook plugin\nthat calls [oxc-transform-react][], the Rust React Compiler bindings the\noxc project publishes. The compiler pass runs with `enforce: 'pre'` (the\nsame position the Babel pass occupies today) and emits JSX untouched\n(`jsx: 'preserve'`), so Vite’s own oxc transform stays in charge of\nJSX/refresh/TypeScript handling downstream — the plugin only adds the\ncompiler pass. (oxc-transform-react does strip TypeScript syntax, which\nmatches how the Babel path uses @babel/preset-typescript.)\n\n[@rolldown/plugin-babel]:\n    https://www.npmjs.com/package/@rolldown/plugin-babel\n\n## Usage\n\n```\nnpm install --save-dev @acusti/vite-plugin-react-compiler\n# or\nyarn add --dev @acusti/vite-plugin-react-compiler\n# or\npnpm add --save-dev @acusti/vite-plugin-react-compiler\n# or\nbun add --dev @acusti/vite-plugin-react-compiler\n```\n\nThe plugin depends on an exact, tested version of [oxc-transform-react][]:\nthe bindings are on a fast-moving 0.x release train tracking React Compiler\nmain, and new bindings releases are close to 100% bug fixes (the Rust port\nchases parity with the existing widely-used Babel plugin), so the plugin\npins the newest version that passes this repo’s test suite and ships it in\nregular plugin releases. If you need a different version, use your package\nmanager’s `overrides` (npm, pnpm, bun) or `resolutions` (yarn) to force it.\n\nLike [@acusti/vite-plugin-svg-react][], this plugin requires Vite ≥ 8, on\npurpose: its reason for existing is completing the all-native oxc/rolldown\npipeline that Vite 8 introduced.\n\n[@acusti/vite-plugin-svg-react]:\n    https://www.npmjs.com/package/@acusti/vite-plugin-svg-react\n\nAdd the plugin to your vite config (and remove any Babel-based React\nCompiler wiring, e.g. `reactCompilerPreset` + @rolldown/plugin-babel):\n\n```ts\n// vite.config.ts\nimport reactCompiler from '@acusti/vite-plugin-react-compiler';\nimport react from '@vitejs/plugin-react';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n    plugins: [react(), reactCompiler()],\n});\n```\n\n### Options\n\nThe plugin takes an optional options object with four properties:\n\n- **`include`** / **`exclude`**: standard Vite\n  [`createFilter`](https://vite.dev/guide/api-plugin#filtering-include-exclude-pattern)\n  patterns selecting which modules get the compiler pass. Defaults:\n  `include: /\\.[jt]sx?$/`, `exclude: /[/\\\\]node_modules[/\\\\]/`.\n- **`compiler`**: options passed verbatim to React Compiler, using the same\n  names as [babel-plugin-react-compiler][compiler options]:\n  `compilationMode`, `panicThreshold` (defaults to `'none'`), `target`\n  (defaults to `'19'`), `environment` flags like\n  `enableTreatRefLikeIdentifiersAsRefs`, and so on. Callback-valued options\n  (e.g. `logger`, function-valued `sources`) don’t cross the native\n  boundary and aren’t supported; `sources` accepts an array of filename\n  substrings instead.\n- **`memoize`**: cache transform results per module id, keyed by a content\n  hash (bounded to one entry per file). Multi-environment builds (e.g.\n  React Router apps building client + SSR environments) run every transform\n  once per environment; the cache makes the repeat passes free. Defaults to\n  `true`.\n\n```ts\nreactCompiler({\n    exclude: [/node_modules/, /\\.stories\\./],\n    compiler: {\n        environment: { enableTreatRefLikeIdentifiersAsRefs: true },\n    },\n});\n```\n\nIf the compiler reports a fatal error (a parse failure or rejected\noptions), the plugin fails the build via `this.error(...)`, just like a\nBabel syntax error would. Nonfatal compiler bail-outs behave as they do\nwith the Babel plugin under `panicThreshold: 'none'`: the affected function\nis left uncompiled and the build continues.\n\n[compiler options]:\n    https://react.dev/reference/react-compiler/configuration\n\n## Caveats, and results from production\n\nThe Rust port of React Compiler and the oxc-transform-react bindings are\nexperimental and explicitly labeled as such upstream. Measure and verify\nagainst the Babel plugin before trusting it (the `__COMPILER_RUNTIME.c`\nmemo cache calls in output are easy to diff). Alongside the plugin’s own\ntests, this repo runs an upstream-tracking suite against the pinned\nbindings version: it pins the ways the Rust port already exceeds\nbabel-plugin-react-compiler@1.0.0 by tracking React Compiler main (computed\nobject keys and try/catch value blocks both compile), pins Babel-parity\nfixes as they land (react-hooks lint suppressions opt functions out of\ncompilation since 0.144.0), and tracks known upstream divergences as they\narise, re-verified on every bindings bump before it ships in a plugin\nrelease.\n\nVerified results from the production Vite 8 + React Router app this plugin\nwas extracted from, compared against babel-plugin-react-compiler@1.0.0\nacross 987 source files:\n\n- **Full memoization parity with zero regressions** — every function the\n  Babel plugin compiles, the Rust port compiles. It compiles a strict\n  superset, since the Rust port tracks React Compiler main rather than the\n  latest stable release.\n- **The compiler pass is ~16x faster** than the Babel pass.\n- **The full production build is ~2.5x faster** (53s → 21s).\n","readmeFilename":"README.md"}