Zalando had separate native apps and a server-driven UI, which made synchronizing complex video player state difficult. The team chose to build a Fabric component from scratch rather than adopt a feature-heavy third-party library or wrap existing native components. This gave them control over the new architecture and let them focus on the features their consumers needed.
Building a Video Experience with React Native: Lessons from Early Adoption
Speaker
Eugene Verichev, a former Android engineer at Zalando, shares lessons from building a React Native video experience for Zalando.
The component has a native Android and iOS layer, with a React Native presentation layer built on Zalando Design System. The team included features such as analytics, performance tracing, subtitles, error handling, and visibility-based autoplay. They left out capabilities like DRM and background playback because their consumers did not need them.
In the home feed, several videos could play at once while FlashList kept many players loaded in memory. This caused jerky scrolling, blank areas, and memory pressure, especially on Android. The team tracked autoplay time, jank, and player count; reducing React renders alone did not fix the problem.
Creating players only when videos reached 75% visibility reduced jank from 24% to 3%, but autoplay time grew almost two and a half times. The team cut autoplay time in half by adding cached five-second MP4s for video entry points. They also prioritized loading the first visible tile and built a player pool to reuse native players, codecs, and buffers.
The player pool could support pre-warming: creating players before they become visible and reusing them when a user is likely to watch. Verichev describes initial pre-warming as easier when the destination screen and intended videos are already known. He says the project challenged his assumptions as a native Android developer about what React Native could handle.
Takeaways
- Build a cross-platform component around the features your actual consumers need.
- Measure autoplay time, jank, and player count to understand video performance tradeoffs.
- Create expensive players only when needed to reduce memory pressure and scrolling jank.
- Use short, cached video assets when full stream startup makes autoplay too slow.
- Prioritize visible content and reuse native players to improve resource use.
Mentioned in this talk
Search inside this talk
What was claimed 11
- uses
“the video player at Zalando based on React Native”
YouTube Unverified1 source· Talk
- built
Zalando built Zalando video player
“we've built the video player at Zalando based on React Native”
YouTube Unverified1 source· Talk
- previously atEugene Verichev previously at CareemAndroid engineer
“and in the Middle East at Careem”
YouTube Unverified1 source· Talk
- previously atEugene Verichev previously at
Grab
Android engineer“I worked as an Android engineer in Southeast Asia at Grab”
YouTube Unverified1 source· Talk
- uses
“We created a Fabric component for video”
YouTube Unverified1 source· Talk
- integrates withZalando Design System integrates with Zalando video player
“we had the Zalando Design System video component layer”
YouTube Unverified1 source· Talk
- featureZalando video player: Visibility-based autoplay
“Autoplay is a feature that triggers playback based on visibility”
YouTube Unverified1 source· Talk
- uses
“many videos are also loaded by FlashList at the same time”
YouTube Unverified1 source· Talk





