Frame-perfect by construction
The header is translated inside the same native scroll callback that moved the list. There is no second update path to fall behind.
Native collapsible tabs for React Native with a collapsing header, pinned tab bar, swipeable pages and FlashList support, for iOS and Android.


A collapsing header and pinned tab bar over a native pager. The collapse is driven by UIKit and ViewPager2, not by JavaScript or a worklet, so a busy JS thread cannot pull the header away from the content.
In implementations where the list moves natively while the header is updated through a separate animation path, fed by the scroll event, the two updates can become visibly unsynchronised during fast flings, particularly under JS-thread load. It shows as a gap opening between the tab bar and the content, most often on Android and on iOS whenever the JS thread is busy.
This library removes the second update path instead of trying to keep up with it: the header is moved inside the same native scroll callback that moved the list, so there is nothing to fall behind. Read how it works for the mechanism, the comparison with JS and Reanimated approaches, the FlashList guide, the benchmarks, and what it does not do before choosing it.
yarn add react-native-collapsible-tabs-native
cd ios && pod install