Skip to content
tezvyn:

Top 30 Easy React Native Concepts Quiz for Beginners

30 easy multiple-choice React Native concept questions, the vocabulary and first principles, the parts you need before anything else makes sense. They come from 30 bites in the React Native library, the gentlest slice of the 158 React Native concept questions in the library. Answer them here or read straight down. Every question carries the correct option, why it is correct, and a link to the bite it came from.

React Native, Expo, native modules, cross-platform

30 questions. Pick an answer, or open “Show the answer” to read it.

Answers are graded in your browser. Nothing is saved, and no XP or streak is earned here. The app keeps score.

  1. Question 1 of 30

    For displaying long, scrolling lists of data in React Native, which component is recommended for optimal performance?

    Show the answer

    Answer: d · FlatList, because it efficiently renders only the items currently visible on screen.

    FlatList is the recommended component for long lists because it optimizes performance by only rendering items currently visible on screen. ScrollView, while providing scrolling, renders all its children at once, which can lead to performance issues with extensive content.

    Read the full bite: React Native Core Components: Your UI Building Blocks

  2. Question 2 of 30

    Which of the following is a key benefit of using StyleSheet.create() for styling in React Native?

    Show the answer

    Answer: c · It optimizes performance by processing style objects once and referencing them efficiently on the native side.

    The card explicitly states that StyleSheet.create() processes style objects once and sends them to the native side, which is much faster than re-serializing raw JavaScript style objects on every render. Its primary use is for static styling, not dynamic changes, although it can be combined with dynamic styles.

    Read the full bite: Styling in React Native with StyleSheet

  3. Question 3 of 30

    To perfectly center a child component both horizontally and vertically within its parent using Flexbox, which properties should be applied to the parent container?

    Show the answer

    Answer: c · flex: 1, justifyContent: 'center', alignItems: 'center'

    Option C is correct because 'flex: 1' makes the parent fill available space, 'justifyContent: 'center'' centers children along the primary axis (vertical by default), and 'alignItems: 'center'' centers them along the cross axis (horizontal by default). Option B is incorrect because setting 'flexDirection: 'row'' would change the primary axis, altering how 'justifyContent' and 'alignItems' center the content relative axes.

    Read the full bite: Flexbox: Responsive Layouts in React Native

  4. Question 4 of 30

    Which action would cause an error or unexpected behavior when using React Native's View component?

    Show the answer

    Answer: a · Directly placing plain text content, like "Hello World", as a child of a View.

    The card explicitly states that 'All text content must be placed inside a <Text> component, or your app will throw an error.' The other options describe valid and common uses of the View component for layout and styling.

    Read the full bite: The View Component: React Native's UI Building Block

  5. Question 5 of 30

    What is the primary reason styles applied to a parent View component do not directly affect text within a child Text component?

    Show the answer

    Answer: b · Text components operate within a distinct "text world" where styles must be explicitly defined or nested.

    The Text component creates a special "text world" with its own layout and styling rules, meaning styles from a parent View are not inherited. Instead, styles must be applied directly to the Text component itself or through nested Text components.

    Read the full bite: React Native's Text Component: Beyond Displaying Words

  6. Question 6 of 30

    When displaying an image from a network URL using React Native's Image component, which of the following is a critical requirement for the image to be visible?

    Show the answer

    Answer: a · You must specify explicit width and height in the style prop.

    The card explicitly states that for network images, 'you must provide an explicit width and height in the style prop' because React Native cannot know remote image dimensions, and 'Without these styles, the image will have zero dimensions and be invisible'. While wrapping in a View (C) is common for layout, the Image component itself needs the dimensions to render a network image.

    Read the full bite: React Native's Image Component

  7. Question 7 of 30

    Which scenario is the primary reason to opt for React Native's Pressable component over the Button component?

    Show the answer

    Answer: a · The button requires a custom background gradient and an embedded image.

    The card explicitly states that the Button component should not be used for significant custom styling, such as adding an icon or applying a gradient background, recommending Pressable for these needs. Options A, B, and D describe functionalities that are either supported by the Button component or are handled by the onPress callback and state management, not by the component's styling limitations.

    Read the full bite: React Native's Basic Button Component

  8. Question 8 of 30

    What is the primary consequence if you forget to update your app's state within the onValueChange callback for a React Native Switch?

    Show the answer

    Answer: b · The Switch will visually revert to its previous state after the user interaction.

    The card explicitly states that if the state isn't updated, "the switch will appear to snap back to its original position." This is because the Switch's visual state is controlled by the 'value' prop, which won't change if the underlying state isn't updated. Option D is incorrect because the visual state does not persist; it reverts.

    Read the full bite: React Native's Controlled Switch Component

  9. Question 9 of 30

    How does a React Native Slider typically update and display its current selected value?

    Show the answer

    Answer: d · The onValueChange callback updates a state variable, and this state variable is then passed back to the slider's value prop.

    The card explicitly states that the onValueChange callback must be used to update your component's state, which then re-renders the slider with its new value, making it a controlled component. Option A is a common misconception, as forgetting to update state is described as a 'footgun' and the slider does not manage its own state automatically.

    Read the full bite: React Native Slider: Selecting a Value from a Range

  10. Question 10 of 30

    Under which circumstance would a developer most likely choose Stack Navigator over a native navigation solution?

    Show the answer

    Answer: d · For applications where a highly unique and custom navigation appearance is crucial.

    The card states that Stack Navigator is ideal when "having a highly custom look and feel is more important than achieving maximum performance," due to its JavaScript-based implementation allowing deep customization. Option B is incorrect because Stack Navigator trades performance for customization, and option C describes a benefit more aligned with native solutions.

    Read the full bite: Stack Navigator: JavaScript-based Screen Transitions

  11. Question 11 of 30

    When is a Drawer Navigator the most appropriate choice for an app's primary navigation?

    Show the answer

    Answer: c · To manage 5 or more distinct, top-level sections that don't require constant on-screen presence.

    The card states Drawer Navigators are best for "primary, app-wide navigation, especially with five or more items where a bottom tab bar would feel cluttered." Option C directly reflects this, while options A and B describe use cases for Stack and Bottom Tab Navigators, respectively.

    Read the full bite: Drawer Navigator: Your App's Slide-Out Main Menu

  12. Question 12 of 30

    For which scenario would passing data via route parameters be considered an inefficient or inappropriate approach?

    Show the answer

    Answer: d · Managing a user's global authentication token that impacts multiple, unrelated parts of the application.

    The card explicitly states that route parameters are not a good fit for global state like authentication status that needs to be accessed by many unrelated screens, recommending dedicated state management instead. The other options describe appropriate uses for route parameters, where data is specific to a navigation action.

    Read the full bite: Passing Data to Routes in React Native

  13. Question 13 of 30

    What is the primary mechanism FlatList uses to ensure smooth performance with long lists on mobile devices?

    Show the answer

    Answer: d · It maintains a small "render window" of items, mounting and unmounting components as the user scrolls.

    FlatList's core performance optimization is virtualization, which means it only renders a limited "window" of items that are currently visible or near the viewport. Option C is incorrect because rendering all items, even off-screen, would still consume excessive memory, which FlatList aims to prevent.

    Read the full bite: FlatList: Performant Virtualized Lists in React Native

  14. Question 14 of 30

    What common 'footgun' can prevent a SectionList from re-rendering when its display logic depends on external state changes?

    Show the answer

    Answer: a · Not passing the external state that influences rendering to the extraData prop.

    The card explicitly states that SectionList is a PureComponent and will only re-render on prop changes. If rendering logic depends on state outside the list data, that state must be passed to the extraData prop to force an update, otherwise it's a common 'footgun'. While modifying data in place (option C) can also cause issues, the card specifically highlights extraData for external state dependencies.

    Read the full bite: SectionList: Displaying Grouped Data Efficiently

  15. Question 15 of 30

    In which scenario is props drilling generally considered the most appropriate approach in a React application?

    Show the answer

    Answer: d · For passing data to a component that is only a few levels deep in the component tree.

    Props drilling is recommended for shallow component trees (typically 2-3 levels deep) because it keeps data flow explicit and easy to trace. It does not prevent re-renders of intermediate components, nor is it designed for global state management or modifying ancestor state directly.

    Read the full bite: Props Drilling: Passing Data Through Components

  16. Question 16 of 30

    When is the React Context API most effectively utilized in an application?

    Show the answer

    Answer: c · When data needs to be shared across many components at different nesting levels without explicit prop passing.

    The Context API is designed to solve 'prop drilling' by providing a direct channel for data needed in many places at different levels, such as app-wide settings or user authentication. Option D is incorrect because the card advises against using Context for frequently changing or complex state, recommending dedicated state management libraries instead.

    Read the full bite: React Context API: Avoid Prop Drilling

  17. Question 17 of 30

    When is useReducer generally preferred over useState for managing component state?

    Show the answer

    Answer: c · When state logic involves multiple interdependent sub-values or complex transitions.

    useReducer is specifically designed for complex state logic, particularly when state has many sub-values or when the next state depends on the previous one. For simple, independent state values, useState is more appropriate and less verbose.

    Read the full bite: useReducer: Manage Complex State with Predictable Actions

  18. Question 18 of 30

    Which statement accurately describes a crucial aspect of error handling when using React Native's fetch API?

    Show the answer

    Answer: b · It is essential to explicitly catch fetch errors, as they otherwise fail silently.

    The card explicitly states, 'The footgun: always catch errors, or they will fail silently.' This emphasizes the critical need for explicit error handling with `fetch` to prevent issues from going unnoticed. Other options describe features not inherent to `fetch` or misrepresent its error handling behavior.

    Read the full bite: React Native: Making Network Requests with Fetch

  19. Question 19 of 30

    What is a key advantage of using Axios for HTTP requests compared to the native fetch API?

    Show the answer

    Answer: c · It consistently rejects Promises for HTTP error status codes like 404 or 500.

    The card explicitly states that 'fetch doesn't automatically reject on HTTP error codes like 404 or 500,' whereas Axios provides 'better error handling' by consistently rejecting in such scenarios. Other options misrepresent Axios's asynchronous nature, error handling scope, or environment compatibility.

    Read the full bite: Axios: A Simpler Way to Make HTTP Requests

  20. Question 20 of 30

    Why is SafeAreaView no longer recommended for new React Native projects?

    Show the answer

    Answer: c · It is officially deprecated in favor of a more robust, cross-platform library.

    The card explicitly states that SafeAreaView is 'officially deprecated' and that the 'core team now recommends the react-native-safe-area-context library, which offers more granular control, works on both iOS and Android.' Option D is incorrect because SafeAreaView's primary function was to automatically apply padding, not require manual specification.

    Read the full bite: SafeAreaView: Avoid Notches and Status Bars (Deprecated)

  21. Question 21 of 30

    For which scenario would ActionSheetIOS be an unsuitable choice?

    Show the answer

    Answer: a · Displaying a menu that needs to function identically on both iOS and Android.

    ActionSheetIOS is an iOS-specific API and will crash on Android, making it unsuitable for cross-platform menus requiring consistent UI. The other options describe appropriate use cases for ActionSheetIOS.

    Read the full bite: ActionSheetIOS: Native iOS Action Menus

  22. Question 22 of 30

    What is the primary reason React Native uses Animated.Value for animations?

    Show the answer

    Answer: d · To ensure animations run smoothly by offloading them to the native UI thread.

    Animated.Value is designed to offload animation logic from the JavaScript thread to the native UI thread, which ensures smooth, 60 FPS animations even under heavy JS workload. Conversely, it's explicitly stated that you cannot read its value synchronously, making that option incorrect.

    Read the full bite: Animated.Value: The Driver for React Native Animations

  23. Question 23 of 30

    What is the main advantage of including "useNativeDriver: true" in React Native's Animated API configuration?

    Show the answer

    Answer: a · It ensures the animation runs on the native thread, preventing the JavaScript thread from blocking UI updates.

    The card states that "useNativeDriver: true" keeps animations smooth by running them off the JavaScript thread, thus preventing blockages from a busy JS thread. While the Animated API generally avoids React re-renders (Option D), "useNativeDriver" specifically moves the animation execution to the native thread for enhanced performance and smoothness.

    Read the full bite: Animated: Drive Styles with Values, Not Setters

  24. Question 24 of 30

    Which animation property cannot be directly controlled by useNativeDriver: true in React Native?

    Show the answer

    Answer: b · height

    The card states that useNativeDriver cannot animate properties that affect layout, such as 'height'. It is limited to 'transform' properties (like 'translateX' and 'rotate') and 'opacity'.

    Read the full bite: useNativeDriver: Offload Animations from the JS Thread

  25. Question 25 of 30

    A unified permissions library in React Native primarily offers what benefit, and what critical setup step is often overlooked?

    Show the answer

    Answer: b · It simplifies cross-platform permission requests with a single API, but demands specific native project file configurations.

    The card emphasizes that a unified permissions library provides a single JavaScript API to manage platform-specific requests, and explicitly states that configuring native project files (e.g., Podfile) is a crucial step. Option D is incorrect because the library bridges to native, not allowing direct JS hardware control, and it simplifies checks rather than requiring manual ones.

    Read the full bite: Handling Permissions in React Native

  26. Question 26 of 30

    What is a key limitation when using React Native's Share API?

    Show the answer

    Answer: a · It cannot provide reliable confirmation if a user successfully shared content on Android.

    The card states that "on Android, it always resolves with Share.sharedAction, regardless of whether the user shared or backed out," indicating it cannot reliably confirm a successful share. The API is designed for cross-platform use with a single method call, making option D incorrect.

    Read the full bite: React Native's Share API: Use the Native Share Sheet

  27. Question 27 of 30

    Which scenario best illustrates the appropriate use of React Native's Performance Monitor?

    Show the answer

    Answer: c · Quickly confirming a suspicion of UI jank during development.

    The Performance Monitor is a quick, in-app guide for immediate feedback during development to confirm suspected issues like UI jank. It is explicitly not for accurate measurements, deep analysis, or final profiling before release, which require native tools.

    Read the full bite: React Native's Performance Monitor Overlay

  28. Question 28 of 30

    What is the primary reason Flipper is not recommended for new React Native projects?

    Show the answer

    Answer: a · The project has been archived and is no longer actively maintained.

    The card explicitly states that Flipper's repository is archived and no longer maintained, making it unsuitable for new projects due to potential future compatibility issues. Other options are not supported by the card's content; for example, Flipper was integrated by default in RN 0.62+.

    Read the full bite: Flipper: A Desktop Debugger for React Native

  29. Question 29 of 30

    How does Jest primarily test React Native components without a physical device?

    Show the answer

    Answer: a · By executing the component's JavaScript logic in a Node.js environment.

    The card states Jest runs component JavaScript code in a Node.js environment, mocking native components. It does not render pixels, perform E2E tests, or test native module implementations.

    Read the full bite: Unit Testing React Native Components with Jest

  30. Question 30 of 30

    What is the primary reason for archiving a React Native iOS application?

    Show the answer

    Answer: b · To generate an optimized, self-contained package for App Store submission.

    Archiving creates an optimized, standalone package suitable for public distribution to the App Store or TestFlight, as it bundles JavaScript locally and disables developer tools. Options like hot reloading or developer menus are features of debug builds, not archived release builds.

    Read the full bite: Archiving a React Native iOS App for Release

Could you explain these out loud?

That is what an interview actually tests. Tezvyn gives you questions like these with what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon