Senior React Native Developer Interview Questions: Complete Guide

Milad Bonakdar
Author
Master advanced React Native development with essential interview questions covering performance optimization, native modules, state management, testing, architecture patterns, and cross-platform best practices for senior developers.
Introduction
Senior React Native developers are expected to architect scalable cross-platform applications, optimize performance, integrate native modules, and make informed architectural decisions. This role demands deep expertise in React Native, state management, native development, and the ability to solve complex mobile development challenges.
This comprehensive guide covers essential interview questions for Senior React Native Developers, spanning advanced React concepts, performance optimization, state management, native modules, testing, and architectural patterns. Each question includes detailed answers, rarity assessment, and difficulty ratings.
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:
- Use
keyExtractor: Provide unique keys getItemLayout: Skip measurement for fixed-height itemsremoveClippedSubviews: Unmount off-screen views (Android)maxToRenderPerBatch: Control batch sizewindowSize: Control rendered windowinitialNumToRender: Items to render initially- Memoize
renderItem: Prevent unnecessary re-renders
Rarity: Very Common Difficulty: Medium
11. What is the React Native bridge and how does it affect performance?
Answer: The bridge is the communication layer between JavaScript and native code.
- How it works:
- JavaScript runs in a separate thread
- Native modules run in native threads
- Bridge serializes data between them (JSON)
- Performance Impact:
- Bridge communication is asynchronous
- Serialization overhead
- Can become bottleneck with frequent communication
- Solutions:
- Minimize bridge crossings
- Batch operations
- Use native animations (bypass bridge)
- New Architecture (JSI) removes bridge
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 improves React Native performance:
- Fabric: New rendering system
- Synchronous layout
- Better interop with native views
- Type safety
- TurboModules: New native module system
- Lazy loading
- JSI (JavaScript Interface) - direct C++ communication
- No bridge serialization
Benefits:
- Faster startup
- Lower memory usage
- Synchronous native calls
- Better type safety
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



