NativeAccessibilityManager.setAccessibilityContentSizeMultipliers(…) not actually changing defaults
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C++
- Sterne
- 127k
- Forks
- 25.3k
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 4
Beschreibung
Description
On new architecture, NativeAccessibilityManager.setAccessibilityContentSizeMultipliers(…) seems to not actually update the rendered text scales on iOS over the default values hardcoded in https://github.com/facebook/react-native/blob/main/packages/react-native/React/Base/RCTUtils.mm#L366-L377. On old architecture, these reflect immediately.
Reproducible with Expo 53 in 0.79.5, 0.80.1 (npx expo install expo@canary --fix), and 0.80.2 (yarn add react-native@0.80.2).
- Calling it on JavaScript initialization (outside/before render) doesn't work either.
- Interestingly, JS and event handlers report the updated values but the actual rendering does not change. I believe that is why this
rn-testerAccessibilityManagerTeststill passes. - As would be expected, patching the values in
RCTUtils.mmbefore buildingreact-nativedoes reflect so these are the ones being used by Fabric.
Aside: I'm not sure what the plan is forNativeAccessibilityManager given the move away from exposing private APIs but the community probably does need a way to update these values.
Steps to reproduce
- Open https://snack.expo.dev/@shollington-popeyes/fc57d4 (just App.js modified).
- Make sure you are in non-large Font Scaling mode (iOS settings or button at the bottom of Snack).
- Click the "Change Accessibility Multipliers" button and observe no actual change in font scaling.
React Native Version
0.80.2
Affected Platforms
Runtime - iOS
Areas
Fabric - The New Renderer
Output of npx @react-native-community/cli info
info Fetching system and libraries information...
System:
OS: macOS 15.5
CPU: (10) arm64 Apple M4
Memory: 143.27 MB / 24.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.17.0
path: ~/.nvm/versions/node/v22.17.0/bin/node
Yarn:
version: 1.22.22
path: ~/.nvm/versions/node/v22.17.0/bin/yarn
npm:
version: 10.9.2
path: ~/.nvm/versions/node/v22.17.0/bin/npm
Watchman:
version: 2025.06.30.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 24.5
- iOS 18.5
- macOS 15.5
- tvOS 18.5
- visionOS 2.5
- watchOS 11.5
Android SDK: Not Found
IDEs:
Android Studio: 2025.1 AI-251.25410.109.2511.13665796
Xcode:
version: 16.4/16F6
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.15
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.80.2
wanted: 0.80.2
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: Not found
newArchEnabled: Not found
iOS:
hermesEnabled: Not found
newArchEnabled: Not found
Stacktrace or Logs
There is no crash. It is visual/rendering/layout issue.
MANDATORY Reproducer
https://snack.expo.dev/@shollington-popeyes/fc57d4
Screenshots and Videos
| Old Architecture | New Architecture |
|---|---|
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit den hartcodierten Standardwerten in packages/react-native/React/Base/RCTUtils.mm und verfolge, wie NativeAccessibilityManager Fabric auf iOS erreicht. Vergleiche diesen Pfad mit rn-tester/IntegrationTests/AccessibilityManagerTest.js und reproduziere das Verhalten mit dem verlinkten Snack. Die Aufgabe ist abgeschlossen, wenn Änderungen am Laufzeitmultiplikator den gerenderten Text unter der neuen Architektur beeinflussen und eine Testabdeckung für die Regression vorhanden ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp, ios, objective-c, react-native
- Bereich
- accessibility, mobile
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100