โ† 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

Ranked by how often each question comes up in real interviews. #1 is the most common.

#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๐Ÿ”’