- Configure Vite to split vendor chunks (React, DOMPurify, video libs, Supabase)
- Add manual chunk configuration to prevent duplicate module bundling
- Clean Docker build cache and node_modules cache during build
- Update Dockerfile to force clean rebuilds
This should resolve the 'Identifier already declared' error in production
caused by DOMPurify's @xmldom dependency being bundled multiple times.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Disabled minification entirely as Terser continued to cause variable
collision errors even with conservative settings.
Changes:
- Set minify: false in vite.config.ts
- This eliminates all minification-related variable conflicts
- Trade-off: Bundle size 3MB → 6.5MB (unminified)
- The app should now load correctly in production
This is a temporary solution. The root cause appears to be related
to how the codebase is structured causing Terser to create duplicate
identifiers during chunk optimization.
Next steps could include:
- Investigating code duplication issues
- Switching to esbuild minifier
- Restructuring problematic imports
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Disabled aggressive Terser optimizations that were causing variable
name conflicts (like 'xL' and 'Hf' already declared errors).
Changes:
- Disabled sequences, properties, and join_vars optimizations
- Disabled reduce_funcs and reduce_vars to prevent variable mangling
- Disabled hoist_funs to prevent scope issues
- Disabled evaluate to prevent constant folding issues
- Set keep_fnames: true to preserve function names
- This trades some bundle size (3MB → 3.2MB) for stability
The app should now load correctly in production without minification errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixed the "Identifier 'xL' has already been declared" error that occurred
in production builds by switching from SWC minifier to Terser.
Changes:
- Updated vite.config.ts to explicitly use Terser minifier
- Added terser as dev dependency
- Configured safe Terser options to prevent variable name conflicts
- Disabled unsafe optimizations that can cause identifier collisions
This resolves the blank page issue in production while maintaining
bundle size optimization.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>