React Native: VirtualCollection Goes Public
React Native takes a big step forward with VirtualCollection components moving from internal Meta code to the public API. The team also improved scroll view handling with better bottom inset support and cleaned up some technical debt around mutation observers and testing infrastructure.
Duration: PT3M45S
Transcript
Hey there, React Native developers! Welcome back to another episode of the React Native podcast. I'm your host, and wow, do we have some exciting changes to talk about today, March 31st, 2026.
You know that feeling when you've been working on something internally for ages, and you finally get to share it with the world? Well, that's exactly what's happening with React Native today, and I am genuinely excited to dive into this with you.
So let's jump right into the big story of the day. Calix Tang just dropped a massive commit that's going to make a lot of developers very happy. The VirtualCollection components - we're talking VirtualRow, VirtualColumn, VirtualCollectionView, and all their supporting cast - have officially moved from Meta's internal codebase into the public React Native API.
Now, if you're thinking "wait, what are VirtualCollection components?" - these are part of what's called the Fling system, and they're essentially high-performance components for rendering large lists and collections. Think of them as the next evolution of what you might know from FlatList, but with some serious performance optimizations under the hood.
What makes this so exciting is the scope of this change. Calix moved 10 core files, updated 40 consumer files, and even converted the licensing from proprietary to MIT. That means these components are now truly open source and available for everyone to use. The team also added proper public exports to the main React Native index files, so you can import these directly from 'react-native' just like any other component.
This is the kind of change that doesn't just add features - it democratizes performance. Meta's been using these internally to handle massive, complex UIs, and now every React Native developer gets access to that same power.
But that's not all we've got cooking today. Amber Won made some thoughtful improvements to scroll view handling, specifically around bottom insets. If you've ever struggled with getting scroll views to play nicely with tab bars or other bottom UI elements, this one's for you. The team added proper bottom padding support to ReactScrollView, which might sound small, but these kinds of polish improvements are what make the difference between a good user experience and a great one.
We also saw some cleanup work that I always love to highlight. Rubén Norte replaced a cryptic FIXME comment in the MutationObserver code with an actual explanation of why the implementation is safe. You might think "that's just a comment change," but clear, well-documented code is how we build maintainable software that lasts. It's these small acts of code stewardship that keep React Native healthy as it grows.
And speaking of keeping things healthy, there was also a fix for some testing infrastructure issues. Not the flashiest change, but essential for keeping the development pipeline smooth.
Here's what I love about today's changes - they represent React Native at its best. We've got major new capabilities being opened up to the community, thoughtful improvements to existing functionality, and the kind of careful maintenance work that keeps everything running smoothly.
For today's focus, if you're working with large lists or complex scrollable content, I'd encourage you to explore these new VirtualCollection components. The documentation is fresh, and this is your chance to get ahead of the curve on some powerful performance tools.
And remember, every one of these changes started with a developer identifying a problem and working toward a solution. Whether you're contributing code, filing issues, or just building amazing apps, you're part of this journey.
That's a wrap for today's episode. Keep building, keep learning, and I'll catch you next time with more React Native goodness. Until then, happy coding!