From 004698b6045c8f986764fe05ef72c2aa4234d0c0 Mon Sep 17 00:00:00 2001 From: robin Date: Mon, 19 Jan 2026 22:47:01 +0100 Subject: [PATCH] feat: Enable React Compiler for automatic memoization - Install babel-plugin-react-compiler@1.0.0 - Add reactCompiler: true to next.config.mjs - React 19 compiler will auto-optimize useMemo/useCallback --- next.config.mjs | 2 ++ package.json | 1 + pnpm-lock.yaml | 21 ++++++++++++++++----- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index a345725..8c26852 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -5,6 +5,8 @@ const nextConfig = { output: 'standalone', // Enable source maps for Sentry stack traces in production productionBrowserSourceMaps: !!process.env.GLITCHTIP_DSN, + // React Compiler for automatic memoization (React 19+) + reactCompiler: true, experimental: { serverActions: { bodySizeLimit: '10mb', diff --git a/package.json b/package.json index cd04eb1..7571fd0 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "@types/react-dom": "^19.0.0", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^5.1.2", + "babel-plugin-react-compiler": "^1.0.0", "eslint": "^8", "eslint-config-next": "16.1.0", "eslint-plugin-security": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c51a23..5c1e394 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 1.11.0 '@sentry/nextjs': specifier: ^10.34.0 - version: 10.34.0(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(next@16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.104.1) + version: 10.34.0(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(next@16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.104.1) '@supabase/ssr': specifier: ^0.5.2 version: 0.5.2(@supabase/supabase-js@2.88.0) @@ -64,7 +64,7 @@ importers: version: 5.1.6 next: specifier: 16.1.0 - version: 16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) openai: specifier: ^6.15.0 version: 6.15.0(ws@8.18.3)(zod@3.25.76) @@ -123,6 +123,9 @@ importers: '@vitejs/plugin-react': specifier: ^5.1.2 version: 5.1.2(vite@7.3.0(@types/node@20.19.27)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)) + babel-plugin-react-compiler: + specifier: ^1.0.0 + version: 1.0.0 eslint: specifier: ^8 version: 8.57.1 @@ -1935,6 +1938,9 @@ packages: react-native-b4a: optional: true + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5192,7 +5198,7 @@ snapshots: '@sentry/core@10.34.0': {} - '@sentry/nextjs@10.34.0(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(next@16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.104.1)': + '@sentry/nextjs@10.34.0(@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.4.0(@opentelemetry/api@1.9.0))(next@16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.104.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.39.0 @@ -5205,7 +5211,7 @@ snapshots: '@sentry/react': 10.34.0(react@19.2.3) '@sentry/vercel-edge': 10.34.0 '@sentry/webpack-plugin': 4.6.2(webpack@5.104.1) - next: 16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) rollup: 4.53.5 stacktrace-parser: 0.1.11 transitivePeerDependencies: @@ -6043,6 +6049,10 @@ snapshots: b4a@1.7.3: {} + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.28.5 + balanced-match@1.0.2: {} bare-events@2.8.2: {} @@ -7412,7 +7422,7 @@ snapshots: neo-async@2.6.2: {} - next@16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@16.1.0(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@next/env': 16.1.0 '@swc/helpers': 0.5.15 @@ -7433,6 +7443,7 @@ snapshots: '@next/swc-win32-x64-msvc': 16.1.0 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.57.0 + babel-plugin-react-compiler: 1.0.0 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core'