Building a Video Player from Scratch with React Native
summary
Four-year retrospective of a custom React Native video player that scales to a 1.5M-user platform and 300 courses, built on AWS-encoded HLS served via CDN and using React Native Video. Key fixes: forced ExoPlayer (resolved muted audio and buffering after ~8 months and ~100 real-user A/B tests), a subtitle parser + binary search hook for styled, draggable transcripts, and two background-audio approaches (dual-player sync vs React Native Music Control, which proved unmaintained). Android still shows ~10% session crashes on some devices; Firebase Crashlytics used for tracking.
AI-written summary · about
chapters (24)
- 0:00Introduction
- 2:34Introduction
- 3:35Project overview
- 5:01Video player evolution
- 6:46What went well during development
- 7:07Streaming infrastructure
- 8:31Subtitles and transcripts
- 11:58iOS performance
- 13:22Android challenges
- 14:25Media Player vs ExoPlayer
- 16:31Forcing ExoPlayer testing
- 18:41Background audio issues
- 20:02Syncing two players
- 21:26Music Control module
- 23:53Music Control maintenance
- 24:38iOS vs Android differences
- 27:05Android crash rates
- 27:47Dependency management lessons
- 28:31Costs of many modules
- 29:34Removing vs not developing
- 30:58Cross-platform challenges
- 31:41Action items
- 32:21Updating React Native Video to version 6.0
- 33:44Q&A
related talks
20mA 4-Year Retrospective : Lessons Learned from Building a Video Player from Scratch with React Native
40mPushing React Native outside the comfort zone
32mReact Native newcomers built first app – vod.pl app case study
19mMaking videos in React Native
11mLearning React Native as a Junior Engineer
23mPorting Your SDK To React Native
25mBuild a React Native App for TV in 15 minutes
31mUsing React Native to ship fast and navigate performance improvements
