Mux Data measures video quality of service, including startup time, image quality, and rebuffering. Jhaveri explains how slow startup and buffering can drive viewers away, while mismatched video and player sizes can waste bandwidth or make playback look blocky. Aggregated data helps teams compare performance across browsers, operating systems, and regions.
Porting Your SDK To React Native
Speaker
Dylan Jhaveri, senior software engineer on Mux’s developer experience team, speaks at React Native EU about porting Mux’s video analytics SDK to React Native Video.
Mux maintains 22 player level SDKs using core libraries in JavaScript, Objective-C, and Java. The cores hold metric calculations and data submission; each lightweight wrapper maps a player’s events into the core library’s API. This lets a small team support players with different callback names and behaviors.
The JavaScript core initially failed in React Native because it used the browser API `window.performance.timing` and the `platform.js` library. Jhaveri guarded the browser API and used React Native’s `Platform` module for operating system details. He then built a higher order component wrapper that preserves the usual video component props and callbacks while adding Mux metadata and performance tracking.
The integration was in beta, with some customers using it in production, and had remaining callback inconsistencies between iOS and Android. Mux considered hooking directly into AVPlayer and ExoPlayer, which already had supported SDKs, but chose to use React Native Video’s exposed APIs. Depending on its underlying players could break tracking when those implementation details changed without a public API change.
Takeaways
- Keep shared business logic in a core library and make player specific SDKs thin event adapters.
- Check browser APIs and dependencies when bringing JavaScript libraries into React Native; use React Native modules where needed.
- Wrap existing components in a way that preserves their props and callbacks to ease adoption.
- Integrate through a library’s public API to reduce dependence on changeable implementation details.
- Test callback behavior on both iOS and Android; cross platform event differences can remain after a working integration.
Mentioned in this talk
Search inside this talk
What was claimed 11
- foundedDylan Jhaveri founded Crowdcastco-founder
“I was CTO and co-founder at Crowdcast”
YouTube Unverified1 source· Talk
- role atDylan Jhaveri is senior software engineer at Mux
“I’m a senior software engineer at Mux on the DevX team”
YouTube Unverified1 source· Talk
- featureMux Data: Measures video playback performance, including startup time, video quality, and rebuffering
“Mux Data tells you how your video is performing.”
YouTube Unverified1 source· Talk
- built
“One product we have at Mux is called Mux Data.”
YouTube Unverified1 source· Talk
- built
“We recently added that one, and it's the one I worked on.”
YouTube Unverified1 source· Talk
- metricMux: Maintains 22 player-level SDKs
“we maintain, by my count, 22 player-level SDKs”
YouTube Unverified1 source· Talk
- usesMux uses JavaScriptas a shared core library for SDK business logic
“We created a core library in each of three languages: JavaScript, Objective-C, and Java.”
YouTube Unverified1 source· Talk
- featureMux React Native Video SDK: Wraps the video component, intercepts callbacks, and monitors playback metrics
“our SDK hooks into the callbacks it needs”
YouTube Unverified1 source· Talk
- integrates withMux React Native Video SDK integrates with React Native Video
“you import the Mux React Native Video library, pass the Video component into its function”
YouTube Unverified1 source· Talk
- useson Android
“and ExoPlayer on Android”
YouTube Unverified1 source· Talk
- useson iOS
“React Native Video uses AVPlayer on iOS”
YouTube Unverified1 source· Talk





