Set up React Compiler (#2030)

- Added required deps: `react-compiler-runtime` + `babel-plugin-react-compiler` in `frontend/package.json:70` and `frontend/package.json:99`, plus `remote-frontend/package.json:20` and `remote-frontend/package.json:30` (lockfile updated in `pnpm-lock.yaml`).
This commit is contained in:
Theo Browne
2026-01-14 01:11:07 -08:00
committed by GitHub
parent 1fd114b75d
commit 2af42a7600
5 changed files with 67 additions and 2 deletions

View File

@@ -67,6 +67,7 @@
"lucide-react": "^0.539.0", "lucide-react": "^0.539.0",
"posthog-js": "^1.276.0", "posthog-js": "^1.276.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-compiler-runtime": "^1.0.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-dropzone": "^14.3.8", "react-dropzone": "^14.3.8",
"react-hotkeys-hook": "^5.1.0", "react-hotkeys-hook": "^5.1.0",
@@ -95,6 +96,7 @@
"@typescript-eslint/parser": "^6.21.0", "@typescript-eslint/parser": "^6.21.0",
"@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.16", "autoprefixer": "^10.4.16",
"babel-plugin-react-compiler": "^1.0.0",
"eslint": "^8.55.0", "eslint": "^8.55.0",
"eslint-config-prettier": "^10.1.5", "eslint-config-prettier": "^10.1.5",
"eslint-plugin-check-file": "^2.8.0", "eslint-plugin-check-file": "^2.8.0",

View File

@@ -51,7 +51,22 @@ export default schemas;
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
react(), react({
babel: {
plugins: [
[
"babel-plugin-react-compiler",
{
target: "18",
sources: [path.resolve(__dirname, "src")],
environment: {
enableResetCacheOnSourceFileChanges: true,
},
},
],
],
},
}),
sentryVitePlugin({ org: "bloop-ai", project: "vibe-kanban" }), sentryVitePlugin({ org: "bloop-ai", project: "vibe-kanban" }),
executorSchemasPlugin(), executorSchemasPlugin(),
], ],

28
pnpm-lock.yaml generated
View File

@@ -173,6 +173,9 @@ importers:
react: react:
specifier: ^18.2.0 specifier: ^18.2.0
version: 18.3.1 version: 18.3.1
react-compiler-runtime:
specifier: ^1.0.0
version: 1.0.0(react@18.3.1)
react-dom: react-dom:
specifier: ^18.2.0 specifier: ^18.2.0
version: 18.3.1(react@18.3.1) version: 18.3.1(react@18.3.1)
@@ -252,6 +255,9 @@ importers:
autoprefixer: autoprefixer:
specifier: ^10.4.16 specifier: ^10.4.16
version: 10.4.21(postcss@8.5.6) version: 10.4.21(postcss@8.5.6)
babel-plugin-react-compiler:
specifier: ^1.0.0
version: 1.0.0
eslint: eslint:
specifier: ^8.55.0 specifier: ^8.55.0
version: 8.57.1 version: 8.57.1
@@ -321,6 +327,9 @@ importers:
react: react:
specifier: ^18.2.0 specifier: ^18.2.0
version: 18.3.1 version: 18.3.1
react-compiler-runtime:
specifier: ^1.0.0
version: 1.0.0(react@18.3.1)
react-dom: react-dom:
specifier: ^18.2.0 specifier: ^18.2.0
version: 18.3.1(react@18.3.1) version: 18.3.1(react@18.3.1)
@@ -343,6 +352,9 @@ importers:
autoprefixer: autoprefixer:
specifier: ^10.4.16 specifier: ^10.4.16
version: 10.4.21(postcss@8.5.6) version: 10.4.21(postcss@8.5.6)
babel-plugin-react-compiler:
specifier: ^1.0.0
version: 1.0.0
postcss: postcss:
specifier: ^8.4.32 specifier: ^8.4.32
version: 8.5.6 version: 8.5.6
@@ -2163,6 +2175,9 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.1.0 postcss: ^8.1.0
babel-plugin-react-compiler@1.0.0:
resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==}
balanced-match@1.0.2: balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -3085,6 +3100,11 @@ packages:
queue-microtask@1.2.3: queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
react-compiler-runtime@1.0.0:
resolution: {integrity: sha512-rRfjYv66HlG8896yPUDONgKzG5BxZD1nV9U6rkm+7VCuvQc903C4MjcoZR4zPw53IKSOX9wMQVpA1IAbRtzQ7w==}
peerDependencies:
react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental
react-dom@18.3.1: react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
peerDependencies: peerDependencies:
@@ -5643,6 +5663,10 @@ snapshots:
postcss: 8.5.6 postcss: 8.5.6
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
babel-plugin-react-compiler@1.0.0:
dependencies:
'@babel/types': 7.27.6
balanced-match@1.0.2: {} balanced-match@1.0.2: {}
binary-extensions@2.3.0: {} binary-extensions@2.3.0: {}
@@ -6544,6 +6568,10 @@ snapshots:
queue-microtask@1.2.3: {} queue-microtask@1.2.3: {}
react-compiler-runtime@1.0.0(react@18.3.1):
dependencies:
react: 18.3.1
react-dom@18.3.1(react@18.3.1): react-dom@18.3.1(react@18.3.1):
dependencies: dependencies:
loose-envify: 1.4.0 loose-envify: 1.4.0

View File

@@ -17,6 +17,7 @@
"posthog-js": "^1.283.0", "posthog-js": "^1.283.0",
"prettier": "^3.6.1", "prettier": "^3.6.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-compiler-runtime": "^1.0.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-router-dom": "^7.9.5", "react-router-dom": "^7.9.5",
"tailwind-merge": "^2.6.0" "tailwind-merge": "^2.6.0"
@@ -26,6 +27,7 @@
"@types/react-dom": "^18.2.17", "@types/react-dom": "^18.2.17",
"@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.16", "autoprefixer": "^10.4.16",
"babel-plugin-react-compiler": "^1.0.0",
"postcss": "^8.4.32", "postcss": "^8.4.32",
"tailwindcss": "^3.4.0", "tailwindcss": "^3.4.0",
"typescript": "^5.9.2", "typescript": "^5.9.2",

View File

@@ -1,8 +1,26 @@
import path from 'path'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react' import react from '@vitejs/plugin-react'
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [
react({
babel: {
plugins: [
[
'babel-plugin-react-compiler',
{
target: '18',
sources: [path.resolve(__dirname, 'src')],
environment: {
enableResetCacheOnSourceFileChanges: true,
},
},
],
],
},
}),
],
server: { server: {
port: 3002, port: 3002,
allowedHosts: [ allowedHosts: [