diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 751bf24e..7f248d56 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -2,7 +2,13 @@ extends: ["config:base", "schedule:weekly", "group:allNonMajor"], labels: ["dependencies"], rangeStrategy: "bump", - packageRules: [{ depTypeList: ["peerDependencies"], enabled: false }], + packageRules: [ + { depTypeList: ["peerDependencies"], enabled: false }, + { + "matchFileNames": ["**/react-18/**"], + "ignoreDeps": ["react", "react-dom", "@types/react", "@types/react-dom"] + } + ], ignoreDeps: [ "generouted", // testing lib shipping JSX (new version ship transpiled JS) "prettier", // waiting for stable choice on ternaries diff --git a/playground/base-path/package.json b/playground/base-path/package.json index d39caf4e..ad100824 100644 --- a/playground/base-path/package.json +++ b/playground/base-path/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/class-components/package.json b/playground/class-components/package.json index 5ece982f..126ed56b 100644 --- a/playground/class-components/package.json +++ b/playground/class-components/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/decorators/package.json b/playground/decorators/package.json index 988fb865..c28c92a5 100644 --- a/playground/decorators/package.json +++ b/playground/decorators/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/emotion-plugin/package.json b/playground/emotion-plugin/package.json index 45cf8239..4e3256c4 100644 --- a/playground/emotion-plugin/package.json +++ b/playground/emotion-plugin/package.json @@ -10,12 +10,12 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist", "@swc/plugin-emotion": "^4.0.2" } diff --git a/playground/emotion/package.json b/playground/emotion/package.json index 931f2c80..45ee381d 100644 --- a/playground/emotion/package.json +++ b/playground/emotion/package.json @@ -10,12 +10,12 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/hmr/package.json b/playground/hmr/package.json index 1c8893d1..e7a8cb5c 100644 --- a/playground/hmr/package.json +++ b/playground/hmr/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/mdx/package.json b/playground/mdx/package.json index d94938ef..5439d2d9 100644 --- a/playground/mdx/package.json +++ b/playground/mdx/package.json @@ -8,13 +8,13 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { "@mdx-js/rollup": "^3.0.1", - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/react-18/__tests__/react-18.spec.ts b/playground/react-18/__tests__/react-18.spec.ts new file mode 100644 index 00000000..c216a70b --- /dev/null +++ b/playground/react-18/__tests__/react-18.spec.ts @@ -0,0 +1,97 @@ +import { expect, test } from "@playwright/test"; +import { + setupDevServer, + setupBuildAndPreview, + setupWaitForLogs, +} from "../../utils.ts"; + +test("Default build", async ({ page }) => { + const { testUrl, server } = await setupBuildAndPreview("react-18"); + await page.goto(testUrl); + + await page.click("button"); + await expect(page.locator("button")).toHaveText("count is 1"); + + await server.httpServer.close(); +}); + +test("HMR invalidate", async ({ page }) => { + const { testUrl, server, editFile } = await setupDevServer("react-18"); + const waitForLogs = await setupWaitForLogs(page); + await page.goto(testUrl); + await waitForLogs("[vite] connected."); + + await page.click("button"); + await expect(page.locator("button")).toHaveText("count is 1"); + + editFile("src/App.tsx", ["{count}", "{count}!"]); + await waitForLogs("[vite] hot updated: /src/App.tsx"); + await expect(page.locator("button")).toHaveText("count is 1!"); + + // Edit component + editFile("src/TitleWithExport.tsx", ["Vite +", "Vite *"]); + await waitForLogs("[vite] hot updated: /src/TitleWithExport.tsx"); + + // Edit export + editFile("src/TitleWithExport.tsx", ["React", "React!"]); + await waitForLogs( + '[vite] invalidate /src/TitleWithExport.tsx: Could not Fast Refresh ("framework" export is incompatible). Learn more at https://github.com/vitejs/vite-plugin-react-swc#consistent-components-exports', + "[vite] hot updated: /src/App.tsx", + ); + await expect(page.locator("h1")).toHaveText("Vite * React!"); + + // Add non-component export + editFile("src/TitleWithExport.tsx", [ + 'React!";', + 'React!";\nexport const useless = 3;', + ]); + await waitForLogs( + "[vite] invalidate /src/TitleWithExport.tsx: Could not Fast Refresh (new export)", + "[vite] hot updated: /src/App.tsx", + ); + + // Add component export + editFile("src/TitleWithExport.tsx", [ + ";", + ";\nexport const Title2 = () =>

Title2

;", + ]); + await waitForLogs("[vite] hot updated: /src/TitleWithExport.tsx"); + + // Import new component + editFile( + "src/App.tsx", + ["import { TitleWithExport", "import { TitleWithExport, Title2"], + ["", " "], + ); + await waitForLogs("[vite] hot updated: /src/App.tsx"); + await expect(page.locator("h2")).toHaveText("Title2"); + + // Remove component export + editFile("src/TitleWithExport.tsx", [ + "\nexport const Title2 = () =>

Title2

;", + "", + ]); + await waitForLogs( + "[vite] invalidate /src/TitleWithExport.tsx: Could not Fast Refresh (export removed)", + "[vite] hot updated: /src/App.tsx", + /Failed to reload \/src\/App\.tsx. This could be due to syntax errors or importing non-existent modules\. \(see errors above\)$/, + ); + + // Remove usage from App + editFile( + "src/App.tsx", + ["import { TitleWithExport, Title2", "import { TitleWithExport"], + [" ", ""], + ); + await waitForLogs("[vite] hot updated: /src/App.tsx"); + await expect(page.locator("button")).toHaveText("count is 1!"); + + // Remove useless export + editFile("src/TitleWithExport.tsx", ["\nexport const useless = 3;", ""]); + await waitForLogs( + "[vite] invalidate /src/TitleWithExport.tsx: Could not Fast Refresh (export removed)", + "[vite] hot updated: /src/App.tsx", + ); + + await server.close(); +}); diff --git a/playground/react-18/index.html b/playground/react-18/index.html new file mode 100644 index 00000000..f828b817 --- /dev/null +++ b/playground/react-18/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/playground/react-18/package.json b/playground/react-18/package.json new file mode 100644 index 00000000..cc31a894 --- /dev/null +++ b/playground/react-18/package.json @@ -0,0 +1,19 @@ +{ + "name": "playground-react-18", + "type": "module", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react-swc": "../../dist" + } +} diff --git a/playground/react-18/public/vite.svg b/playground/react-18/public/vite.svg new file mode 100644 index 00000000..4dcd77ad --- /dev/null +++ b/playground/react-18/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/playground/react-18/src/App.css b/playground/react-18/src/App.css new file mode 100644 index 00000000..2c5e2ef5 --- /dev/null +++ b/playground/react-18/src/App.css @@ -0,0 +1,41 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/playground/react-18/src/App.tsx b/playground/react-18/src/App.tsx new file mode 100644 index 00000000..3b8a0699 --- /dev/null +++ b/playground/react-18/src/App.tsx @@ -0,0 +1,31 @@ +import { useState } from "react"; +import reactLogo from "./react.svg"; +import "./App.css"; +import { TitleWithExport, framework } from "./TitleWithExport.tsx"; + +export const App = () => { + const [count, setCount] = useState(0); + + return ( +
+ + +
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and {framework} logos to learn more +

+
+ ); +}; diff --git a/playground/react-18/src/TitleWithExport.tsx b/playground/react-18/src/TitleWithExport.tsx new file mode 100644 index 00000000..cf01e5c3 --- /dev/null +++ b/playground/react-18/src/TitleWithExport.tsx @@ -0,0 +1,3 @@ +export const framework = "React"; + +export const TitleWithExport = () =>

Vite + {framework}

; diff --git a/playground/react-18/src/index.css b/playground/react-18/src/index.css new file mode 100644 index 00000000..917888c1 --- /dev/null +++ b/playground/react-18/src/index.css @@ -0,0 +1,70 @@ +:root { + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/playground/react-18/src/index.tsx b/playground/react-18/src/index.tsx new file mode 100644 index 00000000..3451de4b --- /dev/null +++ b/playground/react-18/src/index.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import { App } from "./App.tsx"; +import "./index.css"; + +createRoot(document.getElementById("root")!).render( + + + , +); diff --git a/playground/react-18/src/react.svg b/playground/react-18/src/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/playground/react-18/src/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/playground/react-18/tsconfig.json b/playground/react-18/tsconfig.json new file mode 100644 index 00000000..6a2d6703 --- /dev/null +++ b/playground/react-18/tsconfig.json @@ -0,0 +1,23 @@ +{ + "include": ["src", "vite.config.ts"], + "compilerOptions": { + "module": "ESNext", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "target": "ESNext", + "jsx": "react-jsx", + "types": ["vite/client"], + "noEmit": true, + "isolatedModules": true, + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "useUnknownInCatchVariables": true + } +} diff --git a/playground/react-18/vite.config.ts b/playground/react-18/vite.config.ts new file mode 100644 index 00000000..c6251603 --- /dev/null +++ b/playground/react-18/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; + +export default defineConfig({ + plugins: [react()], +}); diff --git a/playground/shadow-export/package.json b/playground/shadow-export/package.json index 3827cd05..ea48a7ae 100644 --- a/playground/shadow-export/package.json +++ b/playground/shadow-export/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/styled-components/package.json b/playground/styled-components/package.json index 9677c83b..92210d0c 100644 --- a/playground/styled-components/package.json +++ b/playground/styled-components/package.json @@ -8,15 +8,15 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-is": "^18.3.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-is": "^19.0.0", "styled-components": "^6.1.13" }, "devDependencies": { "@swc/plugin-styled-components": "^3.0.2", - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@types/styled-components": "^5.1.34", "@vitejs/plugin-react-swc": "../../dist" } diff --git a/playground/ts-lib/package.json b/playground/ts-lib/package.json index 7915017e..918f093c 100644 --- a/playground/ts-lib/package.json +++ b/playground/ts-lib/package.json @@ -10,13 +10,13 @@ "dependencies": { "@generouted/react-router": "^1.19.6", "generouted": "1.11.7", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", "react-router-dom": "^6.26.2" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/playground/worker/package.json b/playground/worker/package.json index 67068d35..001c2518 100644 --- a/playground/worker/package.json +++ b/playground/worker/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", "@vitejs/plugin-react-swc": "../../dist" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6428af2..66e0ddd8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,18 +49,18 @@ importers: playground/base-path: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -68,18 +68,18 @@ importers: playground/class-components: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -87,18 +87,18 @@ importers: playground/decorators: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -107,23 +107,23 @@ importers: dependencies: '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.10)(react@18.3.1) + version: 11.13.3(@types/react@19.0.8)(react@19.0.0) '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -132,26 +132,26 @@ importers: dependencies: '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.10)(react@18.3.1) + version: 11.13.3(@types/react@19.0.8)(react@19.0.0) '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@swc/plugin-emotion': specifier: ^4.0.2 version: 4.0.2 '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -159,18 +159,18 @@ importers: playground/hmr: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -178,26 +178,26 @@ importers: playground/mdx: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@mdx-js/rollup': specifier: ^3.0.1 version: 3.0.1(rollup@4.23.0) '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist - playground/shadow-export: + playground/react-18: dependencies: react: specifier: ^18.3.1 @@ -207,11 +207,30 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^18.3.18 + version: 18.3.18 + '@types/react-dom': + specifier: ^18.3.5 + version: 18.3.5(@types/react@18.3.18) + '@vitejs/plugin-react-swc': + specifier: ../../dist + version: link:../../dist + + playground/shadow-export: + dependencies: + react: + specifier: ^19.0.0 + version: 19.0.0 + react-dom: + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) + devDependencies: + '@types/react': + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -219,27 +238,27 @@ importers: playground/styled-components: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) react-is: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 styled-components: specifier: ^6.1.13 - version: 6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@swc/plugin-styled-components': specifier: ^3.0.2 version: 3.0.2 '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@types/styled-components': specifier: ^5.1.34 version: 5.1.34 @@ -251,26 +270,26 @@ importers: dependencies: '@generouted/react-router': specifier: ^1.19.6 - version: 1.19.6(react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@6.0.0(@types/node@20.16.10)) + version: 1.19.6(react-router-dom@6.26.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.0.0(@types/node@20.16.10)) generouted: specifier: 1.11.7 version: 1.11.7(vite@6.0.0(@types/node@20.16.10)) react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) react-router-dom: specifier: ^6.26.2 - version: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.26.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -278,18 +297,18 @@ importers: playground/worker: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@types/react': - specifier: ^18.3.10 - version: 18.3.10 + specifier: ^19.0.8 + version: 19.0.8 '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react-swc': specifier: ../../dist version: link:../../dist @@ -927,14 +946,24 @@ packages: '@types/parse-json@4.0.0': resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - '@types/prop-types@15.7.5': - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.5': + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react-dom@19.0.3': + resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==} + peerDependencies: + '@types/react': ^19.0.0 - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} - '@types/react@18.3.10': - resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==} + '@types/react@19.0.8': + resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==} '@types/styled-components@5.1.34': resolution: {integrity: sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==} @@ -1546,11 +1575,16 @@ packages: peerDependencies: react: ^18.3.1 + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.0.0: + resolution: {integrity: sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==} react-router-dom@6.26.2: resolution: {integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==} @@ -1569,6 +1603,10 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -1608,6 +1646,9 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -1861,19 +1902,19 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1)': + '@emotion/react@11.13.3(@types/react@19.0.8)(react@19.0.0)': dependencies: '@babel/runtime': 7.20.6 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.0 '@emotion/serialize': 1.3.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0) '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.10 + '@types/react': 19.0.8 '@emotion/serialize@1.3.0': dependencies: @@ -1893,18 +1934,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)': dependencies: '@babel/runtime': 7.20.6 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.13.3(@types/react@18.3.10)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@19.0.8)(react@19.0.0) '@emotion/serialize': 1.3.0 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0) '@emotion/utils': 1.4.0 - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.10 + '@types/react': 19.0.8 '@emotion/unitless@0.10.0': {} @@ -1912,9 +1953,9 @@ snapshots: '@emotion/unitless@0.9.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)': + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 '@emotion/utils@1.4.0': {} @@ -2063,12 +2104,12 @@ snapshots: '@esbuild/win32-x64@0.24.0': optional: true - '@generouted/react-router@1.19.6(react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@6.0.0(@types/node@20.16.10))': + '@generouted/react-router@1.19.6(react-router-dom@6.26.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.0.0(@types/node@20.16.10))': dependencies: fast-glob: 3.3.2 generouted: 1.19.6(vite@6.0.0(@types/node@20.16.10)) - react: 18.3.1 - react-router-dom: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-router-dom: 6.26.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: 6.0.0(@types/node@20.16.10) '@mdx-js/mdx@3.0.1': @@ -2268,7 +2309,7 @@ snapshots: '@types/hoist-non-react-statics@3.3.1': dependencies: - '@types/react': 18.3.10 + '@types/react': 19.0.8 hoist-non-react-statics: 3.3.2 '@types/jsonfile@6.1.1': @@ -2289,21 +2330,29 @@ snapshots: '@types/parse-json@4.0.0': {} - '@types/prop-types@15.7.5': {} + '@types/prop-types@15.7.14': {} - '@types/react-dom@18.3.0': + '@types/react-dom@18.3.5(@types/react@18.3.18)': dependencies: - '@types/react': 18.3.10 + '@types/react': 18.3.18 - '@types/react@18.3.10': + '@types/react-dom@19.0.3(@types/react@19.0.8)': + dependencies: + '@types/react': 19.0.8 + + '@types/react@18.3.18': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@types/react@19.0.8': dependencies: - '@types/prop-types': 15.7.5 csstype: 3.1.3 '@types/styled-components@5.1.34': dependencies: '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 18.3.10 + '@types/react': 19.0.8 csstype: 3.1.2 '@types/stylis@4.2.5': {} @@ -3161,26 +3210,33 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + react-is@16.13.1: {} - react-is@18.3.1: {} + react-is@19.0.0: {} - react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@6.26.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@remix-run/router': 1.19.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router: 6.26.2(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-router: 6.26.2(react@19.0.0) - react-router@6.26.2(react@18.3.1): + react-router@6.26.2(react@19.0.0): dependencies: '@remix-run/router': 1.19.2 - react: 18.3.1 + react: 19.0.0 react@18.3.1: dependencies: loose-envify: 1.4.0 + react@19.0.0: {} + regenerator-runtime@0.13.11: {} remark-mdx@3.0.1: @@ -3251,6 +3307,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.25.0: {} + semver@7.6.3: {} shallowequal@1.1.0: {} @@ -3288,7 +3346,7 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + styled-components@6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@emotion/is-prop-valid': 1.2.2 '@emotion/unitless': 0.8.1 @@ -3296,8 +3354,8 @@ snapshots: css-to-react-native: 3.2.0 csstype: 3.1.3 postcss: 8.4.38 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) shallowequal: 1.1.0 stylis: 4.3.2 tslib: 2.6.2