Brownfield work adds React Native to an existing app, where a big-bang replacement is not practical. Karekar says the goal is for React Native screens to look and behave like their native counterparts, even though their implementations differ. That makes it harder to compare performance using a single screen-load measurement.
Performance Comparisons in Brownfield React Native Projects
Speaker
Principal Engineer Mohit Karekar of Zalando discusses how to compare performance during a brownfield React Native migration at a Callstack tech talk.
The earlier product detail page used one GraphQL query, followed by data transformations and a completed render. The React Native version used Zalando’s internal Rendering Engine, which streams content through recursive API calls. The screen fills gradually, so a start-to-finish load time does not capture the same experience in both versions.
Karekar describes a perceived-performance metric called meaningful render, similar to web LCP. Modules in the rendering framework can identify which one represents the meaningful content; because they resolve sequentially, that module’s completion marks the metric. The implementation uses React Native’s `onLayout` callback to record the time and ends an OpenTelemetry span.
The meaningful-render span appears alongside network and rendering operations in the team’s observability tooling. Zalando added the metric to gradual rollout plans to help teams assess performance as they release changes. Karekar notes that small rollout samples can produce misleading latency outliers, and attaching spans to the global route does not work in every case.
Karekar says React Native’s Performance API and Performance Observer were coming to the runtime, with the API experimental at the time of the talk. He expects the runtime API could replace Zalando’s internal implementation while keeping its measurement interface usable. The broader aim is to make performance measurement part of rollout practice.
Takeaways
- When implementations differ, compare the user-visible moment that matters instead of relying only on total load time.
- For streamed screens, define meaningful content explicitly and record its readiness as a performance signal.
- Use rollout metrics alongside operational data, and interpret latency cautiously when the sample is small.
- Instrument layout readiness with a consistent timing interface so traces can show render and network work together.
Mentioned in this talk
Search inside this talk
What was claimed 7
- uses
Zalando uses React Native
“measuring performance with our brownfield approach for React Native”
YouTube Verified3 sources· Talk
- role atMohit Karekar is principal engineer in Client Foundations at
Zalando
“I'm a principal engineer in Client Foundations.”
YouTube Unverified1 source· Talk
- featurerendering engine: Supports a streaming, recursive screen rendering model
“The entire page works similarly to how a web page streams.”
YouTube Unverified1 source· Talk
- built
Zalando built rendering engine
“we had an internal framework called Rendering Engine”
YouTube Unverified1 source· Talk
- metricMeaningful render: Time when the screen's most significant element has loaded
“when the most significant element on the screen loaded”
YouTube Unverified1 source· Talk
- uses
Zalando uses OpenTelemetry
“our custom implementation also creates a span”
YouTube Unverified1 source· Talk
- uses
Zalando uses Meaningful render
“We introduced this metric to assess performance”
YouTube Unverified1 source· Talk








