Skip to content

[Android][SectionList/FlatList] scrollTo not working because offset is outside rendered "canvas" #15479

@peterjuras

Description

@peterjuras

Is this a bug report?

Yes

Have you read the Contributing Guidelines?

Yes

Environment

  1. react-native -v: 0.46.4
  2. node -v: 8.1.4
  3. npm -v: 5.3.0
  4. yarn --version: 0.27.5

Then, specify:

  • Target Platform: Android
  • Development Operating System: macOS
  • Build tools: irrelevant for bug

Steps to Reproduce

In general, I am trying to preserve scroll position when a user navigates away from a ListView and then back again.

  1. Display a or (I'm using SectionList for my use case) with 1000 items à ~50 pixels height
  2. In componentDidMount scroll to an offset that is deep down the list (e.g. offset 1000). You can use the scrollTo method of the underlying ref (this.sectionList._wrapperListRef._listRef) or implement getItemLayout and use scrollToLocation*
  3. Wrap the scrollTo* call in a setTimeout(... scrollTo ..., 0)

Expected Behavior

On Android it should scroll until the desired position, just like on iOS.

Actual Behavior

-> On iOS it is working, on Android it will only scroll until the 10th item, because only 10 items are rendered initally

Workaround: Setting initialNumToRender to 1000 will work, but this might crash on low end devices.

Reproducible Demo

Please check out this CRNA sample to reproduce the bug:
https://github.com/peterjuras/rn-list-scrollTo-bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions