Commit 0711cca
authored
chore: upgrade design system packages and migrate bold to semibold (#28363)
## **Description**
Upgraded MetaMask Mobile to the latest published MetaMask design system
packages and applied the typography migration where semantic bold moved
from weight 700 to 600.
https://github.com/MetaMask/metamask-design-system/releases/tag/v27.0.0
This PR:
- Upgrades:
- `@metamask/design-system-react-native` from `^0.12.0` to `^0.13.0`
- `@metamask/design-system-twrnc-preset` from `^0.3.0` to `^0.4.0`
- `@metamask/design-tokens` from `^8.2.2` to `^8.3.0`
- Adds Geist semibold assets from design-system Storybook React Native:
- `Geist-SemiBold.otf`
- `Geist-SemiBoldItalic.otf`
- Updates `Text` mapping so semantic bold (`bold`, `600+`) resolves to
semibold family (`Geist-SemiBold` / italic equivalent)
- Updates legacy component-library `Text` usage to align with semibold
mapping
- Updates font/config wiring for Expo font plugin and native build paths
(iOS/Android)
- Updates snapshots impacted by the typography migration
Scope decision for this PR:
- This change intentionally targets Design System team-owned or unowned
files to keep review scope manageable given the high snapshot volume.
- `Geist-Bold` is intentionally not removed in this PR because there are
still static mentions in other teams' areas that would trigger
additional codeowner reviews.
- A fast-follow PR will remove remaining `Geist-Bold` references and
update cross-team files issue here
#28387
## **Changelog**
CHANGELOG entry: Updated app typography and font assets to align with
the latest MetaMask design system semibold bold-weight migration.
## **Related issues**
Fixes: https://consensyssoftware.atlassian.net/browse/DSYS-664
## **Manual testing steps**
```gherkin
Feature: Design system semibold typography migration
Scenario: user sees text rendered with updated semibold mapping
Given the app is built from this branch on iOS and Android
When user opens screens with headings and emphasized text (for example swaps, onboarding/create password, review flows, and perps transaction details)
Then text that previously used semantic bold renders correctly with semibold assets
And no missing-font fallback is visible
```
## **Screenshots/Recordings**
### **Before**
Geist-Bold in the inspector for all bold fonts
<img width="398" height="211" alt="Screenshot 2026-04-03 at 9 54 38 AM"
src="https://github.com/user-attachments/assets/7b8d49cf-b1c2-49db-a2ea-eee162bbdbd7"
/>
iOS simulator
https://github.com/user-attachments/assets/ac523b32-f898-4ec7-b089-8e2e9b0fc30c
Android simulator
https://github.com/user-attachments/assets/392b6baf-2046-480f-a5b0-8a042251396b
### **After**
Geist-SemiBold appears where Geist-Bold once was in the inspector for
all bold fonts
<img width="434" height="133" alt="Screenshot 2026-04-03 at 9 21 28 AM"
src="https://github.com/user-attachments/assets/9417dec9-3923-41ac-8310-68983604a617"
/>
iOS simulator
https://github.com/user-attachments/assets/54eb8ede-06f8-4077-b168-a58e6255ac73
Android simulator
https://github.com/user-attachments/assets/7c479a78-07a8-4841-9ef9-1028862d7190
Android real device
https://github.com/user-attachments/assets/10de6253-eb35-4da8-bf19-1a46a12262de
## **Pre-merge author checklist**
- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Medium risk because it changes global font-family/weight resolution
and adds new font assets; misconfiguration could lead to missing fonts
or subtle layout regressions across many screens.
>
> **Overview**
> Migrates semantic **bold** typography from `700`/`Geist-Bold` to
`600`/`Geist-SemiBold` by updating `getFontFamily` to resolve `bold` and
`600+` weights to the new SemiBold font family (including italic).
>
> Wires in new `Geist-SemiBold` and `Geist-SemiBoldItalic` assets for
Android and Expo (`android/link-assets-manifest.json`, `app.config.js`)
and updates affected Jest snapshots/tests to reflect the new fontFamily
and `fontWeight` values.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
a719b5a. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->1 parent 8da8416 commit 0711cca
217 files changed
Lines changed: 1276 additions & 1242 deletions
File tree
- android
- app/src/main/assets/fonts
- app
- component-library
- components-temp
- CustomSpendCap/__snapshots__
- Tabs
- TabsBar/__snapshots__
- TabsList/__snapshots__
- Tab/__snapshots__
- TagColored/__snapshots__
- components
- BottomSheets/BottomSheetHeader/__snapshots__
- Texts/Text
- components
- Base/Keypad/__snapshots__
- Snaps/SnapUIRenderer/components
- __snapshots__
- UI
- AccountApproval/__snapshots__
- AccountFromToInfoCard/__snapshots__
- AccountInfoCard/__snapshots__
- AssetOverview
- Balance/__snapshots__
- TokenDetails/TokenDetailsList/__snapshots__
- BackupAlert/__snapshots__
- BasicFunctionality
- BasicFunctionalityModal/__snapshots__
- __snapshots__
- Bridge/components/MarketClosedBottomSheets/__snapshots__
- Card
- Views
- CardAuthentication/__snapshots__
- CardHome/__snapshots__
- components
- AddFundsBottomSheet/__snapshots__
- PasswordBottomSheet/__snapshots__
- ViewPinBottomSheet/__snapshots__
- CollectibleModal/__snapshots__
- CustomAlert/__snapshots__
- DeleteWalletModal/__snapshots__
- Earn
- LendingLearnMoreModal/__snapshots__
- Views
- EarnInputView/__snapshots__
- EarnLendingDepositConfirmationView
- __snapshots__
- components/Erc20TokenHero/__snapshots__
- EarnLendingWithdrawalConfirmationView/__snapshots__
- EarnWithdrawInputView/__snapshots__
- components
- EarnDepositTokenListItem/__snapshots__
- EarnLendingBalance/__snapshots__
- EarnTokenList/__snapshots__
- Earnings
- EarningsHistory/EarningsHistoryChart/__snapshots__
- __snapshots__
- EmptyStateCta/__snapshots__
- MaxInputModal/__snapshots__
- modals/LendingMaxWithdrawalModal/__snapshots__
- Identity
- BackupAndSyncFeaturesToggles/__snapshots__
- BackupAndSyncToggle/__snapshots__
- ConfirmTurnOnBackupAndSyncModal/__snapshots__
- ManageNetworks/__snapshots__
- NetworkInfo/__snapshots__
- NetworkModal/__snapshots__
- NetworkVerificationInfo/__snapshots__
- Notification
- BaseNotification/__snapshots__
- Empty/__snapshots__
- OptinMetrics/__snapshots__
- PermissionsSummary/__snapshots__
- Perps/components/PerpsDeveloperOptionsSection/__snapshots__
- PhishingModal/__snapshots__
- Predict/components/PredictGameDetailsContent/__snapshots__
- Ramp
- Aggregator
- Views
- BuildQuote/__snapshots__
- Checkout/__snapshots__
- Modals/Settings/__snapshots__
- OrderDetails/__snapshots__
- OrdersList/__snapshots__
- Quotes/__snapshots__
- SendTransaction/__snapshots__
- Settings/__snapshots__
- components
- FiatSelectorModal/__snapshots__
- IncompatibleAccountTokenModal/__snapshots__
- OrderListItem/__snapshots__
- PaymentMethodSelectorModal/__snapshots__
- Quote/__snapshots__
- TokenSelectModal/__snapshots__
- UnsupportedRegionModal/__snapshots__
- __snapshots__
- Deposit
- Views
- AdditionalVerification/__snapshots__
- BankDetails/__snapshots__
- BasicInfo/__snapshots__
- BuildQuote/__snapshots__
- DepositOrderDetails/__snapshots__
- EnterAddress/__snapshots__
- EnterEmail/__snapshots__
- KycProcessing/__snapshots__
- Modals
- ConfigurationModal/__snapshots__
- ErrorDetailsModal/__snapshots__
- IncompatibleAccountTokenModal/__snapshots__
- PaymentMethodSelectorModal/__snapshots__
- RegionSelectorModal/__snapshots__
- SsnInfoModal/__snapshots__
- StateSelectorModal/__snapshots__
- TokenSelectorModal/__snapshots__
- UnsupportedRegionModal/__snapshots__
- UnsupportedStateModal/__snapshots__
- WebviewModal/__snapshots__
- OrderProcessing/__snapshots__
- OtpCode/__snapshots__
- VerifyIdentity/__snapshots__
- components
- DepositOrderContent/__snapshots__
- ErrorView/__snapshots__
- Views
- BuildQuote/__snapshots__
- Modals
- ErrorDetailsModal/__snapshots__
- PaymentSelectionModal/__snapshots__
- ProviderSelectionModal/__snapshots__
- SettingsModal/__snapshots__
- TokenNotAvailableModal/__snapshots__
- UnsupportedTokenModal/__snapshots__
- NativeFlow/__snapshots__
- OrderDetails/__snapshots__
- components
- EligibilityFailedModal/__snapshots__
- RampUnsupportedModal/__snapshots__
- SeedphraseModal/__snapshots__
- SkipAccountSecurityModal/__snapshots__
- SrpInputGrid/__snapshots__
- Stake
- Views
- StakeConfirmationView/__snapshots__
- StakeEarningsHistoryView/__snapshots__
- UnstakeConfirmationView/__snapshots__
- components
- GasImpactModal/__snapshots__
- PoolStakingLearnMoreModal
- InteractiveTimespanChart
- GraphTooltip/__snapshots__
- __snapshots__
- __snapshots__
- StakingBalance/__snapshots__
- StakingConfirmation/TokenValueStack/__snapshots__
- StakingEarnings/__snapshots__
- UpsellBanner/__snapshots__
- StyledButton/__snapshots__
- SwitchCustomNetwork/__snapshots__
- Tabs
- TabThumbnail/__snapshots__
- __snapshots__
- TransactionElement/TransactionDetails/__snapshots__
- TransactionHeader/__snapshots__
- UpdateNeeded/__snapshots__
- Views
- AccountBackupStep1/__snapshots__
- AccountConnect
- AccountConnectMultiSelector/__snapshots__
- __snapshots__
- AccountPermissions
- AccountPermissionsConfirmRevokeAll/__snapshots__
- ConnectionDetails/__snapshots__
- NetworkPermissionsConnected/__snapshots__
- PermittedNetworksInfoSheet/__snapshots__
- __snapshots__
- AccountStatus/__snapshots__
- ActivityView/__snapshots__
- AddressSelector/__snapshots__
- AesCryptoTestForm/__snapshots__
- BrowserTab/components
- IpfsBanner/__snapshots__
- PhishingModal/__snapshots__
- Browser/__snapshots__
- ChangeInSimulationModal/__snapshots__
- ChoosePassword/__snapshots__
- CollectibleView/__snapshots__
- ConnectQRHardware/__snapshots__
- DetectedTokens/__snapshots__
- EnterPasswordSimple/__snapshots__
- GasEducationCarousel/__snapshots__
- ImportFromSecretRecoveryPhrase/__snapshots__
- ImportPrivateKey/__snapshots__
- MultiRpcModal/__snapshots__
- NFTAutoDetectionModal/__snapshots__
- NetworkConnect/NetworkConnectMultiSelector/__snapshots__
- NetworkSelector
- RpcSelectionModal/__snapshots__
- __snapshots__
- NftDetails/__snapshots__
- OfflineMode/__snapshots__
- OnboardingSuccess
- OnboardingGeneralSettings/__snapshots__
- OnboardingSecuritySettings/__snapshots__
- __snapshots__
- Onboarding/__snapshots__
- OriginSpamModal/__snapshots__
- ResetPassword/__snapshots__
- RestoreWallet/__snapshots__
- Settings
- AdvancedSettings
- FiatOnTestnetsFriction/__snapshots__
- __snapshots__
- AppInformation/__snapshots__
- Contacts
- AmbiguousAddressSheet/__snapshots__
- ContactForm/__snapshots__
- __snapshots__
- DeveloperOptions/__snapshots__
- ExperimentalSettings/__snapshots__
- GeneralSettings/__snapshots__
- Identity/__snapshots__
- NetworkDetailsCheckSettings/__snapshots__
- SecuritySettings/__snapshots__
- __snapshots__
- ShowDisplayMediaNFTSheet/__snapshots__
- ShowIpfsGatewaySheet/__snapshots__
- ShowTokenIdSheet/__snapshots__
- SocialLoginIosUser/__snapshots__
- SuccessErrorSheet/__snapshots__
- WalletConnectSessions/__snapshots__
- Wallet/__snapshots__
- confirmations/legacy/components
- Approval/TemplateConfirmation/Templates/__snapshots__
- ApproveTransactionHeader/__snapshots__
- CustomNonceModal/__snapshots__
- features/SampleFeature/components/views
- SampleCounterPane/__snapshots__
- SamplePetNames/__snapshots__
- __snapshots__
- fonts
- styles
- ios
- MetaMask.xcodeproj
- MetaMask
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Binary file not shown.
Binary file not shown.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
12 | 20 | | |
13 | 21 | | |
14 | 22 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
73 | 74 | | |
74 | 75 | | |
75 | 76 | | |
| 77 | + | |
76 | 78 | | |
77 | 79 | | |
78 | 80 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
Lines changed: 7 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | | - | |
| 83 | + | |
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
| |||
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
167 | | - | |
| 167 | + | |
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
| |||
270 | 270 | | |
271 | 271 | | |
272 | 272 | | |
273 | | - | |
| 273 | + | |
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
| |||
376 | 376 | | |
377 | 377 | | |
378 | 378 | | |
379 | | - | |
| 379 | + | |
380 | 380 | | |
381 | 381 | | |
382 | 382 | | |
| |||
482 | 482 | | |
483 | 483 | | |
484 | 484 | | |
485 | | - | |
| 485 | + | |
486 | 486 | | |
487 | 487 | | |
488 | 488 | | |
| |||
587 | 587 | | |
588 | 588 | | |
589 | 589 | | |
590 | | - | |
| 590 | + | |
591 | 591 | | |
592 | 592 | | |
593 | 593 | | |
| |||
Lines changed: 25 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
| 92 | + | |
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
113 | | - | |
| 113 | + | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
195 | | - | |
| 195 | + | |
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
| |||
295 | 295 | | |
296 | 296 | | |
297 | 297 | | |
298 | | - | |
| 298 | + | |
299 | 299 | | |
300 | 300 | | |
301 | 301 | | |
| |||
432 | 432 | | |
433 | 433 | | |
434 | 434 | | |
435 | | - | |
| 435 | + | |
436 | 436 | | |
437 | 437 | | |
438 | 438 | | |
| |||
535 | 535 | | |
536 | 536 | | |
537 | 537 | | |
538 | | - | |
| 538 | + | |
539 | 539 | | |
540 | 540 | | |
541 | 541 | | |
| |||
638 | 638 | | |
639 | 639 | | |
640 | 640 | | |
641 | | - | |
| 641 | + | |
642 | 642 | | |
643 | 643 | | |
644 | 644 | | |
| |||
775 | 775 | | |
776 | 776 | | |
777 | 777 | | |
778 | | - | |
| 778 | + | |
779 | 779 | | |
780 | 780 | | |
781 | 781 | | |
| |||
878 | 878 | | |
879 | 879 | | |
880 | 880 | | |
881 | | - | |
| 881 | + | |
882 | 882 | | |
883 | 883 | | |
884 | 884 | | |
| |||
981 | 981 | | |
982 | 982 | | |
983 | 983 | | |
984 | | - | |
| 984 | + | |
985 | 985 | | |
986 | 986 | | |
987 | 987 | | |
| |||
1119 | 1119 | | |
1120 | 1120 | | |
1121 | 1121 | | |
1122 | | - | |
| 1122 | + | |
1123 | 1123 | | |
1124 | 1124 | | |
1125 | 1125 | | |
| |||
1223 | 1223 | | |
1224 | 1224 | | |
1225 | 1225 | | |
1226 | | - | |
| 1226 | + | |
1227 | 1227 | | |
1228 | 1228 | | |
1229 | 1229 | | |
| |||
1327 | 1327 | | |
1328 | 1328 | | |
1329 | 1329 | | |
1330 | | - | |
| 1330 | + | |
1331 | 1331 | | |
1332 | 1332 | | |
1333 | 1333 | | |
| |||
1464 | 1464 | | |
1465 | 1465 | | |
1466 | 1466 | | |
1467 | | - | |
| 1467 | + | |
1468 | 1468 | | |
1469 | 1469 | | |
1470 | 1470 | | |
| |||
1485 | 1485 | | |
1486 | 1486 | | |
1487 | 1487 | | |
1488 | | - | |
| 1488 | + | |
1489 | 1489 | | |
1490 | 1490 | | |
1491 | 1491 | | |
| |||
1568 | 1568 | | |
1569 | 1569 | | |
1570 | 1570 | | |
1571 | | - | |
| 1571 | + | |
1572 | 1572 | | |
1573 | 1573 | | |
1574 | 1574 | | |
| |||
1671 | 1671 | | |
1672 | 1672 | | |
1673 | 1673 | | |
1674 | | - | |
| 1674 | + | |
1675 | 1675 | | |
1676 | 1676 | | |
1677 | 1677 | | |
| |||
1841 | 1841 | | |
1842 | 1842 | | |
1843 | 1843 | | |
1844 | | - | |
| 1844 | + | |
1845 | 1845 | | |
1846 | 1846 | | |
1847 | 1847 | | |
| |||
1862 | 1862 | | |
1863 | 1863 | | |
1864 | 1864 | | |
1865 | | - | |
| 1865 | + | |
1866 | 1866 | | |
1867 | 1867 | | |
1868 | 1868 | | |
| |||
1944 | 1944 | | |
1945 | 1945 | | |
1946 | 1946 | | |
1947 | | - | |
| 1947 | + | |
1948 | 1948 | | |
1949 | 1949 | | |
1950 | 1950 | | |
| |||
2047 | 2047 | | |
2048 | 2048 | | |
2049 | 2049 | | |
2050 | | - | |
| 2050 | + | |
2051 | 2051 | | |
2052 | 2052 | | |
2053 | 2053 | | |
| |||
2184 | 2184 | | |
2185 | 2185 | | |
2186 | 2186 | | |
2187 | | - | |
| 2187 | + | |
2188 | 2188 | | |
2189 | 2189 | | |
2190 | 2190 | | |
| |||
2205 | 2205 | | |
2206 | 2206 | | |
2207 | 2207 | | |
2208 | | - | |
| 2208 | + | |
2209 | 2209 | | |
2210 | 2210 | | |
2211 | 2211 | | |
| |||
2287 | 2287 | | |
2288 | 2288 | | |
2289 | 2289 | | |
2290 | | - | |
| 2290 | + | |
2291 | 2291 | | |
2292 | 2292 | | |
2293 | 2293 | | |
| |||
2390 | 2390 | | |
2391 | 2391 | | |
2392 | 2392 | | |
2393 | | - | |
| 2393 | + | |
2394 | 2394 | | |
2395 | 2395 | | |
2396 | 2396 | | |
| |||
0 commit comments