From 1dba853abf4555c583167c8c26a44beca2455eb5 Mon Sep 17 00:00:00 2001 From: planetazuzu Date: Fri, 2 Jan 2026 10:18:09 +0100 Subject: [PATCH] fix: mejorar code splitting para evitar errores useLayoutEffect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Añadir react-resizable-panels, input-otp, cmdk, vaul a chunks específicos - Protección adicional en vendor-other para excluir dependencias de React - Asegurar que todas las dependencias de React se cargan después de vendor-react --- vite.config.ts | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 788e121e..831d39e1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -98,8 +98,46 @@ export default defineConfig({ if (id.includes('sonner')) { return 'vendor-toasts'; } - // Resto de node_modules pequeños (NO incluir nada que dependa de React) - // Si algo aquí usa React, moverlo arriba + // React Resizable Panels (depende de React) + if (id.includes('react-resizable-panels')) { + return 'vendor-panels'; + } + // Input OTP (puede usar React) + if (id.includes('input-otp')) { + return 'vendor-forms'; // Agrupar con otros formularios + } + // CMDK (Command Menu, puede usar React) + if (id.includes('cmdk')) { + return 'vendor-ui'; // Agrupar con UI + } + // Vaul (Drawer, usa React) + if (id.includes('vaul')) { + return 'vendor-ui'; // Agrupar con UI + } + // Resto de node_modules pequeños (SOLO cosas que NO usan React) + // Excluir explícitamente cualquier cosa que pueda usar React + if ( + id.includes('react') || + id.includes('@radix') || + id.includes('@tanstack') || + id.includes('lucide') || + id.includes('recharts') || + id.includes('embla') || + id.includes('next-themes') || + id.includes('sonner') || + id.includes('react-hook-form') || + id.includes('react-day-picker') || + id.includes('react-markdown') || + id.includes('react-router') || + id.includes('react-resizable') || + id.includes('input-otp') || + id.includes('cmdk') || + id.includes('vaul') + ) { + // Si contiene algo relacionado con React, no debe estar aquí + // Forzar a un chunk específico (vendor-ui como fallback) + return 'vendor-ui'; + } return 'vendor-other'; }