Konicek describes React Native’s JavaScript workflow, where code changes are bundled and the app restarts without waiting for a traditional compilation step. He valued having familiar JavaScript APIs across iOS and Android, along with a community of native libraries that developers could link into their apps.
Building a Product with React Native
Speaker
Martin Konicek, formerly on Facebook’s Core React Native team, explains how he rebuilt an ad creation feature for the Facebook app with React Native at a Callstack conference.
To understand the experience of building a product, Konicek joined a team improving a Facebook feature that suggested posts advertisers could boost. The existing screen loaded the mobile website in a WebView, which was slow and looked different from the rest of the app. He rebuilt it as React Native UI, then ran the same JavaScript on iOS and Android, using shared helpers for platform-specific fonts, colors, and buttons.
A server-defined notification URL routed users to a React Native component in the Facebook app. Konicek used Relay and GraphQL to request page and post details, and GraphiQL to try queries and test new server fields. Sketch measurements and shared design components helped translate the visual layout, while conversations with the designer filled in interaction details such as animations.
Facebook released changes gradually: first to employees, then to small public groups, and eventually to everyone if crashes and product metrics looked acceptable. Server-side flags could disable a feature without a new app release, and an A/B test compared the new screen with the old one. The redesigned screen did not show a statistically significant improvement in the Boost Post metric, so Konicek moved closer to the original design and changed less at a time.
Konicek’s main lesson was to make small changes, measure them, and then decide what to try next. He also found that estimating, reproducing production errors, coordinating with a designer, and iterating on metrics all took time beyond writing the code.
Takeaways
- Test a new UI against the existing experience before treating a redesign as an improvement.
- Change one thing at a time so the results of each experiment are easier to interpret.
- Roll out features gradually and use server-side flags to respond to problems quickly.
- Include design conversations, production debugging, and measurement in project estimates.
- Shared platform helpers can keep a cross-platform React Native interface consistent with each operating system.
Mentioned in this talk
Search inside this talk
What was claimed 9
- previously atMartin Konicek previously at
Meta
“Some of you may remember me from the Core React Native team at Facebook.”
YouTube Unverified1 source· Talk
- featureBoost Post: Lets advertisers promote posts as ads
“If you spent five euros to boost a post in the Facebook app, you're an advertiser.”
YouTube Unverified1 source· Talk
- uses
“We've got GraphQL to solve that problem.”
5:38inQ&A SessionYouTube Verified2 sources· Talk
- usesBoost Post uses React Native
“My goal was to rebuild this UI with native UI.”
YouTube Unverified1 source· Talk
- builtMartin Konicek built Boost PostReact Native version of the ad creation UI
“I’ll build this for you, but can I use React Native?”
YouTube Unverified1 source· Talk
- uses
“Relay, which uses GraphQL”
6:35inReact Native EU 2023 Q&A PanelYouTube Verified2 sources· Talk
- usesBoost Post uses
relay
“The library used for this is Relay, of course.”
YouTube Unverified1 source· Talk
- featureFacebook app: Server-side flags can enable or disable features without shipping new code
“You can immediately enable or disable features in the app this way.”
YouTube Unverified1 source· Talk





