Bird
Raised Fist0
React Nativemobile~5 mins

FlatList performance optimization in React Native - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of using FlatList in React Native?
FlatList efficiently renders large lists by rendering only visible items plus a small buffer, improving app performance and memory usage.
Click to reveal answer
beginner
Why should you provide a keyExtractor prop to a FlatList?
The keyExtractor helps React Native identify each item uniquely, enabling efficient updates and preventing unnecessary re-renders.
Click to reveal answer
intermediate
What does the initialNumToRender prop control in FlatList?
It controls how many items FlatList renders initially, helping balance startup speed and smooth scrolling.
Click to reveal answer
intermediate
How does using getItemLayout improve FlatList performance?
Providing getItemLayout lets FlatList calculate item positions without measuring, speeding up scroll and jump-to-index actions.
Click to reveal answer
advanced
What is the benefit of memoizing the renderItem function in FlatList?
Memoizing renderItem prevents unnecessary re-renders of list items, improving scroll performance and reducing CPU work.
Click to reveal answer
Which FlatList prop helps avoid re-rendering items by providing a unique identifier?
AonEndReached
BinitialNumToRender
CgetItemLayout
DkeyExtractor
What does setting initialNumToRender to a low number do?
ARenders fewer items initially to speed up startup
BDisables scrolling
CRenders all items at once
DIncreases memory usage
How does getItemLayout improve FlatList behavior?
ABy disabling scrolling
BBy rendering items in reverse order
CBy pre-calculating item sizes and positions
DBy increasing item padding
Why is memoizing renderItem useful in FlatList?
AIt disables item rendering
BIt prevents unnecessary re-renders of list items
CIt increases the number of items rendered
DIt changes item colors
Which prop triggers loading more data when the user scrolls near the end of the list?
AonEndReached
BkeyExtractor
CinitialNumToRender
DgetItemLayout
Explain how you can optimize FlatList performance when rendering a large list of items.
Think about how FlatList renders items and how to reduce work during scrolling.
You got /5 concepts.
    Describe the role of getItemLayout in FlatList and when you should use it.
    Consider how FlatList measures items during scrolling.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using FlatList in React Native?
      easy
      A. To efficiently render long lists by only rendering visible items
      B. To create complex animations for list items
      C. To handle user authentication in the app
      D. To manage app navigation between screens

      Solution

      1. Step 1: Understand FlatList's role

        FlatList is designed to render lists efficiently by only rendering items visible on the screen.
      2. Step 2: Compare options

        The other options describe unrelated features like animations, authentication, and navigation.
      3. Final Answer:

        To efficiently render long lists by only rendering visible items -> Option A
      4. Quick Check:

        FlatList optimizes rendering = A [OK]
      Hint: FlatList renders only visible items for performance [OK]
      Common Mistakes:
      • Thinking FlatList handles navigation
      • Confusing FlatList with animation libraries
      • Assuming FlatList manages user login
      2. Which of the following is the correct way to provide a fixed height for each item in a FlatList using getItemLayout?
      easy
      A. getItemLayout={(data, index) => ({length: index, offset: 50, index})}
      B. getItemLayout={(data, index) => ({length: 50, offset: index, index})}
      C. getItemLayout={(data, index) => ({length: 50, offset: 50 * index, index})}
      D. getItemLayout={(data, index) => ({length: 50, offset: 50 + index, index})}

      Solution

      1. Step 1: Understand getItemLayout parameters

        getItemLayout expects an object with length (item size), offset (distance from start), and index.
      2. Step 2: Calculate offset correctly

        Offset should be item height multiplied by index to position items correctly.
      3. Final Answer:

        getItemLayout={(data, index) => ({length: 50, offset: 50 * index, index})} -> Option C
      4. Quick Check:

        Offset = item height * index = B [OK]
      Hint: Offset equals item size times index in getItemLayout [OK]
      Common Mistakes:
      • Using index as offset directly
      • Adding index to offset instead of multiplying
      • Swapping length and offset values
      3. Given this FlatList snippet, what will be the initial number of items rendered on screen?
        <FlatList
          data={data}
          renderItem={({item}) => <Text>{item}</Text>}
          initialNumToRender={5}
        />
      medium
      A. 5 items
      B. All items in data
      C. 10 items
      D. No items until scrolled

      Solution

      1. Step 1: Understand initialNumToRender prop

        This prop controls how many items FlatList renders initially on screen.
      2. Step 2: Check the value given

        initialNumToRender is set to 5, so FlatList renders 5 items first.
      3. Final Answer:

        5 items -> Option A
      4. Quick Check:

        initialNumToRender = 5 means 5 items rendered initially [OK]
      Hint: initialNumToRender sets initial visible items count [OK]
      Common Mistakes:
      • Assuming all items render at once
      • Confusing initialNumToRender with maxToRenderPerBatch
      • Thinking no items render until scroll
      4. Identify the error in this FlatList usage that causes slow scrolling:
        <FlatList
          data={items}
          renderItem={({item}) => <Text>{item.name}</Text>}
          keyExtractor={(item) => item.id}
          removeClippedSubviews={false}
        />
      medium
      A. renderItem should return a View, not Text
      B. keyExtractor should return index instead of item.id
      C. data prop should be an object, not an array
      D. removeClippedSubviews should be true to improve performance

      Solution

      1. Step 1: Understand removeClippedSubviews effect

        Setting removeClippedSubviews to true helps FlatList remove off-screen items from memory, improving scroll performance.
      2. Step 2: Analyze current setting

        Currently, removeClippedSubviews is false, which can cause slow scrolling due to extra memory use.
      3. Final Answer:

        removeClippedSubviews should be true to improve performance -> Option D
      4. Quick Check:

        removeClippedSubviews true improves scroll speed [OK]
      Hint: Enable removeClippedSubviews for better scroll performance [OK]
      Common Mistakes:
      • Ignoring removeClippedSubviews prop
      • Using index as keyExtractor causing re-renders
      • Thinking renderItem must return View only
      5. You have a FlatList with 1000 items of fixed height 60. To optimize scrolling performance, which combination of props should you use?
      hard
      A. initialNumToRender=50, maxToRenderPerBatch=50, windowSize=10, getItemLayout missing
      B. initialNumToRender=10, maxToRenderPerBatch=10, windowSize=5, getItemLayout provided
      C. initialNumToRender=1, maxToRenderPerBatch=1, windowSize=1, getItemLayout missing
      D. initialNumToRender=1000, maxToRenderPerBatch=1000, windowSize=20, no getItemLayout

      Solution

      1. Step 1: Use getItemLayout for fixed height items

        Providing getItemLayout lets FlatList calculate item positions quickly, improving scroll speed.
      2. Step 2: Choose reasonable rendering batch sizes

        initialNumToRender=10 and maxToRenderPerBatch=10 balance initial load and batch rendering without overloading memory.
      3. Step 3: Set windowSize to control offscreen rendering

        windowSize=5 keeps a small buffer of items rendered outside viewport for smooth scrolling.
      4. Final Answer:

        initialNumToRender=10, maxToRenderPerBatch=10, windowSize=5, getItemLayout provided -> Option B
      5. Quick Check:

        Balanced props + getItemLayout = D [OK]
      Hint: Use getItemLayout with balanced batch sizes for big lists [OK]
      Common Mistakes:
      • Rendering all items at once causing lag
      • Missing getItemLayout for fixed height items
      • Setting windowSize too large or too small
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard