Skip to content

fix(react-native): handle accessibility escape back events - #444

Merged
gronxb merged 2 commits into
toss:mainfrom
minuukang:codex/fix-accessibility-escape-back-navigation
Nov 4, 2026
Merged

gronxb merged 2 commits into
toss:mainfrom
minuukang:codex/fix-accessibility-escape-back-navigation

Conversation

@minuukang

@minuukang minuukang commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

iOS VoiceOver escape gestures are not forwarded to Granite's router back handlers. Add an onAccessibilityEscape handler to CanGoBackGuard so these gestures call onBack({ source: 'accessibilityEscape' }).

The guard now wraps its children in a View with collapsable={false} to preserve the native event target and flex: 1 to fill the router container. The escape handler is registered only when hasBackEvent is true and onBack is provided. This also extends BackEventSource, adds regression coverage for registering and removing the escape handler as back events change, and includes a patch changeset.

Validation:

  • yarn workspace @granite-js/react-native test — 121 tests passed, including type tests.
  • yarn workspace @granite-js/react-native typecheck — passed after building its dependencies.
  • yarn workspace @granite-js/react-native build — passed.
  • ESLint and Prettier checks on changed files — passed (one existing react-hooks/exhaustive-deps warning).

Manual VoiceOver validation on an iOS device or simulator has not been run.

@vercel

vercel Bot commented Nov 4, 2026

Copy link
Copy Markdown

@minuukang is attempting to deploy a commit to the Toss Team on Vercel.

A member of the Team first needs to authorize it.

@changeset-bot

changeset-bot Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: d5e85b3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 31 packages
Name Type
@granite-js/react-native Patch
@granite-js/micro-frontend Patch
babel-preset-granite Patch
@granite-js/blur-view Patch
@granite-js/brownfield-module Patch
@granite-js/cli Patch
@granite-js/config Patch
@granite-js/cookies Patch
create-granite-app Patch
@granite-js/screen Patch
@granite-js/image Patch
@granite-js/jest Patch
@granite-js/lottie Patch
@granite-js/mpack Patch
@granite-js/native Patch
@granite-js/naver-map Patch
@granite-js/plugin-core Patch
@granite-js/plugin-env Patch
@granite-js/plugin-hermes Patch
@granite-js/plugin-micro-frontend Patch
@granite-js/plugin-router Patch
@granite-js/plugin-rozenite Patch
@granite-js/plugin-sentry Patch
@granite-js/rollipop Patch
@granite-js/style-utils Patch
@granite-js/utils Patch
@granite-js/video Patch
@granite-js/vitest Patch
@granite-js/deployment-manager Patch
@granite-js/forge-cli Patch
@granite-js/pulumi-aws Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new

pkg-pr-new Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
@granite-js/deployment-manager

yarn add https://pkg.pr.new/toss/granite/@granite-js/deployment-manager@444.tgz

@granite-js/forge-cli

yarn add https://pkg.pr.new/toss/granite/@granite-js/forge-cli@444.tgz

@granite-js/pulumi-aws

yarn add https://pkg.pr.new/toss/granite/@granite-js/pulumi-aws@444.tgz

babel-preset-granite

yarn add https://pkg.pr.new/toss/granite/babel-preset-granite@444.tgz

@granite-js/blur-view

yarn add https://pkg.pr.new/toss/granite/@granite-js/blur-view@444.tgz

@granite-js/brownfield-module

yarn add https://pkg.pr.new/toss/granite/@granite-js/brownfield-module@444.tgz

@granite-js/cli

yarn add https://pkg.pr.new/toss/granite/@granite-js/cli@444.tgz

@granite-js/config

yarn add https://pkg.pr.new/toss/granite/@granite-js/config@444.tgz

@granite-js/cookies

yarn add https://pkg.pr.new/toss/granite/@granite-js/cookies@444.tgz

create-granite-app

yarn add https://pkg.pr.new/toss/granite/create-granite-app@444.tgz

@granite-js/screen

yarn add https://pkg.pr.new/toss/granite/@granite-js/screen@444.tgz

@granite-js/image

yarn add https://pkg.pr.new/toss/granite/@granite-js/image@444.tgz

@granite-js/jest

yarn add https://pkg.pr.new/toss/granite/@granite-js/jest@444.tgz

@granite-js/lottie

yarn add https://pkg.pr.new/toss/granite/@granite-js/lottie@444.tgz

@granite-js/micro-frontend

yarn add https://pkg.pr.new/toss/granite/@granite-js/micro-frontend@444.tgz

@granite-js/mpack

yarn add https://pkg.pr.new/toss/granite/@granite-js/mpack@444.tgz

@granite-js/native

yarn add https://pkg.pr.new/toss/granite/@granite-js/native@444.tgz

@granite-js/naver-map

yarn add https://pkg.pr.new/toss/granite/@granite-js/naver-map@444.tgz

@granite-js/plugin-core

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-core@444.tgz

@granite-js/plugin-env

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-env@444.tgz

@granite-js/plugin-hermes

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-hermes@444.tgz

@granite-js/plugin-micro-frontend

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-micro-frontend@444.tgz

@granite-js/plugin-router

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-router@444.tgz

@granite-js/plugin-rozenite

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-rozenite@444.tgz

@granite-js/plugin-sentry

yarn add https://pkg.pr.new/toss/granite/@granite-js/plugin-sentry@444.tgz

@granite-js/react-native

yarn add https://pkg.pr.new/toss/granite/@granite-js/react-native@444.tgz

@granite-js/rollipop

yarn add https://pkg.pr.new/toss/granite/@granite-js/rollipop@444.tgz

@granite-js/style-utils

yarn add https://pkg.pr.new/toss/granite/@granite-js/style-utils@444.tgz

@granite-js/utils

yarn add https://pkg.pr.new/toss/granite/@granite-js/utils@444.tgz

@granite-js/video

yarn add https://pkg.pr.new/toss/granite/@granite-js/video@444.tgz

@granite-js/vitest

yarn add https://pkg.pr.new/toss/granite/@granite-js/vitest@444.tgz

commit: d5e85b3

@gronxb
gronxb merged commit dcd6832 into toss:main Nov 4, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants