Skip to content

[iOS] Don't iterate to root while resolving recognizer#4202

Merged
j-piasecki merged 1 commit into
mainfrom
@jpiasecki/add-return-condition
May 27, 2026
Merged

[iOS] Don't iterate to root while resolving recognizer#4202
j-piasecki merged 1 commit into
mainfrom
@jpiasecki/add-return-condition

Conversation

@j-piasecki

Copy link
Copy Markdown
Member

Description

The updated loop in #4199 didn't accurately represent the semantics from the old arch. It didn't stop on the views managed by React Native, instead iterating to the root of the hierarchy.

Test plan

Checked that it doesn't regress #4199

Copilot AI review requested due to automatic review settings May 27, 2026 14:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts iOS gesture-handler lookup logic to avoid traversing all the way to the root view when trying to resolve a UIGestureRecognizer to an RNGestureHandler, restoring the “stop at React Native–managed views” semantics that existed in the old architecture.

Changes:

  • Update findGestureHandlerByRecognizer: to walk superviews looking for an RNDummyGestureRecognizer, but stop once a React Native Fabric-managed view (RCTViewComponentView) is reached.
  • Avoid local-variable shadowing by renaming the inner loop variable from recognizer to candidateRecognizer.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@j-piasecki j-piasecki merged commit fba4dcc into main May 27, 2026
4 checks passed
@j-piasecki j-piasecki deleted the @jpiasecki/add-return-condition branch May 27, 2026 14:19
m-bert added a commit that referenced this pull request Jun 11, 2026
## Description

Cherry pick thread for release 2.32

## List of PRs

| PR  | Original commit |  Picked commit | Without confilct | 
|:----------:|:-------------:|:------:|:--------:|
| [[Android] Remove
`getChildInDrawingOrderAtIndex`](#4156)
|
[f1f09bc](f1f09bc)
|
[d76f2d9](d76f2d9)
| ❌ |
| [[iOS] Fix duplicated
`testID`](#4186)
|
[7feab6e](7feab6e)
|
[d1173ec](d1173ec)
| ❌ |
| [[Android] Fix discrete gestures not triggering
`onFinalize`](#4196)
|
[117087e](117087e)
|
[06212cf](06212cf)
| ✅ |
| [[Android] Fix wrong reported number of
pointers](#4218)
|
[f17bcbd](f17bcbd)
|
[5fd30f6](5fd30f6)
| ❌ |
| [fix(pods): Fix invalid `react-native/../react-native` resolution for
aliases](#4232)
|
[9a9f8b4](9a9f8b4)
|
[cacf6c0](cacf6c0)
| ✅ |
| [Move ruby utils to
module](#4245)
|
[62d0d52](62d0d52)
|
[3884f30](3884f30)
| ❌ |
| [[iOS] Fix handler retrieval and mismatched coordinate
space](#4199)
|
[b1da40b](b1da40b)
|
[2b48a8e](2b48a8e)
| ❌ |
| [[iOS] Don't iterate to root while resolving
recognizer](#4202)
|
[fba4dcc](fba4dcc)
|
[b81f2aa](b81f2aa)
| ❌ |
| [Support React Native
0.86](#4166)
|
[96dfc00](96dfc00)
|
[7df6d1a](7df6d1a)
| ❌ |
| [Fix `RNRenderer` import for React Native
0.86](#4160)
|
[0417378](0417378)
|
[6775d33](6775d33)
| ❌ |
| [Bump `expo` to stable
56](#4227)
|
[45e6ac8](45e6ac8)
|
[0478bb5](0478bb5)
| ❌ |
| [[macOS] Bump example
app](#3993)
|
[8ec0820](8ec0820)
|
[cfc5dd4](cfc5dd4)
| ❌ |
| [Bump
Reanimated](#4040)
|
[23d96d9](23d96d9)
|
[a2101eb](a2101eb)
| ❌ |
| [fix(Android): apply `numberOfPointers` config to the pointer
requirement in
`LongPressGestureHandler`](#4253)
|
[a70c6e3](a70c6e3)
|
[af40f9b](af40f9b)
| ✅ |

## Test plan

Tested that example apps are built correctly

---------

Co-authored-by: Pieter De Baets <pieter.debaets@gmail.com>
Co-authored-by: Mathieu Acthernoene <zoontek@gmail.com>
Co-authored-by: Jakub Piasecki <jakub.piasecki@swmansion.com>
Co-authored-by: Phil Pluckthun <phil@kitten.sh>
Co-authored-by: prashanFOMO <prashan@fomo.family>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants