Skip to content

fix(components): align token names with the other SDKs and drop the title weight to 500 (ORC-8443) - #435

Draft
OnurVar wants to merge 1 commit into
epic/stylingfrom
ov/fix/ORC-8443-token-names
Draft

OnurVar wants to merge 1 commit into
epic/stylingfrom
ov/fix/ORC-8443-token-names

Conversation

@OnurVar

@OnurVar OnurVar commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

ORC-8443

iOS, Android and web agree exactly on token names and values. React Native drifted after ORC-8229. Four fixes, all in the theme.

titleXLarge becomes titleXlarge. The other three use a lowercase l. A theme copied from the iOS or web docs set a key that did not exist here and was silently dropped.

radii.base and spacing.base added at 4. The other three have a base step for both. React Native only had one for sizes.

The existing entries are not renamed into base. radii.none is 0 and spacing.xxxlarge is 32, so calling either one base would ship a token holding the wrong number. radii.none is deleted, nothing read it. spacing.xxxlarge had one reader, the status screen's horizontal padding, and it now reads sizes.xlarge, which is 32 and what the token's own comment said it was. That is the first reader sizes.xlarge has.

Title weight goes from 600 to 500. The design value is 550 and the other three render it. React Native cannot: its parsers reject the value outright, and the one that runs on the New Architecture logs an unsupported weight and renders 400. So 550 here would come out lighter than the 600 we ship today. 500 is the closest it can reach, and it is one step closer to the design than 600 was.

Titles will render one step lighter than the same screen on iOS. Visible side by side, not in isolation.

The weight field is typed. It was a plain string. It is now a union of the nine weights React Native actually renders, so a 550 can never compile in again. Existing casts are left alone, cleaning them up would widen this into files other PRs in the batch are editing.

Safe to rename now, this is still beta with no external consumers.

Tests

Typecheck clean, eslint clean, 426 of 427 jest. The one failure is the known Turkish-locale localization test.

Notes

Part of a parity batch across the four SDKs. This one is React Native only, the other three already agree.

@OnurVar
OnurVar changed the base branch from ov/feat/components to epic/styling September 17, 2026 12:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant