Skip to content

Bug: StreamdownRN causes jumpy scroll behavior in FlashList v2 (Expo 54, new arch) #9

@eliasljubec

Description

@eliasljubec

Janky/jumpy scrolling behavior with StreamdownRN in FlashList v2 (Expo 54 + New Architecture)

First off, really appreciate the work on StreamdownRN, it's awesome ❤️. The streaming markdown capabilities are really nice!

Description

When rendering markdown content with StreamdownRN inside a FlashList v2 component, scrolling upward causes janky and jumpy behavior. This seems specific to the initial rendering of StreamdownRN components, as scrolling downward after the list has been rendered works correctly.

Environment

  • Expo SDK: 54.0.25
  • React Native: 0.81.5
  • FlashList: 2.0.2
  • StreamdownRN: 0.1.6
  • Architecture: New Architecture enabled
  • Platform: tested on iOS device only

Note: This issue was not present with Expo 53 and FlashList v1.

Steps to Reproduce

  1. Hook up the minimal example provided below.
  2. Scroll upward and try to count all 6 images in the list.
    • With StreamdownRN, you won’t be able to count all 6 due to the jumpy behavior. See: Screen Recording
    • With Markdown from react-native-markdown-display (which StreamdownRN uses under the hood) directly, all 6 images are shown and countable when scrolling up. See: Screen Recording

Minimal Reproducible Example

Minimal example file:

chat-history.tsx

Expected Behavior

Smooth scrolling in both directions, with all list items visible and accessible when scrolling upward.

Actual Behavior

  • Scrolling upward: Initially janky, jumpy behavior. Some items may not be visible or accessible (e.g. when counting images, not all 6 images can be counted when scrolling up).
  • Scrolling downward: Works correctly after initial render.
  • With react-native-markdown-display directly: Scrolling works fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions