SIGN IN SIGN UP

Run RCTAccessibilityManager methods on the main queue (#58476)

Summary:
Pull Request resolved: https://github.com/react/react-native/pull/58476

RCTAccessibilityManager mirrors UIKit accessibility state into ivars from nine
NSNotificationCenter handlers, which are delivered on the main thread. The module
declared no methodQueue, so its exported methods ran on the JS thread instead, and
none of its properties are atomic.

That leaves the content size multipliers open to a data race. The `multipliers`
getter lazily assigns `_multipliers` on read and is reached from the main thread via
the content size category notification, while `setAccessibilityContentSizeMultipliers:`
reaches `setMultipliers:` from the JS thread and releases the previous dictionary.
Concurrent access can over-release that dictionary and leave a dangling pointer
behind, which then faults on the next message to it.

Declare methodQueue as the main queue so the exported methods and the notification
handlers serialize on one thread. The module already requires main queue setup and
every method reads UIKit-derived state, so this matches how it is used.

Changelog:
[iOS][Fixed] - Fix data race on accessibility content size multipliers in `RCTAccessibilityManager`

Reviewed By: javache

Differential Revision: D119565016

fbshipit-source-id: 53cee1f9f5984519964e0e8fa8df12f1e7fa88f7
C
Christoph Purrer committed
ea2ca1b9211176bc482e33eef0118f1aefce2593
Parent: be53e3a
Committed by meta-codesync[bot] <215208954+meta-codesync[bot]@users.noreply.github.com> on 9/11/2026, 3:06:20 PM