Pull to refresh
All exported components inherits props of their underlying scroll component, to use default refresh control, just pass onRefresh & refreshing props. If you want to have custom setup (e.g. custom style), pass component as refreshControl prop
  <StickyHeaderScrollView
    // ...
    onRefresh={onRefresh}
    refreshing={refreshing}
    // ...
  >
    {/** content */}
  </StickyHeaderScrollView>
  <StickyHeaderScrollView
    // ...
    refreshControl={
      <RefreshControl
        // z Index is required on IOS, to refresh indicator be visible
        style={{ zIndex: 1 }}
        refreshing={refreshing}
        titleColor="white"
        tintColor="white"
        title="Refreshing"
        onRefresh={onRefresh}
      />
    }
    // ...
  >
    {/** content */}
  </StickyHeaderScrollView>
danger
using RefreshControl on web, can break sticky header layout, because web implementation is just stubbed and doubles ScrollView's margin/padding
to handle that, use it only when platform is not web
{...Platform.select({ default: { onRefresh, refreshing }, web: undefined })}
refreshControl={
  Platform.select({
    default: (
      <RefreshControl
        // z Index is required on IOS, to refresh indicator be visible
        style={{ zIndex: 1 }}
        refreshing={refreshing}
        titleColor="white"
        tintColor="white"
        title="Refreshing"
        onRefresh={onRefresh}
      />
    ),
    web: undefined,
  })
}