The components travel, the platform work stays

Technology

React Native renders real native views, not a webview. JSX, hooks, and the component model come over from the web unchanged, which is the part every team counts on. Styling, layout, navigation, and anything touching the device do not, which is the part that sets the schedule.

It is the right call when one product team owns both platforms and the app is mostly screens, lists, and forms. We build for the web, so we treat a mobile app as a decision about who maintains it for the next three years, not as a way to reuse a codebase.

Monogram logo

Mobile

What crosses over from a React codebase, and what does not

  1. Layout is flexbox, and only flexbox

    Styles are JavaScript objects run through Yoga, a flexbox subset. No cascade, no grid, no media queries, no pseudo selectors. A web team is productive in React Native on day one and wrong about styling for a week, because the model looks familiar and is not.

  2. The bridge is gone since version 0.76

    React Native 0.76 made the New Architecture the default. Fabric and TurboModules reach native code directly through JSI instead of serializing messages across an async bridge, which removes a class of dropped frames in gestures and long lists. Unmaintained native libraries are the cost.

  3. You are still shipping two native apps

    Expo covers builds, over the air updates, and most device modules, but permissions, background work, push certificates, signing, and two store reviews stay yours. Choose it to share product logic, not to avoid native work. No client build of ours runs on React Native.