Microsoft uses React Native across products including Office, Windows, Teams, and Xbox, but complex apps and large monorepos expose gaps in the developer experience. Duplicate package versions can bloat bundles or cause problems with shared state, while mismatches between React Native and libraries such as Gesture Handler and Reanimated can break apps during upgrades.
Changing React Native... from within!
Speaker
Adam Foxman, principal software engineer at Microsoft, explains how Microsoft is improving React Native’s developer experience at React Native EU 2022, hosted by Callstack.
Adding React Native to a mature application with a complicated native UI can be much harder than starting a new app. At Microsoft, monorepos with more than 5,000 external dependencies make upgrades difficult because changes ripple through libraries and apps. Foxman also points to slow bundling, Metro’s costly file crawl, missing symlink support, and limited TypeScript integration as obstacles.
Microsoft’s RNX Kit is a community project for React Native developer experience, with about 30 released packages, five incubating packages, and test apps for Expo and bare React Native. Its tools are developed and tested against Microsoft’s large repositories, then shared so other teams can use them and contribute improvements.
Dep Check uses a database of dependency versions tested with particular React Native releases to help teams upgrade compatible packages together. RNX Kit also adds Metro symlink support, bundle-time TypeScript and platform-specific checks, esbuild-based tree shaking, and plugins that detect duplicate packages and dependency cycles.
Foxman says lasting change depends on collaboration as well as tools. The Bundle Working Group brings together people from Meta, Callstack, Expo, Airbnb, Google, and Klarna for monthly discussions about bundling. Microsoft invites developers to try RNX Kit, share feedback, and contribute code.
Takeaways
- Track dependency compatibility across React Native upgrades instead of guessing package versions.
- Use bundle checks to catch duplicate dependencies and cycles before they reach users.
- Treat TypeScript checks as part of the React Native development and CI workflow.
- When integrating React Native into a mature app, expect its existing native UI architecture to shape the work.
- Open tools and contribution paths can help improvements tested at one company benefit the wider community.
Mentioned in this talk
Search inside this talk
What was claimed 10
- uses
Microsoft uses React Nativein brownfield apps“how Microsoft is using React Native at scale”
0:09inReact Native at Scale: How Microsoft is betting big on React Native to target BILLIONS of usersYouTube Verified14 sources· Talk
- role atAdam Foxman is principal software engineer at
Microsoft“I'm a principal software engineer at Microsoft.”
YouTube Unverified1 source· Talk
- built
“We've built the desktop platforms for React Native on Windows and macOS.”
YouTube Unverified1 source· Talk
- built
“It's a set of tools we built to help you maintain and build your React Native applications and libraries”
16:47inUnlocking the next generation of desktop app with React NativeYouTube Verified3 sources· Talk
- metricRNXKit: About 30 released packages and five incubating packages
“So far, we have about 30 released packages and five incubating packages.”
YouTube Unverified1 source· Talk
- feature
Dep Check: Checks and updates dependencies for React Native compatibility“It will update all your dependencies and tell you... you can trust it.”
YouTube Unverified1 source· Talk
- featureRNXKit: Adds Metro symlink support, TypeScript validation, tree shaking, and plugins for duplicate package and cycle detection
“We have a package that very simply adds symlink support to Metro.”
YouTube Unverified1 source· Talk
- integrates with
“Another thing we're building... is about enhancing Metro.”
YouTube Unverified1 source· Talk
- usesReact Native uses
esbuild
“We use esbuild to do it at the tail end of every bundle.”
YouTube Unverified1 source· Talk
- role atAdam Foxman is group lead at Bundle Working Group
“a group I lead called the Bundle Working Group”
YouTube Unverified1 source· Talk








