[BUG] Large Video Waveform Extraction Reads Entire File Into Memory and Crashes Browser Tabs#1051
[BUG] Large Video Waveform Extraction Reads Entire File Into Memory and Crashes Browser Tabs#1051shubh-gitpush wants to merge 11 commits into
Conversation
…stream main version
|
@shubh-gitpush is attempting to deploy a commit to the magic-peach1's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
👋 Thanks for your PR, @shubh-gitpush!Welcome to Reframe — a browser-based video editor built for everyone 🎬
What happens next
Quick checklist
Useful links
Happy coding! 🎉 |
|
@shubh-gitpush The changes here look solid — preventing OOM crashes by capping waveform extraction at 50MB, adding timeouts, and gracefully falling back with a UI message is exactly the right approach. The However, CI did not run the build/lint/typecheck checks for this PR — only Please make a small push to your branch to re-trigger the full CI suite: git commit --allow-empty -m 'ci: trigger checks'
git pushAlso, please fill in the checklist items (GitHub username, contribution level) in the PR description. Once all checks pass, this will be ready to merge! |
Description
the video-related changes made on the video branch to prevent browser OOMs during waveform extraction, fix SSR hydration mismatches, and harden metadata extraction. The changes prioritize safety for large uploads while preserving existing behavior for small files.
--Prevent catastrophic browser memory spikes caused by calling File.arrayBuffer() on very large uploads.
--Fail waveform extraction gracefully and provide a fallback UI for skipped extraction.
--Avoid hydration mismatches by deferring browser-only reads to client useEffect.
--Add timeouts and guards when decoding media metadata or audio data to avoid hangs.
Related Issue-
#1013
Type of Contribution
Participant Info
Screen Recording
Recording / Loom link: ## Checklist
bun run lintpasses (no ESLint errors)bunx tsc --noEmitpasses (no TypeScript errors)aria-label/ accessible namesconsole.logstatements left in