Skip to content

FlatList (and also SectionList) onEndReached fires only once a few seconds after opening the app, then it never triggers again. #3686

@AndrianarivoAlpha

Description

@AndrianarivoAlpha

Description

After upgrading from Expo SDK 51 → SDK 52 (React Native 0.76), both FlatList and SectionList no longer trigger onEndReached reliably.

In SDK 51, onEndReached fires every time the user scrolls to the bottom of the list (as expected).

In SDK 52, onEndReached only fires once (a few seconds after opening the app), and then never triggers again — even if the user scrolls to the bottom multiple times.

This regression breaks infinite scrolling / pagination in production apps, since the callback is essential to load more data.
The issue is reproducible with a minimal FlatList example and does not depend on custom components or libraries (also happens with a brand-new blank Expo app).

Steps to reproduce

Start with an existing Expo project running SDK 51 where FlatList / SectionList pagination works normally (i.e. onEndReached fires every time the bottom is reached).

Upgrade the project to Expo SDK 52 (React Native 0.76) by following the official upgrade guide:

npx expo install --fix

Run the app again on Android or iOS.

Navigate to a screen with a FlatList or SectionList that uses onEndReached for pagination.
Example:

<FlatList
data={follows}
keyExtractor={(item) => item?.username}
renderItem={({ item }) => }
contentContainerStyle={tw``}
initialNumToRender={21}
maxToRenderPerBatch={7}
windowSize={7}
onEndReached={onEndReached}
onEndReachedThreshold={0.5}
/>

20250823_052212000_iOS.MP4

Scroll down to the end of the list.

🐞 Observed Behavior

In SDK 51: onEndReached fires reliably every time the end is reached.

In SDK 52: onEndReached fires once (a few seconds after opening the app).

After that, scrolling to the bottom does not trigger it again.

Same behavior occurs with both FlatList and SectionList.

✅ Expected Behavior

onEndReached should consistently fire each time the user reaches the bottom of the list, just like in SDK 51.

A link to a Gist, an Expo Snack or a link to a repository based on this template that reproduces the bug.

https://github.com/AndrianarivoAlpha/react-native-gesture-handler-bug/blob/main/ReproducerApp/App.js

Gesture Handler version

~2.20.2

React Native version

0.76.9

Platforms

iOS

JavaScript runtime

Hermes

Workflow

Using Expo Prebuild or an Expo development build

Architecture

New Architecture (Fabric)

Build type

Release mode

Device

Real device

Device model

All dvices

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    Platform: iOSThis issue is specific to iOSRepro providedA reproduction with a snack or repo is provided

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions