Skip to content

Conversation

@fabriziocucci
Copy link
Contributor

Summary:
Changelog: [Android][Fixed] - Reset isClickable to false when recycling views to avoid accessibility tools finding views with incorrect state


This diff removes the shouldResetClickableWhenRecyclingView feature flag since it has been tested in FB4A for a month with defaultValue: true.

The flag was introduced to reset isClickable to false when recycling views on Android to avoid accessibility tools finding views with incorrect state after recycling. This behavior is now the default.

Changes:

  • Removed the flag definition from ReactNativeFeatureFlags.config.js
  • Removed the conditional check in BaseViewManager.java, now view.setClickable(false) is always called unconditionally
  • Regenerated all feature flag files via js1 featureflags --update

Reviewed By: javache

Differential Revision: D90380899

Fabrizio Cucci and others added 2 commits January 9, 2026 01:44
Summary:
We decided not to pursue the approach of setting `isClickable=true` by default on all React Native views (Option 1 in the design doc). While this would improve UI harvesting detection for Gaze-based interaction, propagating the pointer events semantics on the whole hierarchy to keep `isClickable` in sync with each node's `pointerEvents` value is expensive (O(N) in worst case for hierarchy construction, reparenting, and dynamic pointerEvents updates).

Instead, we will pursue Option 2: deriving `importantForInteraction` from pointer events, which doesn't require updating `isClickable` at all.

See design doc: https://docs.google.com/document/d/15Fi47zOHQh--KFWLUxQAUmBENgnZ0ZkYsKyOshPzBAo/edit?tab=t.0#heading=h.61xuoxksjdrp

Changes:
- Removed the `shouldSetIsClickableByDefault` flag from `ReactNativeFeatureFlags.config.js`
- Removed the `configureClickableState` method from `BaseViewManager.java`
- Removed the call to `configureClickableState` from `onAfterUpdateTransaction`
- Regenerated all feature flag files via `js1 featureflags --update`

Differential Revision: D90378897
Summary:
Changelog: [Android][Fixed] - Reset isClickable to false when recycling views to avoid accessibility tools finding views with incorrect state

 ---

This diff removes the `shouldResetClickableWhenRecyclingView` feature flag since it has been tested in FB4A for a month with `defaultValue: true`.

The flag was introduced to reset `isClickable` to false when recycling views on Android to avoid accessibility tools finding views with incorrect state after recycling. This behavior is now the default.

Changes:
- Removed the flag definition from `ReactNativeFeatureFlags.config.js`
- Removed the conditional check in `BaseViewManager.java`, now `view.setClickable(false)` is always called unconditionally
- Regenerated all feature flag files via `js1 featureflags --update`

Reviewed By: javache

Differential Revision: D90380899
@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 Jan 9, 2026
@meta-codesync
Copy link

meta-codesync bot commented Jan 9, 2026

@fabriziocucci has exported this pull request. If you are a Meta employee, you can view the originating Diff in D90380899.

@meta-codesync meta-codesync bot closed this in 07c0539 Jan 10, 2026
@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Jan 10, 2026
@meta-codesync
Copy link

meta-codesync bot commented Jan 10, 2026

This pull request has been merged in 07c0539.

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. fb-exported Merged This PR has been merged. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants