Fifteen common React Native interview questions
- How does React Native render native UI from JavaScript?
- What changed with the new architecture: JSI, Fabric and TurboModules?
- What is Hermes?
- FlatList versus ScrollView?
- How do you optimise a long list?
- What causes dropped frames, and how do you find them?
- How do you handle navigation?
- How do you manage state and server data?
- How do you store data offline?
- How do you handle platform-specific code?
- When do you need a native module?
- How do you handle permissions?
- Expo versus bare React Native?
- How do you ship updates and handle app store releases?
- How do you test a React Native app?
Architecture
- Rendering: you write React components; React Native maps them to real native views, not a web view.
- Old bridge: asynchronous, serialised messages between JavaScript and native threads — a bottleneck for frequent communication.
- New architecture: JSI lets JavaScript hold references to native objects and call them directly; Fabric is the new rendering system; TurboModules load native modules lazily with typed interfaces.
- Hermes: a JavaScript engine optimised for React Native, improving start-up time and memory use.
Performance
| Problem | Fix |
|---|---|
| Long lists slow or memory-heavy | FlatList or SectionList (virtualised), stable keyExtractor, getItemLayout for fixed heights |
| Unnecessary re-renders | React.memo, useMemo, useCallback, keeping state local |
| Janky animations | Native-driver or UI-thread animation libraries |
| Slow start-up | Hermes, lazy loading screens, smaller bundles |
| Large images | Resize and cache; avoid loading full-resolution images in lists |
Profile with the performance monitor, React DevTools profiler and platform tools before optimising. ScrollView renders all children at once, so use it only for short content.
Navigation, state and storage
Navigation libraries provide stack, tab and drawer navigators with deep linking. Keep local UI state in components, use a server-cache library for API data (handling caching, retries and background refetch), and a lightweight store for shared app state. For offline storage: key-value storage for small settings, a fast native key-value store for frequent access, SQLite-based databases for structured data, and secure storage for tokens. Design for intermittent connectivity — queue writes and sync when online.
Native code and platforms
- Use Platform.OS or .ios.js and .android.js files for platform-specific behaviour.
- Write a native module when you need a platform API without an existing library, heavy native computation, or deep integration such as background tasks.
- Handle permissions explicitly per platform, with clear explanations to users.
- Expo speeds development and builds; bare projects or prebuild give full native control — modern Expo supports most native needs through development builds and config plugins.
Releases and updates
Expect questions on shipping. Native code changes require app store builds and review; JavaScript-only changes can be delivered with over-the-air update services, within the stores' rules about not changing an app's core purpose. Mention staged rollouts, crash monitoring after each release, versioning the JavaScript bundle against the native binary it's compatible with, and a rollback plan. Teams care that you've shipped to real users, not just run apps in simulators.
Testing a React Native app
Use unit tests for logic and hooks, component tests that render components and interact with them through user-visible text and roles, and end-to-end tests on simulators or devices for critical flows such as sign-in and checkout. Mock native modules in unit tests. Keep end-to-end suites small and stable, because device tests are slow and flaky when overused.
Practising
The fastest way to find gaps is to be asked. Run a spoken mock round on React Native topics — a free AI interview assistant such as CoPilot Interview builds one from your résumé and the job description and scores every answer — then study whatever you stumbled on. Prepare a story about a performance problem you fixed on a real device, with how you measured it. See also React interview questions and JavaScript interview questions.
Disclosure: CoPilot Interview is our product, so weigh what we say about it accordingly. Everything else on this page applies whichever tool you use, or none.
Frequently asked questions
What is the React Native new architecture?
A rework that replaces the asynchronous bridge with JSI for direct JavaScript–native calls, the Fabric rendering system and lazily loaded, typed TurboModules, improving performance and interop.
FlatList or ScrollView?
FlatList virtualises items, rendering only what's on screen, so it suits long or dynamic lists. ScrollView renders everything at once and suits short content.
When do you need a native module in React Native?
When you need a platform API no library provides, heavy native computation, or deep integration such as background processing or custom hardware access.
Expo or bare React Native?
Expo speeds setup, builds and updates and now supports most native needs. Bare React Native gives complete control over native projects when you need unusual native configuration.
Practise on real interview questions
Run 145 real interview questions across 10 tracks, answer out loud and see a structured answer to compare with yours. Free, no signup.
Try a practice question