Skip to content

Add font variation settings support to TextInput (#57805) - #57805

Open
evankatz14 wants to merge 2 commits into
react:mainfrom
evankatz14:export-D113580493
Open

Add font variation settings support to TextInput (#57805)#57805
evankatz14 wants to merge 2 commits into
react:mainfrom
evankatz14:export-D113580493

Conversation

@evankatz14

@evankatz14 evankatz14 commented Aug 3, 2026

Copy link
Copy Markdown

Summary:

Extend Android TextInput support for the existing fontVariationSettings text style prop. Fabric now forwards changes and resets through AndroidTextInputProps, and ReactTextInputManager applies the normalized value to the underlying ReactEditText paint after typeface updates.

Using the EditText paint as the source of truth applies variable font axes consistently to placeholders, controlled values, and newly typed text. Equivalent CustomStyleSpans are stripped while spans with different variation settings remain intact for attributed text ranges.

As with <Text>, common text attributes forward settings syntax unchanged and Android remains the validation authority. This avoids narrowing Android-compatible grammar; malformed settings are outside the supported inheritance contract. Both normal and the React Native empty-string convention explicitly reset variation settings.

Changelog:
[Android][Added] - Add fontVariationSettings support for TextInput

Reviewed By: Abbondanzo

Differential Revision: D113580493

Summary:
Add a `fontVariationSettings` text style prop and carry it through Fabric text attributes into Android text rendering. Android now deserializes the prop for `<Text>`, applies it to `Paint`, and includes it in text measurement cache identity because variable axes can affect layout.

Preserve the distinction between an absent setting and an explicitly empty setting so nested text can inherit or clear the parent variation axes. Apply high-level font properties before low-level variation settings so explicit axes take precedence, matching CSS font realization order.

Settings syntax is intentionally forwarded unchanged through common text attributes and validated only by the Android font variation parser. This avoids narrowing the grammar Android accepts. As a result, malformed child settings are outside the supported inheritance contract: they replace an inherited value before Android validation and are not guaranteed to fall back to the parent settings. Android also accepts `normal` and the React Native empty-string convention as explicit resets.

Changelog:
[Android][Added] - Add `fontVariationSettings` support for `<Text>`

Differential Revision: D113580491

Reviewed By: Abbondanzo
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 3, 2026
@facebook-github-tools facebook-github-tools Bot added p: Facebook Partner: Facebook Partner labels Aug 3, 2026
@meta-codesync

meta-codesync Bot commented Aug 3, 2026

Copy link
Copy Markdown

@evankatz14 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D113580493.

evankatz14 added a commit to evankatz14/react-native that referenced this pull request Aug 3, 2026
Summary:
Pull Request resolved: react#57805

Extend Android `TextInput` support for the existing `fontVariationSettings` text style prop. Fabric now forwards changes and resets through `AndroidTextInputProps`, and `ReactTextInputManager` applies the normalized value to the underlying `ReactEditText` paint after typeface updates.

Using the `EditText` paint as the source of truth applies variable font axes consistently to placeholders, controlled values, and newly typed text. Equivalent `CustomStyleSpan`s are stripped while spans with different variation settings remain intact for attributed text ranges.

As with `<Text>`, common text attributes forward settings syntax unchanged and Android remains the validation authority. This avoids narrowing Android-compatible grammar; malformed settings are outside the supported inheritance contract. Both `normal` and the React Native empty-string convention explicitly reset variation settings.

Changelog:
[Android][Added] - Add `fontVariationSettings` support for `TextInput`

Reviewed By: Abbondanzo

Differential Revision: D113580493
@meta-codesync meta-codesync Bot changed the title Add font variation settings support to TextInput Add font variation settings support to TextInput (#57805) Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Warning

JavaScript API change detected

This PR commits an update to ReactNativeApi.d.ts, indicating a change to React Native's public JavaScript API.

  • Please include a clear changelog message.
  • This change will be subject to additional review.

This change was flagged as: POTENTIALLY_BREAKING

Summary:
Pull Request resolved: react#57805

Extend Android `TextInput` support for the existing `fontVariationSettings` text style prop. Fabric now forwards changes and resets through `AndroidTextInputProps`, and `ReactTextInputManager` applies the normalized value to the underlying `ReactEditText` paint after typeface updates.

Using the `EditText` paint as the source of truth applies variable font axes consistently to placeholders, controlled values, and newly typed text. Equivalent `CustomStyleSpan`s are stripped while spans with different variation settings remain intact for attributed text ranges.

As with `<Text>`, common text attributes forward settings syntax unchanged and Android remains the validation authority. This avoids narrowing Android-compatible grammar; malformed settings are outside the supported inheritance contract. Both `normal` and the React Native empty-string convention explicitly reset variation settings.

Changelog:
[Android][Added] - Add `fontVariationSettings` support for `TextInput`

Reviewed By: Abbondanzo

Differential Revision: D113580493
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant