Skip to content

RefreshControl Size Incorrect TypeScript Hint #53893

@prmntr

Description

@prmntr

Description

RefreshControl crashes on Android when size prop is passed as number instead of string. typescript hints incorrectly show size as number | undefined, but rn docs indicate enum values ("default" or "large"). This causes a runtime crash with "TypeError: expected dynamic type 'string', but had type 'double'" during native compilation

Steps to reproduce

  1. Create a ScrollView with RefreshControl component
  2. Pass size prop as a number as specified by TS (ex: size={80})
  3. Build and run on Android device
  4. Pull down to trigger refresh
  5. App crashes or hangs

React Native Version

0.79.5

Affected Platforms

Runtime - Android, Build - Windows

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

System:
  OS: Windows 11 10.0.26100
  CPU: (12) x64 13th Gen Intel(R) Core(TM) i5-13420H
  Memory: 16.78 GB / 31.71 GB
Binaries:
  Node:
    version: 22.14.0
    path: C:\Program Files\nodejs\node.EXE
  Yarn: Not Found
  npm:
    version: 11.5.2
    path: C:\Program Files\nodejs\npm.CMD
  Watchman: Not Found
SDKs:
  Android SDK: Not Found
  Windows SDK: Not Found
IDEs:
  Android Studio: AI-251.26094.121.2512.13840223
  Visual Studio: Not Found
Languages:
  Java: 17.0.12
  Ruby: Not Found
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 19.0.0
    wanted: 19.0.0
  react-native:
    installed: 0.79.5
    wanted: 0.79.5
  react-native-windows: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: Not found
  newArchEnabled: Not found
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

Stacktrace or Logs

09-22 15:40:43.897 29875 29933 E unknown:ReactHost: Caused by: com.facebook.react.common.JavascriptException: Error: Exception in HostFunction: TypeError: expected dynamic type 'string', but had type 'double'
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:
09-22 15:40:43.897 29875 29933 E unknown:ReactHost: This error is located at:
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at AndroidSwipeRefreshLayout (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RefreshControl (address at index.android.bundle:1:662069)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:493642)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTScrollView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ScrollView (address at index.android.bundle:1:667476)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Wrapper (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:493642)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:493642)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:493642)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Guidance (address at index.android.bundle:1:1636044)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspense (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Route (address at index.android.bundle:1:1369931)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at BaseRoute (address at index.android.bundle:1:1373686)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at StaticContainer (address at index.android.bundle:1:1260755)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at EnsureSingleNavigator (address at index.android.bundle:1:1200080)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SceneView (address at index.android.bundle:1:1258289)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:493642)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:589967)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Background (address at index.android.bundle:1:1301332)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Screen (address at index.android.bundle:1:1344462)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNSScreen (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:589967)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspender (address at index.android.bundle:1:1351495)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspense (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Freeze (address at index.android.bundle:1:1351555)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at DelayedFreeze (address at index.android.bundle:1:1350750)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at InnerScreen (address at index.android.bundle:1:1348362)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1350028)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at MaybeScreen (address at index.android.bundle:1:1393905)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNSScreenContainer (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ScreenContainer (address at index.android.bundle:1:1357804)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at MaybeScreenContainer (address at index.android.bundle:1:1394059)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at FrameSizeProvider (address at index.android.bundle:1:1330446)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaProviderCompat (address at index.android.bundle:1:1343541)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at BottomTabView (address at index.android.bundle:1:1379430)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at PreventRemoveProvider (address at index.android.bundle:1:1235738)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationStateListenerProvider (address at index.android.bundle:1:1267366)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationContent (address at index.android.bundle:1:1254656)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1254559)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at BottomTabNavigator (address at index.android.bundle:1:1378323)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1368857)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at TabLayout (address at index.android.bundle:1:1621668)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspense (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Route (address at index.android.bundle:1:1369931)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at BaseRoute (address at index.android.bundle:1:1373686)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at StaticContainer (address at index.android.bundle:1:1260755)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at EnsureSingleNavigator (address at index.android.bundle:1:1200080)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SceneView (address at index.android.bundle:1:1258289)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNSScreenContentWrapper (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ScreenContentWrapper (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at DebugContainer (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNSScreen (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:589967)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspender (address at index.android.bundle:1:1351495)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspense (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Freeze (address at index.android.bundle:1:1351555)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at DelayedFreeze (address at index.android.bundle:1:1350750)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at InnerScreen (address at index.android.bundle:1:1348362)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1350028)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ScreenStackItem (address at index.android.bundle:1:1360277)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SceneView (address at index.android.bundle:1:1295972)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNSScreenStack (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1359252)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ScreenStack (address at index.android.bundle:1:1358532)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at FrameSizeProviderInner (address at index.android.bundle:1:1330525)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at FrameSizeProvider (address at index.android.bundle:1:1330446)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaProviderCompat (address at index.android.bundle:1:1343541)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NativeStackView (address at index.android.bundle:1:1294553)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at PreventRemoveProvider (address at index.android.bundle:1:1235738)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationStateListenerProvider (address at index.android.bundle:1:1267366)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationContent (address at index.android.bundle:1:1254656)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1254559)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NativeStackNavigator (address at index.android.bundle:1:1293162)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1368857)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaEnv (address at index.android.bundle:1:1071193)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNCSafeAreaProvider (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaProvider (address at index.android.bundle:1:1073207)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaProviderShim (address at index.android.bundle:1:1071585)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ThemeProvider (address at index.android.bundle:1:1487672)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RootLayout (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Suspense (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Route (address at index.android.bundle:1:1369931)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at BaseRoute (address at index.android.bundle:1:1373686)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at StaticContainer (address at index.android.bundle:1:1260755)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at EnsureSingleNavigator (address at index.android.bundle:1:1200080)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SceneView (address at index.android.bundle:1:1258289)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at PreventRemoveProvider (address at index.android.bundle:1:1235738)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationStateListenerProvider (address at index.android.bundle:1:1267366)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationContent (address at index.android.bundle:1:1254656)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:1254559)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at Content (address at index.android.bundle:1:1475920)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaEnv (address at index.android.bundle:1:1071193)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RNCSafeAreaProvider (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaProvider (address at index.android.bundle:1:1073207)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at SafeAreaProviderShim (address at index.android.bundle:1:1071585)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at wrapper (address at index.android.bundle:1:1474984)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ThemeProvider (address at index.android.bundle:1:1203310)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at EnsureSingleNavigator (address at index.android.bundle:1:1200080)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at BaseNavigationContainer (address at index.android.bundle:1:1178561)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at NavigationContainerInner (address at index.android.bundle:1:1477726)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ContextNavigator (address at index.android.bundle:1:1475182)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at ExpoRoot (address at index.android.bundle:1:1474892)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at App (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at RCTView (<anonymous>)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:489598)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at anonymous (address at index.android.bundle:1:493642)
09-22 15:40:43.897 29875 29933 E unknown:ReactHost:     at AppContainer (address at index.android.bundle:1:488798)

MANDATORY Reproducer

#53889

Screenshots and Videos

image Image

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