From d7bdf3b9d7432f3fc4feba8390f762c9d58ecf81 Mon Sep 17 00:00:00 2001 From: Nicolas Varrot Date: Wed, 11 Feb 2026 09:21:08 +0000 Subject: [PATCH] perf: code-split vendor chunks to eliminate 500kB bundle warning Split the single 713kB JS bundle into separate chunks: - react-vendor: React core (~192kB) - markdown: react-markdown + remark/rehype + highlight.js (~476kB) - icons: lucide-react (~6kB) - ui: Radix UI components - index: app code (~37kB) Improves caching (vendor chunks change less often) and eliminates the Vite chunk size warning. --- vite.config.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/vite.config.ts b/vite.config.ts index 0616e59..b4c8602 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,4 +4,24 @@ import tailwindcss from '@tailwindcss/vite' export default defineConfig({ plugins: [react(), tailwindcss()], + build: { + rollupOptions: { + output: { + manualChunks(id) { + if (id.includes('node_modules/react-dom') || id.includes('node_modules/react/')) { + return 'react-vendor' + } + if (id.includes('node_modules/react-markdown') || id.includes('node_modules/remark-') || id.includes('node_modules/rehype-') || id.includes('node_modules/unified') || id.includes('node_modules/mdast') || id.includes('node_modules/hast') || id.includes('node_modules/micromark') || id.includes('node_modules/highlight.js')) { + return 'markdown' + } + if (id.includes('node_modules/lucide-react')) { + return 'icons' + } + if (id.includes('node_modules/@radix-ui')) { + return 'ui' + } + }, + }, + }, + }, })