← All topics

πŸ“± Interview Prep

React Native

Components and styling, the new architecture, hooks, list performance, navigation, native modules, storage, animations, testing and shipping to the app stores.

πŸ“˜ Learn it from scratch

Visual, hands-on lessons for every pattern in this topic. Do the lesson, then come back and the questions click.

100 questions, most asked first

Ordered so the most useful questions for learning each pattern come first.

#1What is React Native, and how is it different from React?FundamentalsEasyFree#2The bridge vs the New Architecture (JSI, Fabric, TurboModules)ArchitectureHardFree#3FlatList vs ScrollViewLists & performanceEasyFree#4Styling and Flexbox in React NativeFundamentalsEasyFree#5Expo vs bare React NativeBuild & releaseEasyFree#6How does navigation work in React Native?NavigationMediumFree#7Avoiding unnecessary re-rendersState & hooksMediumFree#8Writing platform-specific codeNative modules & platformEasyFree#9Storing data on the deviceNetworking & storageMediumFree#10What is Hermes?ArchitectureMediumFreeUnlock 90 more React Native questions Β· all 1,200 questions for $39/year (about 11Β’ a day)See full access#11The threads of a React Native appArchitectureMediumπŸ”’#12Animated vs ReanimatedAnimations & gesturesMediumπŸ”’#13useEffect cleanup and subscriptionsState & hooksMediumπŸ”’#14Images in React Native appsLists & performanceMediumπŸ”’#15Handling the keyboard and safe areasFundamentalsEasyπŸ”’#16Handling flaky networks and offline modeNetworking & storageMediumπŸ”’#17How push notifications workNative modules & platformMediumπŸ”’#18Over-the-air (OTA) updatesBuild & releaseMediumπŸ”’#19Debugging a React Native appTesting & debuggingEasyπŸ”’#20When and how to write a native moduleNative modules & platformHardπŸ”’#21Props vs state, and what triggers a re-renderFundamentalsEasyπŸ”’#22The core components and how they map to native viewsFundamentalsEasyπŸ”’#23Pressable vs the Touchable componentsFundamentalsEasyπŸ”’#24Making a long FlatList fastLists & performanceHardπŸ”’#25Choosing a state management approachState & hooksMediumπŸ”’#26useMemo and useCallbackState & hooksMediumπŸ”’#27Fetching data from an APINetworking & storageEasyπŸ”’#28Forms and TextInputFundamentalsEasyπŸ”’#29Deep links and universal linksNavigationMediumπŸ”’#30Asking for permissionsNative modules & platformEasyπŸ”’#31What is useRef for?State & hooksEasyπŸ”’#32Writing custom hooksState & hooksMediumπŸ”’#33useReducer vs useStateState & hooksMediumπŸ”’#34Context and re-render performanceState & hooksHardπŸ”’#35Passing params between screens (and typing them)NavigationMediumπŸ”’#36Building a login flowNavigationMediumπŸ”’#37Storing tokens and secrets securelySecurityMediumπŸ”’#38Foreground, background and AppStateNative modules & platformEasyπŸ”’#39Supporting phones, tablets and rotationFundamentalsMediumπŸ”’#40Accessibility in React NativeFundamentalsMediumπŸ”’#41Finding out why an app is slowLists & performanceHardπŸ”’#42Improving app start-up timeLists & performanceMediumπŸ”’#43Memory leaks in React NativeLists & performanceMediumπŸ”’#44Reducing app and bundle sizeBuild & releaseMediumπŸ”’#45Grouped lists with SectionListLists & performanceEasyπŸ”’#46Infinite scroll and pull-to-refreshLists & performanceMediumπŸ”’#47Modals and bottom sheetsNavigationEasyπŸ”’#48Gestures with React Native Gesture HandlerAnimations & gesturesMediumπŸ”’#49Animating items appearing and disappearingAnimations & gesturesMediumπŸ”’#50Unit and component testingTesting & debuggingMediumπŸ”’#51End-to-end testing with Detox or MaestroTesting & debuggingMediumπŸ”’#52Mocking native modules in JestTesting & debuggingMediumπŸ”’#53Error boundaries and crash reportingTesting & debuggingMediumπŸ”’#54TypeScript in React NativeFundamentalsEasyπŸ”’#55Environments and configurationBuild & releaseMediumπŸ”’#56Releasing to the App Store and Google PlayBuild & releaseMediumπŸ”’#57Version numbers and build numbersBuild & releaseEasyπŸ”’#58CI/CD for a React Native appBuild & releaseMediumπŸ”’#59Upgrading React Native versionsBuild & releaseMediumπŸ”’#60What does Metro do?ArchitectureEasyπŸ”’#61How a component becomes pixels (Fabric and Yoga)ArchitectureHardπŸ”’#62useTransition and useDeferredValue in React NativeState & hooksHardπŸ”’#63Real-time updates with WebSocketsNetworking & storageMediumπŸ”’#64Server-state caching with TanStack QueryNetworking & storageMediumπŸ”’#65AsyncStorage vs MMKV vs SQLiteNetworking & storageMediumπŸ”’#66Uploading photos and filesNetworking & storageMediumπŸ”’#67Camera, photos and mediaNative modules & platformEasyπŸ”’#68Running work in the backgroundNative modules & platformHardπŸ”’#69Getting the user's locationNative modules & platformMediumπŸ”’#70Face ID, Touch ID and fingerprint loginSecurityMediumπŸ”’#71Securing network traffic and the app binarySecurityHardπŸ”’#72Translations, RTL and localizationFundamentalsMediumπŸ”’#73Dark mode and themingFundamentalsEasyπŸ”’#74Custom fonts, icons and imagesFundamentalsEasyπŸ”’#75Splash screens and app iconsBuild & releaseEasyπŸ”’#76Tabs, stacks and nested navigatorsNavigationMediumπŸ”’#77The Android back button and gesturesNavigationEasyπŸ”’#78File-based routing with Expo RouterNavigationMediumπŸ”’#79Sharing code between mobile and webArchitectureMediumπŸ”’#80When to use a WebViewNative modules & platformEasyπŸ”’#81Why list keys matterLists & performanceEasyπŸ”’#82Stale closures in callbacks and intervalsState & hooksMediumπŸ”’#83State updates are batchedState & hooksMediumπŸ”’#84Search-as-you-type without race conditionsNetworking & storageMediumπŸ”’#85Optimistic updatesNetworking & storageMediumπŸ”’#86Feature flags, analytics and A/B testsBuild & releaseMediumπŸ”’#87In-app purchases and subscriptionsNative modules & platformHardπŸ”’#88React Native vs native vs FlutterFundamentalsEasyπŸ”’#89Building a reusable component libraryFundamentalsMediumπŸ”’#90Migrating an app to the New ArchitectureArchitectureHardπŸ”’#91What JSI makes possibleArchitectureHardπŸ”’#92Reanimated worklets and shared valuesAnimations & gesturesHardπŸ”’#93How FlashList recycles viewsLists & performanceHardπŸ”’#94ANRs and native crashesTesting & debuggingMediumπŸ”’#95Social login and OAuth with PKCESecurityHardπŸ”’#96System design: the mobile side of a chat appArchitectureHardπŸ”’#97System design: an offline-first news feedArchitectureHardπŸ”’#98Structuring a large React Native codebaseFundamentalsMediumπŸ”’#99Avoiding App Store and Play Store rejectionsBuild & releaseMediumπŸ”’#100What do you look for when reviewing a React Native PR?FundamentalsMediumπŸ”’