diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index b2bf121e9..b580635d2 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -17,8 +17,6 @@ body:
[plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react)
- label: |
[plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc)
- - label: |
- [plugin-react-oxc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-oxc)
- label: |
[plugin-rsc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-rsc)
- type: textarea
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index e83ecf546..070bd9228 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -17,8 +17,6 @@ body:
[plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react)
- label: |
[plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc)
- - label: |
- [plugin-react-oxc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-oxc)
- label: |
[plugin-rsc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-rsc)
- type: textarea
diff --git a/AGENTS.md b/AGENTS.md
index 1c3203d28..90be34a81 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -14,7 +14,6 @@ This monorepo contains multiple packages (see [README.md](README.md#packages) fo
- `packages/plugin-react/` - Main React plugin with Babel
- `packages/plugin-react-swc/` - SWC-based React plugin
- `packages/plugin-rsc/` - React Server Components ([AI guidance](packages/plugin-rsc/AGENTS.md), [architecture](packages/plugin-rsc/docs/architecture.md))
-- `packages/plugin-react-oxc/` - Deprecated (merged with plugin-react)
### Essential Setup Commands
diff --git a/README.md b/README.md
index 2a586d285..6e67393ff 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,6 @@ See [`@vitejs/plugin-rsc` documentation](packages/plugin-rsc/README.md)
| [@vitejs/plugin-react](packages/plugin-react) | [](packages/plugin-react/CHANGELOG.md) |
| [@vitejs/plugin-react-swc](packages/plugin-react-swc) | [](packages/plugin-react-swc/CHANGELOG.md) |
| [@vitejs/plugin-rsc](packages/plugin-rsc) | [](packages/plugin-rsc/CHANGELOG.md) |
-| [@vitejs/plugin-react-oxc](packages/plugin-react-oxc) | [Deprecated](packages/plugin-react-oxc/CHANGELOG.md), merged with [`@vitejs/plugin-react`](packages/plugin-react) |
## License
diff --git a/packages/plugin-react-oxc/CHANGELOG.md b/packages/plugin-react-oxc/CHANGELOG.md
deleted file mode 100644
index 6ac52fee2..000000000
--- a/packages/plugin-react-oxc/CHANGELOG.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Changelog
-
-## Unreleased
-
-## 0.4.3 (2025-11-12)
-
-### Update code to support newer `rolldown-vite` ([#978](https://github.com/vitejs/vite-plugin-react/pull/978))
-
-`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.
-
-## 0.4.2 (2025-09-17)
-
-### Perf: simplify refresh wrapper generation ([#835](https://github.com/vitejs/vite-plugin-react/pull/835))
-
-## 0.4.1 (2025-08-19)
-
-### Set `optimizeDeps.rollupOptions.transform.jsx` instead of `optimizeDeps.rollupOptions.jsx` ([#735](https://github.com/vitejs/vite-plugin-react/pull/735))
-
-`optimizeDeps.rollupOptions.jsx` is going to be deprecated in favor of `optimizeDeps.rollupOptions.transform.jsx`.
-
-## 0.4.0 (2025-08-07)
-
-## 0.4.0-beta.0 (2025-07-28)
-
-### Deprecate this plugin
-
-The changes of this plugin is now included in `@vitejs/plugin-react`. Please use `@vitejs/plugin-react` instead.
-
-### Allow processing files in `node_modules`
-
-The 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.
-
-### Require Node 20.19+, 22.12+
-
-This plugin now requires Node 20.19+ or 22.12+.
-
-## 0.3.0 (2025-07-18)
-
-### Add HMR support for compound components ([#518](https://github.com/vitejs/vite-plugin-react/pull/518))
-
-HMR now works for compound components like this:
-
-```tsx
-const Root = () =>
Accordion Root
-const Item = () => Accordion Item
-
-export const Accordion = { Root, Item }
-```
-
-### Return `Plugin[]` instead of `PluginOption[]` ([#537](https://github.com/vitejs/vite-plugin-react/pull/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:
-
-```tsx
-// previously this causes type errors
-react()
- .map(p => ({ ...p, applyToEnvironment: e => e.name === 'client' }))
-```
-
-## 0.2.3 (2025-06-16)
-
-### Disable refresh transform when `server.hmr: false` is set [#502](https://github.com/vitejs/vite-plugin-react/pull/502)
-
-This fixes "`$RefreshReg$` is not defined" error when running Vitest with the plugin.
-
-## 0.2.2 (2025-06-10)
-
-### Add Vite 7-beta to peerDependencies range [#497](https://github.com/vitejs/vite-plugin-react/pull/497)
-
-React plugins are compatible with Vite 7, this removes the warning when testing the beta.
-
-## 0.2.1 (2025-06-03)
-
-### Add explicit semicolon in preambleCode [#485](https://github.com/vitejs/vite-plugin-react/pull/485)
-
-This fixes an edge case when using HTML minifiers that strips line breaks aggressively.
-
-## 0.2.0 (2025-05-23)
-
-### Add `filter` for rolldown-vite [#470](https://github.com/vitejs/vite-plugin-react/pull/470)
-
-Added `filter` so that it is more performant when running this plugin with rolldown-powered version of Vite.
-
-### Skip HMR for JSX files with hooks [#480](https://github.com/vitejs/vite-plugin-react/pull/480)
-
-This removes the HMR warning for hooks with JSX.
-
-## 0.1.1 (2025-04-10)
-
-## 0.1.0 (2025-04-09)
-
-- Create Oxc plugin
diff --git a/packages/plugin-react-oxc/LICENSE b/packages/plugin-react-oxc/LICENSE
deleted file mode 100644
index 9c1b313d7..000000000
--- a/packages/plugin-react-oxc/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2019-present, Yuxi (Evan) You and Vite contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/packages/plugin-react-oxc/README.md b/packages/plugin-react-oxc/README.md
deleted file mode 100644
index 0450c9d64..000000000
--- a/packages/plugin-react-oxc/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-> [!IMPORTANT]
-> This package is deprecated. Please use [@vitejs/plugin-react](https://www.npmjs.com/package/@vitejs/plugin-react) instead, which automatically enables Oxc-based Fast Refresh transform on [`rolldown-vite`](https://vitejs.dev/guide/rolldown).
-
-# @vitejs/plugin-react-oxc [](https://npmjs.com/package/@vitejs/plugin-react-oxc)
-
-The future default Vite plugin for React projects.
-
-- enable [Fast Refresh](https://www.npmjs.com/package/react-refresh) in development
-- use the [automatic JSX runtime](https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html)
-- small installation size
-
-```js
-// vite.config.js
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react-oxc'
-
-export default defineConfig({
- plugins: [react()],
-})
-```
-
-## Caveats
-
-- `jsx runtime` is always `automatic`
-- this plugin only works with [`rolldown-vite`](https://vitejs.dev/guide/rolldown)
-
-## Options
-
-### include/exclude
-
-Includes `.js`, `.jsx`, `.ts` & `.tsx` and excludes `/node_modules/` by default. This option can be used to add fast refresh to `.mdx` files:
-
-```js
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
-import mdx from '@mdx-js/rollup'
-
-export default defineConfig({
- plugins: [
- { enforce: 'pre', ...mdx() },
- react({ include: /\.(mdx|js|jsx|ts|tsx)$/ }),
- ],
-})
-```
-
-### jsxImportSource
-
-Control where the JSX factory is imported from. Default to `'react'`
-
-```js
-react({ jsxImportSource: '@emotion/react' })
-```
-
-## Middleware mode
-
-In [middleware mode](https://vite.dev/config/server-options.html#server-middlewaremode), you should make sure your entry `index.html` file is transformed by Vite. Here's an example for an Express server:
-
-```js
-app.get('/', async (req, res, next) => {
- try {
- let html = fs.readFileSync(path.resolve(root, 'index.html'), 'utf-8')
-
- // Transform HTML using Vite plugins.
- html = await viteServer.transformIndexHtml(req.url, html)
-
- res.send(html)
- } catch (e) {
- return next(e)
- }
-})
-```
-
-Otherwise, you'll probably get this error:
-
-```
-Uncaught Error: @vitejs/plugin-react-oxc can't detect preamble. Something is wrong.
-```
-
-## Consistent components exports
-
-For React refresh to work correctly, your file should only export React components. You can find a good explanation in the [Gatsby docs](https://www.gatsbyjs.com/docs/reference/local-development/fast-refresh/#how-it-works).
-
-If an incompatible change in exports is found, the module will be invalidated and HMR will propagate. To make it easier to export simple constants alongside your component, the module is only invalidated when their value changes.
-
-You can catch mistakes and get more detailed warnings with this [ESLint rule](https://github.com/ArnaudBarre/eslint-plugin-react-refresh), or the equivalent [Oxlint rule](https://oxc.rs/docs/guide/usage/linter/rules/react/only-export-components.html).
diff --git a/packages/plugin-react-oxc/package.json b/packages/plugin-react-oxc/package.json
deleted file mode 100644
index 25bd74f6d..000000000
--- a/packages/plugin-react-oxc/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "@vitejs/plugin-react-oxc",
- "version": "0.4.3",
- "description": "The future default Vite plugin for React projects",
- "keywords": [
- "fast refresh",
- "oxc",
- "react",
- "react-refresh",
- "vite",
- "vite-plugin"
- ],
- "homepage": "https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#readme",
- "bugs": {
- "url": "https://github.com/vitejs/vite-plugin-react/issues"
- },
- "license": "MIT",
- "author": "Evan You",
- "contributors": [
- "Alec Larson",
- "Arnaud Barré"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/vitejs/vite-plugin-react.git",
- "directory": "packages/plugin-react-oxc"
- },
- "files": [
- "dist"
- ],
- "type": "module",
- "exports": "./dist/index.js",
- "scripts": {
- "dev": "tsdown --watch ./src --watch ../common",
- "build": "tsdown",
- "prepublishOnly": "npm run build"
- },
- "dependencies": {
- "@rolldown/pluginutils": "1.0.0-rc.13"
- },
- "devDependencies": {
- "@vitejs/react-common": "workspace:*",
- "tsdown": "^0.21.7",
- "vite": "catalog:rolldown-vite"
- },
- "peerDependencies": {
- "vite": "^6.3.0 || ^7.0.0"
- },
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
-}
diff --git a/packages/plugin-react-oxc/src/index.ts b/packages/plugin-react-oxc/src/index.ts
deleted file mode 100644
index 90665ceea..000000000
--- a/packages/plugin-react-oxc/src/index.ts
+++ /dev/null
@@ -1,159 +0,0 @@
-import { readFileSync } from 'node:fs'
-import { dirname, join } from 'node:path'
-import { fileURLToPath } from 'node:url'
-import { exactRegex } from '@rolldown/pluginutils'
-import {
- addRefreshWrapper,
- getPreambleCode,
- runtimePublicPath,
- silenceUseClientWarning,
-} from '@vitejs/react-common'
-import type { BuildOptions, Plugin } from 'vite'
-
-const _dirname = dirname(fileURLToPath(import.meta.url))
-const refreshRuntimePath = join(_dirname, 'refresh-runtime.js')
-
-export interface Options {
- include?: string | RegExp | Array
- exclude?: string | RegExp | Array
- /**
- * Control where the JSX factory is imported from.
- * @default 'react'
- */
- jsxImportSource?: string
-}
-
-const defaultIncludeRE = /\.[tj]sx?(?:$|\?)/
-const defaultExcludeRE = /\/node_modules\//
-
-export default function viteReact(opts: Options = {}): Plugin[] {
- const include = opts.include ?? defaultIncludeRE
- const exclude = opts.exclude ?? defaultExcludeRE
-
- const jsxImportSource = opts.jsxImportSource ?? 'react'
- const jsxImportRuntime = `${jsxImportSource}/jsx-runtime`
- const jsxImportDevRuntime = `${jsxImportSource}/jsx-dev-runtime`
-
- const viteConfig: Plugin = {
- name: 'vite:react-oxc:config',
- config(userConfig, { command }) {
- return {
- // @ts-expect-error rolldown-vite Vite type incompatibility
- build: silenceUseClientWarning(userConfig) as BuildOptions,
- oxc: {
- jsx: {
- runtime: 'automatic',
- importSource: jsxImportSource,
- refresh: command === 'serve',
- development: command === 'serve',
- },
- jsxRefreshInclude: include,
- jsxRefreshExclude: exclude,
- },
- optimizeDeps: {
- include: [
- 'react',
- 'react-dom',
- jsxImportDevRuntime,
- jsxImportRuntime,
- ],
- rolldownOptions: { transform: { jsx: { runtime: 'automatic' } } },
- },
- }
- },
- configResolved(config) {
- config.logger.warn(
- '@vitejs/plugin-react-oxc is deprecated. ' +
- 'Please use @vitejs/plugin-react instead. ' +
- 'The changes of this plugin is now included in @vitejs/plugin-react.',
- )
- },
- options() {
- if (!this.meta.rolldownVersion) {
- throw new Error(
- '@vitejs/plugin-react-oxc requires rolldown-vite to be used. ' +
- 'See https://vitejs.dev/guide/rolldown for more details about rolldown-vite.',
- )
- }
- },
- }
-
- const viteConfigPost: Plugin = {
- name: 'vite:react-oxc:config-post',
- enforce: 'post',
- config(userConfig) {
- if (userConfig.server?.hmr === false) {
- return {
- oxc: {
- jsx: {
- refresh: false,
- },
- },
- }
- }
- },
- }
-
- const viteRefreshRuntime: Plugin = {
- name: 'vite:react-oxc:refresh-runtime',
- enforce: 'pre',
- resolveId: {
- filter: { id: exactRegex(runtimePublicPath) },
- handler(id) {
- return id
- },
- },
- load: {
- filter: { id: exactRegex(runtimePublicPath) },
- handler(_id) {
- return readFileSync(refreshRuntimePath, 'utf-8').replace(
- /__README_URL__/g,
- 'https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-oxc',
- )
- },
- },
- }
-
- let skipFastRefresh = false
-
- const viteRefreshWrapper: Plugin = {
- name: 'vite:react-oxc:refresh-wrapper',
- apply: 'serve',
- configResolved(config) {
- skipFastRefresh = config.isProduction || config.server.hmr === false
- },
- transform: {
- filter: {
- id: { include, exclude },
- },
- handler(code, id, options) {
- const ssr = options?.ssr === true
-
- const [filepath] = id.split('?')
- const isJSX = filepath.endsWith('x')
- const useFastRefresh =
- !skipFastRefresh &&
- !ssr &&
- (isJSX ||
- code.includes(jsxImportDevRuntime) ||
- code.includes(jsxImportRuntime))
- if (!useFastRefresh) return
-
- const newCode = addRefreshWrapper(code, '@vitejs/plugin-react-oxc', id)
- return newCode ? { code: newCode, map: null } : undefined
- },
- },
- transformIndexHtml(_, config) {
- if (!skipFastRefresh)
- return [
- {
- tag: 'script',
- attrs: { type: 'module' },
- children: getPreambleCode(config.server!.config.base),
- },
- ]
- },
- }
-
- return [viteConfig, viteConfigPost, viteRefreshRuntime, viteRefreshWrapper]
-}
diff --git a/packages/plugin-react-oxc/tsconfig.json b/packages/plugin-react-oxc/tsconfig.json
deleted file mode 100644
index f9589baf0..000000000
--- a/packages/plugin-react-oxc/tsconfig.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "include": ["src"],
- "compilerOptions": {
- "outDir": "dist",
- "target": "es2023",
- "module": "preserve",
- "moduleResolution": "bundler",
- "declaration": true,
- "sourceMap": true,
- "noEmit": true,
- "noUnusedLocals": true,
- "esModuleInterop": true
- }
-}
diff --git a/packages/plugin-react-oxc/tsdown.config.ts b/packages/plugin-react-oxc/tsdown.config.ts
deleted file mode 100644
index e10622bc7..000000000
--- a/packages/plugin-react-oxc/tsdown.config.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineConfig } from 'tsdown'
-
-export default defineConfig({
- entry: 'src/index.ts',
- fixedExtension: false,
- dts: true,
- copy: [
- {
- from: 'node_modules/@vitejs/react-common/refresh-runtime.js',
- to: 'dist',
- },
- ],
-})
diff --git a/packages/plugin-react-swc/README.md b/packages/plugin-react-swc/README.md
index fc7ac6da4..6d746314f 100644
--- a/packages/plugin-react-swc/README.md
+++ b/packages/plugin-react-swc/README.md
@@ -119,7 +119,7 @@ react({
### disableOxcRecommendation
-If set, disables the recommendation to use `@vitejs/plugin-react-oxc` (which is shown when `rolldown-vite` is detected and neither `swc` plugins are used nor the `swc` options are mutated).
+If set, disables the recommendation to use `@vitejs/plugin-react` (which is shown when `rolldown-vite` is detected and neither `swc` plugins are used nor the `swc` options are mutated).
```ts
react({ disableOxcRecommendation: true })
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e6cc8a55f..5817ceebc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,12 +4,6 @@ settings:
autoInstallPeers: false
excludeLinksFromLockfile: false
-catalogs:
- rolldown-vite:
- vite:
- specifier: npm:rolldown-vite@^7.3.1
- version: 7.3.1
-
overrides:
'@types/estree': ^1.0.8
@@ -118,22 +112,6 @@ importers:
specifier: ^8.0.3
version: 8.0.5(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@24.12.2)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)
- packages/plugin-react-oxc:
- dependencies:
- '@rolldown/pluginutils':
- specifier: 1.0.0-rc.13
- version: 1.0.0-rc.13
- devDependencies:
- '@vitejs/react-common':
- specifier: workspace:*
- version: link:../common
- tsdown:
- specifier: ^0.21.7
- version: 0.21.7(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(publint@0.3.12)(typescript@6.0.2)
- vite:
- specifier: catalog:rolldown-vite
- version: rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@24.12.2)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)
-
packages/plugin-react-swc:
dependencies:
'@rolldown/pluginutils':
@@ -1800,13 +1778,6 @@ packages:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
- '@oxc-project/runtime@0.101.0':
- resolution: {integrity: sha512-t3qpfVZIqSiLQ5Kqt/MC4Ge/WCOGrrcagAdzTcDaggupjiGxUx4nJF2v6wUCXWSzWHn5Ns7XLv13fCJEwCOERQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
-
- '@oxc-project/types@0.101.0':
- resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==}
-
'@oxc-project/types@0.122.0':
resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==}
@@ -1962,12 +1933,6 @@ packages:
'@quansync/fs@1.0.0':
resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==}
- '@rolldown/binding-android-arm64@1.0.0-beta.53':
- resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
-
'@rolldown/binding-android-arm64@1.0.0-rc.12':
resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -1980,12 +1945,6 @@ packages:
cpu: [arm64]
os: [android]
- '@rolldown/binding-darwin-arm64@1.0.0-beta.53':
- resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
-
'@rolldown/binding-darwin-arm64@1.0.0-rc.12':
resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -1998,12 +1957,6 @@ packages:
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.0-beta.53':
- resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
-
'@rolldown/binding-darwin-x64@1.0.0-rc.12':
resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2016,12 +1969,6 @@ packages:
cpu: [x64]
os: [darwin]
- '@rolldown/binding-freebsd-x64@1.0.0-beta.53':
- resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
-
'@rolldown/binding-freebsd-x64@1.0.0-rc.12':
resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2034,12 +1981,6 @@ packages:
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53':
- resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
-
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12':
resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2052,13 +1993,6 @@ packages:
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53':
- resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
'@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12':
resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2073,13 +2007,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53':
- resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
'@rolldown/binding-linux-arm64-musl@1.0.0-rc.12':
resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2122,13 +2049,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53':
- resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
'@rolldown/binding-linux-x64-gnu@1.0.0-rc.12':
resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2143,13 +2063,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-musl@1.0.0-beta.53':
- resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
'@rolldown/binding-linux-x64-musl@1.0.0-rc.12':
resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2164,12 +2077,6 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-openharmony-arm64@1.0.0-beta.53':
- resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
-
'@rolldown/binding-openharmony-arm64@1.0.0-rc.12':
resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2182,11 +2089,6 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-wasm32-wasi@1.0.0-beta.53':
- resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
'@rolldown/binding-wasm32-wasi@1.0.0-rc.12':
resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==}
engines: {node: '>=14.0.0'}
@@ -2197,12 +2099,6 @@ packages:
engines: {node: '>=14.0.0'}
cpu: [wasm32]
- '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53':
- resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
-
'@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12':
resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2215,12 +2111,6 @@ packages:
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53':
- resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
-
'@rolldown/binding-win32-x64-msvc@1.0.0-rc.12':
resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2250,9 +2140,6 @@ packages:
vite:
optional: true
- '@rolldown/pluginutils@1.0.0-beta.53':
- resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
-
'@rolldown/pluginutils@1.0.0-rc.12':
resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==}
@@ -4204,52 +4091,6 @@ packages:
vue-tsc:
optional: true
- rolldown-vite@7.3.1:
- resolution: {integrity: sha512-LYzdNAjRHhF2yA4JUQm/QyARyi216N2rpJ0lJZb8E9FU2y5v6Vk+xq/U4XBOxMefpWixT5H3TslmAHm1rqIq2w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- deprecated: Use this package to migrate from Vite 7 to Vite 8. For the most recent updates, migrate to Vite 8 once you're ready.
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- esbuild: ^0.27.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- esbuild:
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
-
- rolldown@1.0.0-beta.53:
- resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
-
rolldown@1.0.0-rc.12:
resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -5515,10 +5356,6 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
- '@oxc-project/runtime@0.101.0': {}
-
- '@oxc-project/types@0.101.0': {}
-
'@oxc-project/types@0.122.0': {}
'@oxc-project/types@0.123.0': {}
@@ -5606,63 +5443,42 @@ snapshots:
dependencies:
quansync: 1.0.0
- '@rolldown/binding-android-arm64@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-android-arm64@1.0.0-rc.12':
optional: true
'@rolldown/binding-android-arm64@1.0.0-rc.13':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-darwin-arm64@1.0.0-rc.12':
optional: true
'@rolldown/binding-darwin-arm64@1.0.0-rc.13':
optional: true
- '@rolldown/binding-darwin-x64@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-darwin-x64@1.0.0-rc.12':
optional: true
'@rolldown/binding-darwin-x64@1.0.0-rc.13':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-freebsd-x64@1.0.0-rc.12':
optional: true
'@rolldown/binding-freebsd-x64@1.0.0-rc.13':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-linux-arm64-musl@1.0.0-rc.12':
optional: true
@@ -5681,41 +5497,24 @@ snapshots:
'@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-linux-x64-gnu@1.0.0-rc.12':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.0-rc.13':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-linux-x64-musl@1.0.0-rc.12':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.0-rc.13':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-openharmony-arm64@1.0.0-rc.12':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.0-rc.13':
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.0-beta.53(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)':
- dependencies:
- '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)
- transitivePeerDependencies:
- - '@emnapi/core'
- - '@emnapi/runtime'
- optional: true
-
'@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)':
dependencies:
'@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)
@@ -5731,18 +5530,12 @@ snapshots:
'@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12':
optional: true
'@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53':
- optional: true
-
'@rolldown/binding-win32-x64-msvc@1.0.0-rc.12':
optional: true
@@ -5765,8 +5558,6 @@ snapshots:
optionalDependencies:
vite: 8.0.5(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@24.12.2)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)
- '@rolldown/pluginutils@1.0.0-beta.53': {}
-
'@rolldown/pluginutils@1.0.0-rc.12': {}
'@rolldown/pluginutils@1.0.0-rc.13': {}
@@ -7861,47 +7652,6 @@ snapshots:
transitivePeerDependencies:
- oxc-resolver
- rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@24.12.2)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2):
- dependencies:
- '@oxc-project/runtime': 0.101.0
- fdir: 6.5.0(picomatch@4.0.4)
- lightningcss: 1.32.0
- picomatch: 4.0.4
- postcss: 8.5.8
- rolldown: 1.0.0-beta.53(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 24.12.2
- esbuild: 0.27.3
- fsevents: 2.3.3
- jiti: 2.6.1
- yaml: 2.8.2
- transitivePeerDependencies:
- - '@emnapi/core'
- - '@emnapi/runtime'
-
- rolldown@1.0.0-beta.53(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1):
- dependencies:
- '@oxc-project/types': 0.101.0
- '@rolldown/pluginutils': 1.0.0-beta.53
- optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.0-beta.53
- '@rolldown/binding-darwin-arm64': 1.0.0-beta.53
- '@rolldown/binding-darwin-x64': 1.0.0-beta.53
- '@rolldown/binding-freebsd-x64': 1.0.0-beta.53
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53
- '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53
- '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53
- '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53
- '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53
- '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53
- '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)
- '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53
- '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53
- transitivePeerDependencies:
- - '@emnapi/core'
- - '@emnapi/runtime'
-
rolldown@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1):
dependencies:
'@oxc-project/types': 0.122.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index cd43e0682..c8e3e7059 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -4,10 +4,6 @@ packages:
- 'packages/plugin-react-swc/playground/**'
- 'packages/plugin-rsc/examples/*'
-catalogs:
- rolldown-vite:
- vite: npm:rolldown-vite@^7.3.1
-
dedupeInjectedDeps: false
onlyBuiltDependencies:
diff --git a/scripts/release.ts b/scripts/release.ts
index 4a71b452c..67b1f4de6 100644
--- a/scripts/release.ts
+++ b/scripts/release.ts
@@ -6,12 +6,7 @@ const nextH2RE = /^## /gm
release({
repo: 'vite-plugin-react',
- packages: [
- 'plugin-react',
- 'plugin-react-swc',
- 'plugin-react-oxc',
- 'plugin-rsc',
- ],
+ packages: ['plugin-react', 'plugin-react-swc', 'plugin-rsc'],
getPkgDir(pkg) {
if (pkg === 'plugin-react-swc') {
return `packages/${pkg}/dist`