Skip to content

Release 20.0.0#931

Merged
georgewrmarshall merged 3 commits into
mainfrom
release/20.0.0
Feb 21, 2026
Merged

Release 20.0.0#931
georgewrmarshall merged 3 commits into
mainfrom
release/20.0.0

Conversation

@georgewrmarshall

@georgewrmarshall georgewrmarshall commented Feb 21, 2026

Copy link
Copy Markdown
Contributor

Release 20.0.0

This release includes updates to 4 packages with breaking changes, new features, and improvements.

Packages Being Released

Package Current Version New Version Type
@metamask/design-tokens 8.1.1 8.2.0 Minor
@metamask/design-system-react 0.7.0 0.8.0 Minor
@metamask/design-system-react-native 0.6.0 0.7.0 Minor
@metamask/design-system-shared 0.1.2 0.1.3 Patch

Highlights

🎨 Design Tokens (8.2.0)

  • Exported AnimationDuration enum for standardized animation timing values

⚛️ Design System React (0.8.0)

  • BREAKING: Standardized enum values to kebab-case format
  • Added CorporateFare icon
  • Added Input component
  • Updated @metamask/utils peer dependency to 11.10.0

📱 Design System React Native (0.7.0)

  • BREAKING: Standardized enum values to kebab-case format
  • Added 7 new components: Label, HeaderBase, Skeleton, Card, BottomSheetFooter, Toast, Input
  • Added CorporateFare icon
  • Added BottomSheetOverlay component for modal interactions
  • Fixed ButtonBase sizing issues in flex layouts
  • Updated component styling to use tw.style() for better type safety

🔧 Other Packages

  • design-system-shared (0.1.3): Updated @metamask/utils dependency

Breaking Changes

Enum Value Format Change (React & React Native)

All component enum values (except icon names) now use kebab-case format at runtime:

// Code usage remains the same
<Button variant={ButtonVariant.Primary} />

// But the runtime value changed from 'Primary' to 'primary'
console.log(ButtonVariant.Primary); // 'primary' (was 'Primary')

Migration:

  • Most consumers: No changes needed - continue using enum constants (e.g., ButtonVariant.Primary)
  • Only if persisting/transmitting values: Update stored values from PascalCase to kebab-case (e.g., 'Primary''primary', 'TopRight''top-right')

Context: This prepares for migration from enums to string union types per ADR #127

Critical Fix

This release includes the yarn.lock update that was missing from the original Release 20.0.0 attempt. The peer dependency change from @metamask/design-tokens ^8.1.0 to ^8.2.0 now has the corresponding yarn.lock update, preventing the publish workflow failure.

Context

This is a recreation of Release 20.0.0 after:

  1. The original release merged but publish failed due to missing yarn.lock update
  2. 7 additional PRs were merged to main
  3. We reverted the release to properly document all changes

See PR #930 for revert details.

🤖 Generated with Claude Code


Note

Medium Risk
Mostly a release/versioning PR, but it includes a documented breaking change to enum runtime values and dependency range updates that can affect downstream consumers relying on persisted/transmitted enum strings.

Overview
Bumps the monorepo release to 20.0.0 and publishes new versions of @metamask/design-tokens (8.2.0), @metamask/design-system-react (0.8.0), @metamask/design-system-react-native (0.7.0), and @metamask/design-system-shared (0.1.3).

Updates changelogs to document the release contents (including a breaking kebab-case standardization for non-icon enum runtime values, new React/React Native components/icons, and the AnimationDuration token export), and aligns @metamask/design-system-react-native peer dependency on @metamask/design-tokens to ^8.2.0 with the corresponding yarn.lock update.

Written by Cursor Bugbot for commit f049d15. This will update automatically on new commits. Configure here.

georgewrmarshall and others added 3 commits February 20, 2026 15:55
- Categorized all changelog entries per Keep a Changelog format (Added/Changed/Fixed)
- Removed dev-only and revert entries from changelogs
- Added consumer-focused descriptions for all new components and features
- Updated @metamask/design-tokens peer dependency from ^8.1.0 to ^8.2.0 in design-system-react-native
- Updated yarn.lock to reflect peer dependency change

This fixes the issue that caused the original Release 20.0.0 publish to fail.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@georgewrmarshall georgewrmarshall requested a review from a team as a code owner February 21, 2026 00:01
"peerDependencies": {
"@metamask/design-system-twrnc-preset": "^0.3.0",
"@metamask/design-tokens": "^8.1.0",
"@metamask/design-tokens": "^8.2.0",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical fix: This peer dependency change from ^8.1.0 to ^8.2.0 now has the corresponding yarn.lock update (see yarn.lock line 3414). The BottomSheetOverlay component uses the AnimationDuration enum which was exported in design-tokens@8.2.0, making this peer dependency update necessary.


## [0.7.0]

### Added

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This release includes 7 new components (Label, HeaderBase, Skeleton, Card, BottomSheetFooter, Toast, Input) that were merged to main after the original Release 20.0.0 failed. All entries are categorized per Keep a Changelog format with consumer-focused descriptions.

@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview


### Changed

- **BREAKING:** Standardized non-icon enum runtime values to use kebab-case format ([#894](https://github.com/MetaMask/metamask-design-system/pull/894))

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Breaking change is well-documented with clear migration guidance. Most consumers can continue using enum constants without changes. Only apps that persist or transmit enum values need to update stored values from PascalCase to kebab-case format.

Comment thread yarn.lock
@@ -3411,7 +3411,7 @@ __metadata:
typescript: "npm:~5.2.2"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This synchronized yarn.lock update fixes the original release failure. The peer dependency change in package.json now has its corresponding lockfile update, preventing the YN0028: The lockfile would have been modified error that blocked the first release attempt.


### Added

- Exported `AnimationDuration` enum for standardized animation timing values ([#897](https://github.com/MetaMask/metamask-design-system/pull/897))

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The AnimationDuration enum export is what necessitated the peer dependency bump to ^8.2.0 in the React Native package. The BottomSheetOverlay component uses these standardized animation timing values.


### Changed

- **BREAKING:** Standardized non-icon enum runtime values to use kebab-case format ([#894](https://github.com/MetaMask/metamask-design-system/pull/894))

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BREAKING CHANGE: This enum standardization applies to both React and React Native packages. While migration is likely not needed if consumers use enum constants (e.g., ButtonVariant.Primary), teams that persist or transmit enum values (localStorage, databases, APIs) will need to handle the PascalCase → kebab-case change.

@georgewrmarshall georgewrmarshall enabled auto-merge (squash) February 21, 2026 00:06
@georgewrmarshall georgewrmarshall merged commit 9d29f60 into main Feb 21, 2026
43 checks passed
@georgewrmarshall georgewrmarshall deleted the release/20.0.0 branch February 21, 2026 00:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants