Mobile
React Native
A framework for native mobile apps using React and JavaScript or TypeScript.
What it is
React Native was created at Facebook (now Meta) and open sourced in 2015. You write React components, and they render to real native iOS and Android views, not a WebView.
Logic runs in a JavaScript engine (Hermes) and talks to native code through the modern architecture (JSI, Fabric, TurboModules). This gives one codebase for two platforms and access to native APIs via modules.
For a smoother workflow most teams use Expo, which handles builds, updates and a set of ready modules. The framework suits anyone who already knows React.
Use it when
- The team knows React / TypeScript and wants one codebase for iOS and Android.
- You need native look and behavior without two separate teams.
- Business apps, marketplaces and social apps where shipping features fast is key.
Avoid it when
- Heavy graphics, games or deep platform integration (AR, complex animations): native code or Unity fits better.
- The app lives mostly in system APIs and the JS layer would be thin.
Key concepts
- Native components
View,TextandImagemap to the platform's native views.- Hermes
- A lightweight JS engine from Meta optimized for mobile.
- New Architecture
- JSI, Fabric and TurboModules remove the async bridge between JS and native code.
- Flexbox layout
- Layout through Flexbox and
StyleSheetinstead of CSS. - Native modules
- Custom Swift / Kotlin code callable from JS.
Example
Interview questions
1. How does React Native differ from hybrid apps in a WebView?
React Native renders the platform's native views, not a web page inside a container. That is why look and scrolling feel native even though logic is JS.
2. What is the New Architecture?
A model where JavaScript calls native code directly through JSI without the async JSON bridge. Fabric handles rendering, TurboModules handle native modules.
3. When do you need a custom native module?
When you need a platform API that ready libraries lack: a specific SDK, Bluetooth, a special device. You write Swift / Kotlin and connect it to JS.
4. How do you optimize long lists?
Use
FlatListorFlashListwith virtualization, stablekeyExtractor, memoized items and avoid inline functions inrenderItem.
Comparisons with this technology
Related technologies
- ExpoA platform and toolset on top of React Native: quick start, ready modules, cloud builds and updates.
- ReactA library for building interfaces from components: UI as a function of state.
- FlutterGoogle's UI framework in Dart: one codebase for mobile, web and desktop with its own rendering.
- TypeScriptA superset of JavaScript with static types that compiles to plain JS.
Logos belong to their owners and are used for identification only. Icons: Simple Icons (CC0), Devicon (MIT).