Senior React Native Developer Interview Questions and Answers

Milad Bonakdar
Author
Prepare for senior React Native interviews with practical questions on architecture, FlatList performance, native modules, state management, testing, and production trade-offs.
Introduction
Senior React Native interviews usually test more than syntax. Expect questions about app architecture, performance profiling, native integration, state and data boundaries, testing strategy, release quality, and how you explain trade-offs under real product constraints.
Use this guide to practice concise, senior-level answers. Start with the direct decision you would make, then explain the reasoning, risk, and fallback. For example, do not just say that FlatList can be optimized; explain how you would profile blank areas, tune rendering batches, memoize rows, use stable keys, and change the design when fixed item heights or heavy images are the real issue.
Advanced React & Hooks (5 Questions)
1. Explain useMemo and useCallback. When should you use them?
Answer: Both hooks optimize performance by memoizing values/functions.
- useMemo: Memoizes computed values (expensive calculations)
- useCallback: Memoizes function references (prevents recreation)
- When to use: Only when you have performance issues. Premature optimization can make code harder to read.
Rarity: Very Common Difficulty: Medium
2. What is useRef and what are its use cases?
Answer:
useRef creates a mutable reference that persists across renders without causing re-renders.
- Use Cases:
- Accessing DOM/native elements
- Storing mutable values without triggering re-render
- Keeping previous values
- Storing timers/intervals
Rarity: Common Difficulty: Medium
3. Explain Custom Hooks and when to create them.
Answer: Custom hooks extract reusable stateful logic into separate functions.
- Benefits: Code reuse, separation of concerns, easier testing
- Convention: Must start with "use"
Rarity: Common Difficulty: Medium
4. What is React Context and when should you use it?
Answer: Context provides a way to pass data through the component tree without prop drilling.
- Use Cases: Theme, authentication, language preferences
- Caution: Can cause unnecessary re-renders if not used carefully
Rarity: Very Common Difficulty: Medium
5. Explain the difference between useEffect and useLayoutEffect.
Answer: Both run side effects, but at different times:
- useEffect: Runs asynchronously after render is painted to screen
- useLayoutEffect: Runs synchronously before paint (blocks visual updates)
- Use useLayoutEffect when: You need to measure DOM or prevent visual flicker
Rarity: Medium Difficulty: Hard
State Management (4 Questions)
6. Explain Redux and its core principles.
Answer: Redux is a predictable state container for JavaScript apps.
- Core Principles:
- Single source of truth (one store)
- State is read-only (dispatch actions to change)
- Changes made with pure functions (reducers)
Rarity: Very Common Difficulty: Hard
7. What is Redux Toolkit and how does it simplify Redux?
Answer: Redux Toolkit is the official recommended way to write Redux logic.
- Benefits:
- Less boilerplate
- Built-in Immer for immutable updates
- Includes Redux Thunk
- Better TypeScript support
Rarity: Common Difficulty: Medium
8. What are alternatives to Redux for state management?
Answer: Multiple state management solutions exist:
- Context API + useReducer: Built-in, good for simple apps
- MobX: Observable-based, less boilerplate
- Zustand: Minimal, hooks-based
- Recoil: Atom-based, by Facebook
- Jotai: Primitive atoms
Rarity: Common Difficulty: Medium
9. How do you handle side effects in Redux?
Answer: Use middleware for async operations:
- Redux Thunk: Functions that return functions
- Redux Saga: Generator-based, more powerful
- Redux Observable: RxJS-based
Rarity: Common Difficulty: Hard
Performance Optimization (5 Questions)
10. How do you optimize FlatList performance?
Answer: Multiple strategies improve FlatList scrolling, but a senior answer starts with profiling the symptom: blank areas, slow taps, memory pressure, expensive row renders, or network pagination. Tune the list after you know which problem you are solving.
- Use
keyExtractor: Provide stable unique keys getItemLayout: Skip measurement when item height or width is predictable- Tune render batches: Balance
initialNumToRender,maxToRenderPerBatch,updateCellsBatchingPeriod, andwindowSize - Keep rows light: Move heavy logic out of row components and resize or cache images
- Memoize row components and
renderItem: UseReact.memoanduseCallbackwhen prop references are stable - Use pagination carefully: Avoid blocking interactions while appending data
- Validate on real devices: Simulator performance can hide memory and scroll issues
Rarity: Very Common Difficulty: Medium
11. What is the React Native bridge and how does it affect performance?
Answer: The legacy bridge is the communication layer between JavaScript and native code. Older React Native apps send serialized asynchronous messages across that boundary, so frequent JavaScript/native communication can hurt animation, scrolling, and startup work.
- How it works in the legacy architecture:
- JavaScript runs separately from native UI and platform code
- Native modules run on native threads
- Data crossing the bridge must be serialized
- Performance impact:
- Frequent small calls can become a bottleneck
- Large payloads add serialization cost
- UI work can feel delayed when JS is busy
- Senior-level mitigation:
- Reduce bridge crossings and batch native work
- Use native-driven animations or Reanimated for gesture-heavy flows
- Profile before rewriting code
- For newer apps, understand how JSI, Fabric, and TurboModules reduce bridge-era limits while still requiring library compatibility checks
Rarity: Common Difficulty: Hard
12. How do you prevent unnecessary re-renders?
Answer: Multiple techniques prevent wasted renders:
- React.memo: Memoize components
- useMemo/useCallback: Memoize values/functions
- Proper key props: Help React identify changes
- Avoid inline objects/arrays: Create new references
- Split components: Smaller, focused components
Rarity: Very Common Difficulty: Medium
13. How do you optimize images in React Native?
Answer: Image optimization is crucial for performance:
- Resize images: Use appropriate dimensions
- Cache images: Use libraries like react-native-fast-image
- Lazy loading: Load images on demand
- Progressive loading: Show placeholder first
- Use WebP format: Better compression
Rarity: Common Difficulty: Medium
14. What tools do you use for performance profiling?
Answer: Multiple tools help identify performance issues:
- React DevTools Profiler: Component render times
- Flipper: Debugging and profiling tool
- Performance Monitor: Built-in FPS monitor
- Systrace: Android performance tracing
- Instruments: iOS performance profiling
Rarity: Common Difficulty: Medium
Native Modules & Platform-Specific (4 Questions)
15. How do you create a Native Module in React Native?
Answer: Native modules allow you to use platform-specific code.
Rarity: Medium Difficulty: Hard
16. How do you handle platform-specific code?
Answer: Multiple approaches for platform-specific code:
- Platform module: Check platform at runtime
- Platform-specific files:
.ios.jsand.android.js - Platform.select: Select values based on platform
Rarity: Very Common Difficulty: Easy
17. What is the New Architecture (Fabric and TurboModules)?
Answer: The New Architecture is React Native's modern runtime and rendering model. It combines JSI for direct JavaScript/native interaction, Fabric as the renderer, and TurboModules for typed native modules. A senior candidate should explain both the upside and the migration risk.
- Fabric: New rendering system
- Better interoperability with native views
- More synchronous layout capabilities
- Designed for modern React features
- TurboModules: New native module system
- Lazy loading
- Type-safe specs through codegen
- Direct JSI-based communication instead of bridge serialization
Interview framing:
- New apps should evaluate the New Architecture early
- Existing apps need dependency, build, and rollout checks before migration
- Performance gains depend on the app bottlenecks; do not promise automatic speedups
- Native module ownership, CI coverage, and crash monitoring matter as much as enabling a flag
Rarity: Medium Difficulty: Hard
18. How do you handle deep linking in React Native?
Answer: Deep linking allows opening specific screens from URLs.
Rarity: Common Difficulty: Medium
Testing (3 Questions)
19. How do you test React Native components?
Answer: Use testing libraries like Jest and React Native Testing Library.
Rarity: Common Difficulty: Medium
20. How do you test Redux logic?
Answer: Test reducers, actions, and connected components separately.
Rarity: Common Difficulty: Medium
21. What is E2E testing and which tools do you use?
Answer: End-to-end testing simulates real user interactions.
- Tools:
- Detox: Popular for React Native
- Appium: Cross-platform
- Maestro: Newer, simpler
Rarity: Medium Difficulty: Medium


