Skip native prop metadata for delegate-backed managers (#59296) #59296

Open
javache opened 8:10am on October 21, 2026 wants to merge 407 Ξ” into facebook/react-native main from
export-D126630163

Pull Request Overview

  • Opened on October 21, 2026
  • Status Open
  • Commit count 1 with first commit October 22, 2026

Total Delta

407 Total Diff Delta

Open Days

Open 15 weekdays

Test Delta

199 Diff Delta in Test Files
Breakdown by Phase

How long has this pull request spent in each phase of its lifecycle?

Fraction of total time Business days Phase
 
0.0 days Authoring 0 commits before pull request opened for review
 
0.0 days Awaiting first review
 
15.9 days Revising work with 1 commit in response to 0 reviews that left 1 comment

Total time for pull request still awaiting merge (longer than repo's target): 15.9 business days

Author avatar

Skip native prop metadata for delegate-backed managers (#59296)

Summary:

Add the default-off skipNativePropsForViewManagerWithDelegateAndroid feature flag. When enabled, ViewManager.getNativeProps() returns an empty map for managers with a non-null, non-generic delegate, avoiding unused manager and shadow-node prop metadata generation. Return a fresh mutable map so subclasses can safely extend super.getNativeProps(). The constants helper already omits NativeProps for an empty map; commands, events and custom constants are preserved.

Null and generic delegates keep the existing metadata path, including its legacy-architecture shadow-node handling. The flag must only be enabled when delegate-backed components use static view configs rather than runtime native prop metadata.

NativeProps queries reuse getOrCreateViewManagerDelegate(), sharing the same delegate with prop updates and commands. Make its lazy initialisation thread-safe with a volatile cache and double-checked synchronisation, leaving warm reads lock-free. Document that initialisation may occur on the JavaScript thread when this flag is enabled.

Regenerate all feature-flag bindings and cover enabled/disabled paths, generic and null delegates, marker-only managers, preserved constants, subclass prop extensions, independent mutable maps, existing-cache reuse and concurrent metadata/command initialisation.

Changelog:
[Android][Changed] - Add an opt-in optimisation to skip native prop metadata for delegate-backed view managers using static view configs.

Differential Revision: D126630163

Comments Threads Pending Resolution

Resolved Comment Threads

No resolved comments have been left on this PR.