Skip to content

RefreshControl doesn't get dragged all the way on Android #49734

Description

@tpcstld

Description

If the user swipes up really fast on a ScrollView with a RefreshControl, the RefreshControl may be stuck on the screen.

Steps to reproduce

Minimal Repro:

import * as React from "react";
import { RefreshControl, ScrollView } from "react-native";

export default function HomeScreen() {
  return (
    <ScrollView
      style={{ backgroundColor: "red", height: "100%" }}
      refreshControl={<RefreshControl refreshing={false} />}
    />
  );
}
  1. Slowly drag down from the middle of the screen to bring the refresh control into the viewport.
  2. While holding onto the finger, quickly drag upwards -- beyond your starting position.

Expected: The RefreshControl gets bought up beyond the top of the ScrollView.
Actual: The RefreshControl gets stuck in the middle of the ScrollView and ignores touch events until the finger is brought back to below the starting position.

This problem occurs on both Paper and Fabric.

React Native Version

0.78.0

Affected Platforms

Runtime - Android

Output of npx @react-native-community/cli info

info Fetching system and libraries information...
System:
  OS: macOS 15.2
  CPU: (16) arm64 Apple M4 Max
  Memory: 302.83 MB / 64.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.12.2
    path: ~/.nix-profile/bin/node
  Yarn:
    version: 1.22.19
    path: ~/.nix-profile/bin/yarn
  npm:
    version: 10.5.0
    path: ~/.nix-profile/bin/npm
  Watchman:
    version: 2024.03.11.00
    path: /Users/jerryjiang/.nix-profile/bin/watchman
Managers:
  CocoaPods: Not Found
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.2
      - iOS 18.2
      - macOS 15.2
      - tvOS 18.2
      - visionOS 2.2
      - watchOS 11.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.2 AI-242.23726.103.2422.12816248
  Xcode:
    version: 16.2/16C5032a
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 21.0.4
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.77.1
    wanted: 0.77.1
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: Not found
  newArchEnabled: Not found
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

Stacktrace or Logs

Not relevant.

Reproducer

https://github.com/tpcstld/scrollview-refresh-control

Screenshots and Videos

Screen.Recording.2025-02-27.at.12.42.46.PM.mov

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions