WhoBuilt

Building a Product with React Native

Sep 14, 2018· 27 min· 125 views·Watch on YouTube

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.

Why React Native appealed to him

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.

Rebuilding the ad picker

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.

Connecting routes, data, and design

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.

Rolling out and measuring the change

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.

What the process taught him

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

Show all 9 facts

Related talks

Building a Product with React Native, Martin Konicek · WhoBuilt