NativeAccessibilityManager.setAccessibilityContentSizeMultipliers(…) not actually changing defaults
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 127k
- Forks
- 25.3k
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 4
Descripción
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 |
|---|---|
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con los valores predeterminados codificados en packages/react-native/React/Base/RCTUtils.mm y sigue cómo NativeAccessibilityManager llega a Fabric en iOS. Compara ese recorrido con rn-tester/IntegrationTests/AccessibilityManagerTest.js y reproduce el problema usando el Snack enlazado. Se considera terminado cuando los cambios en el multiplicador en tiempo de ejecución afectan al texto renderizado con la nueva arquitectura y existe cobertura para la regresión.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp, ios, objective-c, react-native
- Área
- accessibility, mobile
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100