Recorder.js imports H264MP4Encoder at the top level, preventing tree-shaking even when a different encoder is provided.
This is problematic because h264-mp4-encoder:
- Has broken browser support (missing
browser field in package.json)
- Is abandoned (last commit 2020, 11 unmerged security PRs)
- Causes CSP violations:
connect-src blocked for data:application/octet-stream;base64,...
- Triggers Vite warnings about externalized Node.js modules (
path, fs, crypto)
Suggestion: Use dynamic imports for fallback encoders so they're only loaded when needed.
Javascript, am I right? 😉
Recorder.jsimportsH264MP4Encoderat the top level, preventing tree-shaking even when a different encoder is provided.This is problematic because
h264-mp4-encoder:browserfield in package.json)connect-srcblocked fordata:application/octet-stream;base64,...path,fs,crypto)Suggestion: Use dynamic imports for fallback encoders so they're only loaded when needed.
Javascript, am I right? 😉