Repository navigation
[0.77.1] minimumFontScale doesn't work in New Arch #50248
Copy link
Copy link
Closed
Labels
Needs: Triage 🔍Type: New ArchitectureIssues and PRs related to new architecture (Fabric/Turbo Modules)Issues and PRs related to new architecture (Fabric/Turbo Modules)
Description
Description
Text props minimumFontScale doesn't work
Steps to reproduce
- Install default app (npx @react-native-community/cli@latest init AwesomeProject)
- Wrap Text to small View (width:100, height:100)
- Add large text into text component
- Set text props ( adjustsFontSizeToFit={true}
minimumFontScale={0.9}
numberOfLines={1} ) - See result, text are small
React Native Version
0.77.1
Affected Platforms
Runtime - Android, Runtime - iOS
Areas
Fabric - The New Renderer
Output of npx @react-native-community/cli info
System:
OS: macOS 15.1.1
CPU: (12) arm64 Apple M3 Pro
Memory: 238.53 MB / 18.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.11.0
path: ~/.nvm/versions/node/v22.11.0/bin/node
Yarn: Not Found
npm:
version: 10.9.0
path: ~/.nvm/versions/node/v22.11.0/bin/npm
Watchman:
version: 2024.12.02.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/opt/ruby/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 24.1
- iOS 18.1
- macOS 15.1
- tvOS 18.1
- visionOS 2.1
- watchOS 11.1
Android SDK:
API Levels:
- "33"
- "34"
- "35"
Build Tools:
- 30.0.3
- 33.0.0
- 33.0.1
- 34.0.0
- 35.0.0
System Images:
- android-27 | ARM 64 v8a
- android-35 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2024.3 AI-243.22562.218.2431.13114758
Xcode:
version: 16.1/16B40
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.13
path: /usr/bin/javac
Ruby:
version: 3.3.6
path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 15.1.3
wanted: 15.1.3
react:
installed: 18.3.1
wanted: 18.3.1
react-native:
installed: 0.77.1
wanted: ^0.77.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Stacktrace or Logs
-
Reproducer
https://snack.expo.dev/t1eb6mkjQgY6fAFeXjhPK
Screenshots and Videos
import { Text, SafeAreaView, StyleSheet, View } from 'react-native';
export default function App() {
return (
<SafeAreaView style={styles.container}>
<View style={styles.wrapper}>
<Text style={styles.paragraph}
adjustsFontSizeToFit={true}
minimumFontScale={0.9}
numberOfLines={1} >
Change code in the editor and watch it change on your phone! Save to get a shareable url.
</Text>
</View>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
wrapper:{
width:100,
height:100,
backgroundColor:'yellow'
},
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#ecf0f1',
padding: 8,
alignItems:'center'
},
paragraph: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
});Patch for fix (based on #43543)
react-native+0.77.1.patch
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Needs: Triage 🔍Type: New ArchitectureIssues and PRs related to new architecture (Fabric/Turbo Modules)Issues and PRs related to new architecture (Fabric/Turbo Modules)

Activity
cipolleschi commentedon Mar 26, 2025
@DarkShtir Thanks for the issue, the reproducer and the patch. Have you perhaps tested it also with 0.78 and 0.79?
DarkShtir commentedon Mar 27, 2025
@cipolleschi Not yet. But I'll try to test this on 0.78 and 0.79 this weekend.
DarkShtir commentedon Mar 27, 2025
0.78 - works only IOS
Android doesn't work
Patch file
react-native+0.78.1.patch
DarkShtir commentedon Mar 27, 2025
And thanks janicduplessis for PR.
DarkShtir commentedon Mar 27, 2025
RN-0.79.0-rc.3 the same as 0.78. IOS - works, Android - none.
Need improve Android implementation
Patch file
react-native+0.79.0-rc.3.patch
DarkShtir commentedon May 15, 2025
Any updates?
DarkShtir commentedon May 15, 2025
react-native+0.79.2.patch
This patch fixed problems on stable RN 0.79.2
@janicduplessis @cipolleschi FYI
tienhdn commentedon May 26, 2025
android rn0.79.2 not working
Swahvay commentedon Jul 28, 2025
Any update on this? It's been a couple months with no word and I've had to disable every instance of this in my app because of this bug.
javbk201 commentedon Aug 6, 2025
I'm having this issue on RN 0.80.1 not working on iOS and Android
McFly78 commentedon Sep 5, 2025
Same for me on IOS with 0.80.2 (New Architecture).
Not tested on Android.
ZhangShuaiGou commentedon Sep 7, 2025
Hey, just a bit confused: minimumFontScale is claimed as iOS props only. How does it work on Android? Is it a typo in the RN document, or did I misunderstand something?
hugoecken commentedon Oct 1, 2025
Same for me on IOS AND Android with 0.81.4 (New Architecture).
dazexiaoxixi commentedon Nov 19, 2025
Has there been any follow-up resolution to this issue? I'm encountering a similar problem on iOS version 0.77.1.
BasixKOR commentedon Mar 12, 2026
Is there a particular reason on why the patch in this thread haven't been upstreamed? I'm interested in taking it into the upstream if the author agrees.
saikrishna1234 commentedon May 21, 2026
when this will get solved
Noitidart commentedon Jul 22, 2026
The below is posted by AI:
We just hit this in RN 0.86.0 on Fabric (Expo SDK 57). Confirming the bug + adding deeper root-cause analysis in case it helps whoever picks up the patch.
The actual failure point is
minimumFontSize, notminimumFontScaleitself. The bug spans three layers:JS bridge (
Libraries/Text/TextNativeComponent.js,validAttributesat lines 32-51): whitelistsadjustsFontSizeToFit: trueandminimumFontScale: true, butminimumFontSizeis NOT in the whitelist — silently stripped at the bridge before reaching native.C++ prop parser (
ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp:99-110): accepts bothminimumFontScaleANDminimumFontSizecorrectly. Both are stored onparagraphAttributes. No issue here.iOS Fabric renderer (
ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm:246-250): reads ONLYparagraphAttributes.minimumFontSize:When
minimumFontSizeis NaN (its default perParagraphAttributes.h:70), the floor falls back to 4.0pt — which is the "keeps shrinking and shrinking" behavior users observe.Android has the same shape:
ReactTextView.java:64,198usesmMinimumFontSize, populated fromPA_KEY_MINIMUM_FONT_SIZEatReactTextViewManager.kt:166-168. Would honorminimumFontSizeif it arrived, but the bridge strips it identically to iOS.iOS Paper (legacy) at
Libraries/Text/Text/RCTTextShadowView.mm:236is the only renderer that ever consultedminimumFontScale(multiplies_minimumFontScale * pointSizeto deriveminimumFontSize). That is why the prop historically "worked" on Paper iOS and nowhere else.Net effect on Fabric (iOS and Android both):
minimumFontScaleis sent across the bridge, stored in C++, but never read by the renderer.minimumFontSizewould be read and would work, but is stripped at the bridge before reaching native.Minimal fix appears to be: add
minimumFontSize: trueto thevalidAttributeswhitelist inTextNativeComponent.js. Once whitelisted, both iOS Fabric and Android Fabric would honor it without further changes. iOS Paper would continue to ignore it (it only readsminimumFontScale), but Paper is legacy.The attached patch in the OP presumably does something similar. Hope this trace helps whoever reviews/lands it.
enisit commentedon Aug 19, 2026
This issue perssist after more then a year. Any update on this @cipolleschi ?
conner1reimers commentedon Sep 11, 2026
Opened #58492 to fix this on both iOS and Android.
Fix `minimumFontScale` with `adjustsFontSizeToFit` in the New Archite…