Skip to content

Add allowsKeyboardScrolling prop to ScrollView for scrolling its content with hardware keyboard input#56671

Open
ArturKalach wants to merge 2 commits intofacebook:mainfrom
ArturKalach:ios-allows-keyboard-scrolling
Open

Add allowsKeyboardScrolling prop to ScrollView for scrolling its content with hardware keyboard input#56671
ArturKalach wants to merge 2 commits intofacebook:mainfrom
ArturKalach:ios-allows-keyboard-scrolling

Conversation

@ArturKalach
Copy link
Copy Markdown
Contributor

@ArturKalach ArturKalach commented May 2, 2026

Summary:

Apple introduced allowsKeyboardScrolling at WWDC 2023 (session 10281) — a UIScrollView property that enables scroll views to respond to Page Up, Page Down, Home, and End keys on iPad and iPhone.

React Native currently has no support for this property, leaving users on iOS 17+ without the expected keyboard navigation behavior. This was reported by @filip-angelov in #52833.

This PR enables allowsKeyboardScrolling by default for devices running iOS 17.0+, bringing React Native scroll behavior in line with native UIKit defaults and improving the experience for users with external keyboards.

Changelog:

[IOS] [ADDED] - Add allowsKeyboardScrolling prop to ScrollView to allows scrolling its content with hardware keyboard input

Test Plan:

  1. Enable Full Keyboard Access on the device and connect an external keyboard.
  2. Open a screen with a ScrollView on a device running iOS 17 or later.
  3. Verify scrolling works with the following keys:
    • Home / End — scrolls to top / bottom (fn+left/right)
    • Page Up / Page Down — scrolls by page (fn+up/down)
  4. Set allowsKeyboardScrolling={false} and verify that keyboard scrolling is disabled.
disabled enabled
https://github.com/user-attachments/assets/0d44a665-408c-4dbd-9a8d-818f71a0d9c9 https://github.com/user-attachments/assets/a253d277-9a5e-4403-929b-f477494d74cd

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label May 2, 2026
@ArturKalach ArturKalach changed the title feat: add allowsKeyboardScrolling prop to ScrollView for native api s… Add allowsKeyboardScrolling prop to ScrollView for native api s… May 2, 2026
@ArturKalach ArturKalach changed the title Add allowsKeyboardScrolling prop to ScrollView for native api s… Add allowsKeyboardScrolling prop to ScrollView for native api support May 2, 2026
@ArturKalach ArturKalach changed the title Add allowsKeyboardScrolling prop to ScrollView for native api support Add allowsKeyboardScrolling prop to ScrollView for native API support May 2, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

Warning

JavaScript API change detected

This PR commits an update to ReactNativeApi.d.ts, indicating a change to React Native's public JavaScript API.

  • Please include a clear changelog message.
  • This change will be subject to additional review.

This change was flagged as: POTENTIALLY_BREAKING

@ArturKalach ArturKalach changed the title Add allowsKeyboardScrolling prop to ScrollView for native API support Add allowsKeyboardScrolling prop to ScrollView for scrolling its content with hardware keyboard input May 2, 2026
@facebook-github-tools facebook-github-tools Bot added the Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. label May 2, 2026
@ArturKalach ArturKalach force-pushed the ios-allows-keyboard-scrolling branch from 7e9d145 to 34e2fc4 Compare May 2, 2026 13:11
@ArturKalach ArturKalach force-pushed the ios-allows-keyboard-scrolling branch 3 times, most recently from a28b1ea to 2659326 Compare May 2, 2026 18:09
@ArturKalach ArturKalach force-pushed the ios-allows-keyboard-scrolling branch from 2659326 to 43851f2 Compare May 2, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant