NativeAccessibilityManager.setAccessibilityContentSizeMultipliers(…) not actually changing defaults
还没有人认领这个 Issue。
- 主要语言
- C++
- 星标
- 127k
- 派生
- 25.3k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 4
描述
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 |
|---|---|
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 packages/react-native/React/Base/RCTUtils.mm 中硬编码的默认值开始,追踪 NativeAccessibilityManager 如何在 iOS 上到达 Fabric。将该路径与 rn-tester/IntegrationTests/AccessibilityManagerTest.js 进行比较,并使用链接的 Snack 重现问题。完成标准是:在新架构下,运行时乘数的变化会影响渲染出的文本,并且为此次回归提供覆盖测试。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- cpp, ios, objective-c, react-native
- 领域
- accessibility, mobile
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 42/100