1

I’m building a Chrome extension using React 18 and Vite 5, trying to implement code splitting for optimization. Despite excluding background scripts from splitting, I’m getting chunk loading errors. Problem Context: • Using React.lazy for component-level code splitting • Configured Vite to exclude background.js from splitting • Components load fine in regular React app, but fail in extension

vite.config.ts :

export default defineConfig({ build: { rollupOptions: { input: { main: path.resolve(__dirname, 'index.html'), background: path.resolve(__dirname, 'src/background.ts') }, output: { entryFileNames: '[name].js', chunkFileNames: '[name].js', assetFileNames: '[name].[ext]' manualChunks: (id) => { if (id.includes('background.js')) return undefined; return 'vendor'; } } } } }); 

popup component looks like this :

const LazyComponent = React.lazy(() => import('./PopupSection')); function Popup() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } 

What I’ve Tried so far is to : 1. Excluded background script from manualChunks 2. Verified manifest includes all chunk paths in web_accessible_resources 3. Tested with dynamic imports without React.lazy - same issue 4. Regular React app works with same config, extension fails Question: Why does code splitting fail in the Chrome extension environment despite excluding background scripts from splitting? How can I properly implement component-level lazy loading while maintaining extension functionality? Are there special considerations for Vite’s build process in extensions?

1
  • Currently you export one config. Try exporting an array of build configs (main + background). Commented Feb 7 at 10:49

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.