- React compiler preset filter to be linear to avoid performance regression
From @vitejs/plugin-react
The official React plugin for Vite, using Babel for Fast Refresh and the React Compiler.
| May | Jun | Jul | Aug | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Sunday | No releases on May 3, 2026 | No releases on May 10, 2026 | No releases on May 17, 2026 | No releases on May 24, 2026 | No releases on May 31, 2026 | No releases on Jun 7, 2026 | No releases on Jun 14, 2026 | No releases on Jun 21, 2026 | No releases on Jun 28, 2026 | No releases on Jul 5, 2026 | No releases on Jul 12, 2026 | No releases on Jul 19, 2026 | No releases on Jul 26, 2026 | No releases on Aug 2, 2026 | No releases on Aug 9, 2026 | No releases on Aug 16, 2026 |
| Monday | No releases on May 4, 2026 | No releases on May 11, 2026 | No releases on May 18, 2026 | No releases on May 25, 2026 | No releases on Jun 1, 2026 | No releases on Jun 8, 2026 | No releases on Jun 15, 2026 | No releases on Jun 22, 2026 | No releases on Jun 29, 2026 | No releases on Jul 6, 2026 | No releases on Jul 13, 2026 | No releases on Jul 20, 2026 | No releases on Jul 27, 2026 | No releases on Aug 3, 2026 | No releases on Aug 10, 2026 | No releases on Aug 17, 2026 |
| Tuesday | No releases on May 5, 2026 | No releases on May 12, 2026 | No releases on May 19, 2026 | No releases on May 26, 2026 | No releases on Jun 2, 2026 | No releases on Jun 9, 2026 | No releases on Jun 16, 2026 | 1 release on Jun 23, 2026 | No releases on Jun 30, 2026 | No releases on Jul 7, 2026 | No releases on Jul 14, 2026 | No releases on Jul 21, 2026 | No releases on Jul 28, 2026 | No releases on Aug 4, 2026 | No releases on Aug 11, 2026 | No releases on Aug 18, 2026 |
| Wednesday | No releases on May 6, 2026 | No releases on May 13, 2026 | No releases on May 20, 2026 | No releases on May 27, 2026 | No releases on Jun 3, 2026 | No releases on Jun 10, 2026 | No releases on Jun 17, 2026 | No releases on Jun 24, 2026 | No releases on Jul 1, 2026 | No releases on Jul 8, 2026 | No releases on Jul 15, 2026 | 1 release on Jul 22, 2026 | No releases on Jul 29, 2026 | No releases on Aug 5, 2026 | No releases on Aug 12, 2026 | No releases on Aug 19, 2026 |
| Thursday | No releases on May 7, 2026 | 1 release on May 14, 2026 | No releases on May 21, 2026 | No releases on May 28, 2026 | No releases on Jun 4, 2026 | No releases on Jun 11, 2026 | No releases on Jun 18, 2026 | No releases on Jun 25, 2026 | No releases on Jul 2, 2026 | No releases on Jul 9, 2026 | No releases on Jul 16, 2026 | No releases on Jul 23, 2026 | 1 release on Jul 30, 2026 | No releases on Aug 6, 2026 | No releases on Aug 13, 2026 | |
| Friday | No releases on May 8, 2026 | No releases on May 15, 2026 | No releases on May 22, 2026 | No releases on May 29, 2026 | No releases on Jun 5, 2026 | No releases on Jun 12, 2026 | No releases on Jun 19, 2026 | No releases on Jun 26, 2026 | No releases on Jul 3, 2026 | No releases on Jul 10, 2026 | No releases on Jul 17, 2026 | No releases on Jul 24, 2026 | No releases on Jul 31, 2026 | No releases on Aug 7, 2026 | No releases on Aug 14, 2026 | |
| Saturday | No releases on May 9, 2026 | No releases on May 16, 2026 | No releases on May 23, 2026 | No releases on May 30, 2026 | No releases on Jun 6, 2026 | No releases on Jun 13, 2026 | No releases on Jun 20, 2026 | No releases on Jun 27, 2026 | No releases on Jul 4, 2026 | No releases on Jul 11, 2026 | No releases on Jul 18, 2026 | No releases on Jul 25, 2026 | No releases on Aug 1, 2026 | No releases on Aug 8, 2026 | No releases on Aug 15, 2026 |
17 releases in the last year, busiest day 2
From @vitejs/plugin-react
From @vitejs/plugin-react
$RefreshSig$ is not defined error when running vite dev with NODE_ENV=productionWhen running vite dev with NODE_ENV=production, the app errored with $RefreshSig$ is not defined.
This error is now fixed.
This is a type only change. Only compilationMode and target options were available for reactCompilerPreset.
@rolldown/plugin-babel peer dep range (#1146)Expanded @rolldown/plugin-babel peer dep range to include ^0.2.0.
Vite 8+ can handle React Refresh Transform by Oxc and doesn't need Babel for it. With that, there are no transform applied that requires Babel. To reduce the installation size of this plugin, babel is no longer a dependency of this plugin and the related features are removed.
If you are using Babel, you can use @rolldown/plugin-babel together with this plugin:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
+import babel from '@rolldown/plugin-babel'
export default defineConfig({
plugins: [
- react({
- babel: {
- plugins: ['@babel/plugin-proposal-throw-expressions'],
- },
- }),
+ react(),
+ babel({
+ plugins: ['@babel/plugin-proposal-throw-expressions'],
+ }),
]
})
For React compiler users, you can use reactCompilerPreset for easier setup with preconfigured filter to improve build performance:
import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import react, { reactCompilerPreset } from '@vitejs/plugin-react'
+import babel from '@rolldown/plugin-babel'
export default defineConfig({
plugins: [
- react({
- babel: {
- plugins: ['babel-plugin-react-compiler'],
- },
- }),
+ react(),
+ babel({
+ presets: [reactCompilerPreset()]
+ }),
]
})
Vite 7 and below are no longer supported. If you are using Vite 7, please upgrade to Vite 8.
This plugin is compatible with Vite 8.
Vite 8+ can handle React Refresh Transform by Oxc and doesn't need Babel for it. With that, there are no transform applied that requires Babel. To reduce the installation size of this plugin, babel is no longer a dependency of this plugin and the related features are removed.
If you are using Babel, you can use @rolldown/plugin-babel together with this plugin:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
+import babel from '@rolldown/plugin-babel'
export default defineConfig({
plugins: [
- react({
- babel: {
- plugins: ['@babel/plugin-proposal-throw-expressions'],
- },
- }),
+ react(),
+ babel({
+ plugins: ['@babel/plugin-proposal-throw-expressions'],
+ }),
]
})
For React compiler users, you can use reactCompilerPreset for easier setup with preconfigured filter to improve build performance:
import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import react, { reactCompilerPreset } from '@vitejs/plugin-react'
+import babel from '@rolldown/plugin-babel'
export default defineConfig({
plugins: [
- react({
- babel: {
- plugins: ['babel-plugin-react-compiler'],
- },
- }),
+ react(),
+ babel({
+ presets: [reactCompilerPreset()]
+ }),
]
})
Vite 7 and below are no longer supported. If you are using Vite 7, please upgrade to Vite 8.
canSkipBabel not accounting for babel.overrides (#1098)When configuring babel.overrides without top-level plugins or presets, Babel was incorrectly skipped. The canSkipBabel function now checks for overrides.length to ensure override configurations are processed.
rolldown-vite (#976)rolldown-vite will remove optimizeDeps.rollupOptions in favor of optimizeDeps.rolldownOptions soon. This plugin now uses optimizeDeps.rolldownOptions to support newer rolldown-vite. Please update rolldown-vite to the latest version if you are using an older version.
@vitejs/plugin-react/preamble virtual module for SSR HMR (#890)SSR applications can now initialize HMR runtime by importing @vitejs/plugin-react/preamble at the top of their client entry instead of manually calling transformIndexHtml. This simplifies SSR setup for applications that don't use the transformIndexHtml API.
Rolldown 1.0.0-beta.44+ removed the top-level jsx option in favor of transform.jsx. This plugin now uses the transform.jsx option to support Rolldown 1.0.0-beta.44+.
optimizeDeps.rollupOptions.transform.jsx instead of optimizeDeps.rollupOptions.jsx for rolldown-vite (#735)optimizeDeps.rollupOptions.jsx is going to be deprecated in favor of optimizeDeps.rollupOptions.transform.jsx.
babel-plugin-react-compiler if code has no "use memo" when { compilationMode: "annotation" } (#734)jsxImportSource (#726)reactRefreshHost option on rolldown-vite (#716)RefreshRuntime being injected twice for class components on rolldown-vite (#708)babel-plugin-react-compiler on non client environment (689)(Same content as v5.0.0-beta.0 https://github.com/vitejs/vite-plugin-react/releases/tag/plugin-react%405.0.0-beta.0)
When used with rolldown-vite, this plugin now uses Oxc for react refresh transform.
Since this behavior is what @vitejs/plugin-react-oxc did, @vitejs/plugin-react-oxc is now deprecated and the disableOxcRecommendation option is removed.
Also, while @vitejs/plugin-react-oxc used the production JSX transform even for NODE_ENV=development build, @vitejs/plugin-react uses the development JSX transform for NODE_ENV=development build.
node_modulesThe default value of exclude options is now [/\/node_modules\//] to allow processing files in node_modules directory. It was previously [] and files in node_modules was always excluded regardless of the value of exclude option.
react and react-dom is no longer added to resolve.dedupe automaticallyAdding values to resolve.dedupe forces Vite to resolve them differently from how Node.js does, which can be confusing and may not be expected. This plugin no longer adds react and react-dom to resolve.dedupe automatically.
If you encounter errors after upgrading, check your package.json for version mismatches in dependencies or devDependencies, as well as your package manager’s configuration. If you prefer the previous behavior, you can manually add react and react-dom to resolve.dedupe.
babel-plugin-react-compiler support that requires runtimeModule optionruntimeModule option is no longer needed in newer babel-plugin-react-compiler versions. Make sure to use a newer version of babel-plugin-react-compiler that supports target option.
This plugin now requires Node 20.19+ or 22.12+.
When used with rolldown-vite, this plugin now uses Oxc for react refresh transform.
Since this behavior is what @vitejs/plugin-react-oxc did, @vitejs/plugin-react-oxc is now deprecated and the disableOxcRecommendation option is removed.
Also, while @vitejs/plugin-react-oxc used the production JSX transform even for NODE_ENV=development build, @vitejs/plugin-react uses the development JSX transform for NODE_ENV=development build.
node_modulesThe default value of exclude options is now [/\/node_modules\//] to allow processing files in node_modules directory. It was previously [] and files in node_modules was always excluded regardless of the value of exclude option.
react and react-dom is no longer added to resolve.dedupe automaticallyAdding values to resolve.dedupe forces Vite to resolve them differently from how Node.js does, which can be confusing and may not be expected. This plugin no longer adds react and react-dom to resolve.dedupe automatically.
If you encounter errors after upgrading, check your package.json for version mismatches in dependencies or devDependencies, as well as your package manager’s configuration. If you prefer the previous behavior, you can manually add react and react-dom to resolve.dedupe.
babel-plugin-react-compiler support that requires runtimeModule optionruntimeModule option is no longer needed in newer babel-plugin-react-compiler versions. Make sure to use a newer version of babel-plugin-react-compiler that supports target option.
This plugin now requires Node 20.19+ or 22.12+.
HMR now works for compound components like this:
const Root = () => <div>Accordion Root</div>
const Item = () => <div>Accordion Item</div>
export const Accordion = { Root, Item }
Plugin[] instead of PluginOption[] (#537)The return type has changed from react(): PluginOption[] to more specialized type react(): Plugin[]. This allows for type-safe manipulation of plugins, for example:
// previously this causes type errors
react({ babel: { plugins: ['babel-plugin-react-compiler'] } })
.map(p => ({ ...p, applyToEnvironment: e => e.name === 'client' }))
This plugin only worked with Vite. But now it can also be used with raw Rolldown. The main purpose for using this plugin with Rolldown is to use react compiler.
@vitejs/plugin-react-oxc if rolldown-vite is detected #491Emit a log which recommends @vitejs/plugin-react-oxc when rolldown-vite is detected to improve performance and use Oxc under the hood. The warning can be disabled by setting disableOxcRecommendation: false in the plugin options.
optimizeDeps.rollupOptions instead of optimizeDeps.esbuildOptions for rolldown-vite #489This suppresses the warning about optimizeDeps.esbuildOptions being deprecated in rolldown-vite.
React plugins are compatible with Vite 7, this removes the warning when testing the beta.
Flutter makes it easy and fast to build beautiful apps for mobile and beyond
tmux release notes.
Python tool for converting files and office documents to Markdown.
Anthropic's agentic coding tool for the terminal, IDE and web.
The free, open-source 2D and 3D game engine.
Monthly release notes and patch releases for the GitLab DevOps platform — source control, CI/CD and the rest.
If you publish @vitejs/plugin-react, you can claim this product by proving you administer its repository.