Release 36.0.0#1123
Conversation
📖 Storybook Preview |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix prepared fixes for both issues found in the latest run.
- ✅ Fixed: Migration guides reference
@metamask/design-system-shared- Updated both BadgeIcon migration notes to remove references to the internal shared package and keep consumer-facing wording only.
- ✅ Fixed: Non-actionable enum→const-object migration sections documented
- Removed the AvatarIcon enum→const-object sections from both migration guides since they were non-actionable for consumers.
Or push these changes by commenting:
@cursor push ac0f360259
Preview (ac0f360259)
diff --git a/packages/design-system-react-native/MIGRATION.md b/packages/design-system-react-native/MIGRATION.md
--- a/packages/design-system-react-native/MIGRATION.md
+++ b/packages/design-system-react-native/MIGRATION.md
@@ -40,56 +40,13 @@
### From version 0.20.0 to 0.21.0
-#### AvatarIcon: enum-style exports now follow the shared const-object + string-union model
+<!-- Removed non-actionable internal enum→const-object note for AvatarIcon -->
-**What Changed:**
-
-`AvatarIconSize` and `AvatarIconSeverity` now follow the same ADR-0003 and ADR-0004 type architecture already used by `Icon` and `Box`. The React Native package still exports the same names from `@metamask/design-system-react-native`, but the underlying type definitions now come from the shared cross-platform contracts.
-
-**Migration:**
-
-Normal usage does not need to change. Continue importing and using the same members:
-
-```tsx
-// Before (0.20.0)
-import {
- AvatarIcon,
- AvatarIconSeverity,
- AvatarIconSize,
- IconName,
-} from '@metamask/design-system-react-native';
-
-<AvatarIcon
- iconName={IconName.Warning}
- size={AvatarIconSize.Md}
- severity={AvatarIconSeverity.Warning}
-/>;
-
-// After (0.21.0)
-import {
- AvatarIcon,
- AvatarIconSeverity,
- AvatarIconSize,
- IconName,
-} from '@metamask/design-system-react-native';
-
-<AvatarIcon
- iconName={IconName.Warning}
- size={AvatarIconSize.Md}
- severity={AvatarIconSeverity.Warning}
-/>;
-```
-
-**Impact:**
-
-- Typical component usage is unchanged.
-- Only code that depended on `AvatarIconSeverity` being a TypeScript `enum` rather than a const object may need to update its typing assumptions.
-
#### BadgeIcon: shared prop types are now the source of truth
**What Changed:**
-`BadgeIcon` now uses shared prop contracts from `@metamask/design-system-shared` so React Native and React consume the same public type surface. This is a type-level breaking change only; the component API and runtime behavior are unchanged.
+`BadgeIcon` now consumes a shared prop contract so React Native and React expose the same public type surface. This is a type-level breaking change only; the component API and runtime behavior are unchanged.
**Migration:**
diff --git a/packages/design-system-react/MIGRATION.md b/packages/design-system-react/MIGRATION.md
--- a/packages/design-system-react/MIGRATION.md
+++ b/packages/design-system-react/MIGRATION.md
@@ -993,56 +993,11 @@
## From version 0.18.0 to 0.19.0
-### AvatarIcon: enum-style exports now follow the shared const-object + string-union model
-
-**What Changed:**
-
-`AvatarIconSize` and `AvatarIconSeverity` now follow the same ADR-0003 and ADR-0004 type architecture already used by `Icon` and `Box`. The React package still exports the same names from `@metamask/design-system-react`, but the underlying type definitions now come from the shared cross-platform contracts.
-
-**Migration:**
-
-Normal usage does not need to change. Continue importing and using the same members:
-
-```tsx
-// Before (0.18.0)
-import {
- AvatarIcon,
- AvatarIconSeverity,
- AvatarIconSize,
- IconName,
-} from '@metamask/design-system-react';
-
-<AvatarIcon
- iconName={IconName.Warning}
- size={AvatarIconSize.Md}
- severity={AvatarIconSeverity.Warning}
-/>;
-
-// After (0.19.0)
-import {
- AvatarIcon,
- AvatarIconSeverity,
- AvatarIconSize,
- IconName,
-} from '@metamask/design-system-react';
-
-<AvatarIcon
- iconName={IconName.Warning}
- size={AvatarIconSize.Md}
- severity={AvatarIconSeverity.Warning}
-/>;
-```
-
-**Impact:**
-
-- Typical component usage is unchanged.
-- Only code that depended on `AvatarIconSeverity` being a TypeScript `enum` rather than a const object may need to update its typing assumptions.
-
### BadgeIcon: shared prop types are now the source of truth
**What Changed:**
-`BadgeIcon` now uses shared prop contracts from `@metamask/design-system-shared` so React and React Native consume the same public type surface. This is a type-level breaking change only; the component API and runtime behavior are unchanged.
+`BadgeIcon` now uses shared prop contracts so React and React Native consume the same public type surface. This is a type-level breaking change only; the component API and runtime behavior are unchanged.
**Migration:**You can send follow-ups to the cloud agent here.
Reviewed by Cursor Bugbot for commit 4ed8d84. Configure here.
📖 Storybook Preview |
📖 Storybook Preview |
|
|
||
| ### Changed | ||
|
|
||
| - **BREAKING:** Updated `AvatarIcon` exports to use shared const-object + string-union types rather than local enum-based definitions, aligning React with the shared cross-platform type contracts ([#996](https://github.com/MetaMask/metamask-design-system/pull/996)) |
There was a problem hiding this comment.
This is the only platform-facing type migration called out here because AvatarIcon is where consumers can encounter the enum-to-const-object and string-union shift directly. BadgeIcon stays out of the platform changelog because platform usage does not change; only the underlying shared source moves.
| ### Added | ||
|
|
||
| - Added `Telegram` to the shared icon exports so both platform packages can consume it through their existing `IconName` APIs ([#1122](https://github.com/MetaMask/metamask-design-system/pull/1122)) | ||
| - Added shared `BadgeIconPropsShared` types so `BadgeIcon` now uses one cross-platform prop contract in React and React Native ([#1010](https://github.com/MetaMask/metamask-design-system/pull/1010)) |
There was a problem hiding this comment.
BadgeIcon is documented in the shared package because this release changes its source of truth without changing the platform-facing type story. Keeping it out of the React and React Native BREAKING sections avoids implying a consumer migration where none is expected.
| { | ||
| "name": "@metamask/design-system-react-native", | ||
| "version": "0.20.0", | ||
| "version": "0.21.0", |
There was a problem hiding this comment.
This is a minor bump rather than a patch because the React Native package is still pre-1.0 and the AvatarIcon type migration is treated as a breaking change under the release workflow. The matching changelog entry makes that pre-1.0 breaking signal explicit for reviewers and consumers.
| { | ||
| "name": "@metamask/design-system-react", | ||
| "version": "0.18.0", | ||
| "version": "0.19.0", |
There was a problem hiding this comment.
This is a minor bump rather than a patch because the React package is still pre-1.0 and the AvatarIcon type migration is treated as a breaking change under the release workflow. The matching changelog entry keeps the semver signal and the release notes aligned.
| { | ||
| "name": "@metamask/metamask-design-system", | ||
| "version": "35.0.0", | ||
| "version": "36.0.0", |
There was a problem hiding this comment.
The monorepo version increments independently as part of the standard release bookkeeping, even when the consumer-facing changes are package-scoped. Keeping the root bump here matches the usual release branch flow and makes the publish set easier to audit.
## Release 36.0.0 This release makes the generated changelogs consumer-facing, adds the Telegram icon across the published packages, and keeps the type-level breaking change notes focused on the enum-to-const-object and string-union migration for `AvatarIcon`. ### 📦 Package Versions - `@metamask/design-system-shared`: **0.14.0** - `@metamask/design-system-react`: **0.19.0** - `@metamask/design-system-react-native`: **0.21.0** ### 🔄 Shared Package Updates (0.14.0) #### Type and icon updates ([#996](#996), [#1010](#1010), [#1122](#1122)) **What Changed:** - Added shared `AvatarIcon` contracts, including `AvatarIconPropsShared`, `AvatarIconSize`, and `AvatarIconSeverity` - Added shared `BadgeIconPropsShared` - Added `Telegram` to the shared icon exports ### 🌐 React Web Updates (0.19.0) #### Added - Added `Telegram` to the `IconName` set for React consumers ([#1122](#1122)) #### Changed - **BREAKING:** Updated `AvatarIcon` exports to use const-object + string-union types rather than local enum-based definitions ([#996](#996)) - No migration required for typical usage; continue importing from `@metamask/design-system-react` as before ### 📱 React Native Updates (0.21.0) #### Added - Added `Telegram` to the `IconName` set for React Native consumers ([#1122](#1122)) #### Changed - **BREAKING:** Updated `AvatarIcon` exports to use const-object + string-union types rather than local enum-based definitions ([#996](#996)) - No migration required for typical usage; continue importing from `@metamask/design-system-react-native` as before ###⚠️ Breaking Changes #### AvatarIcon type migration (Both Platforms) **What Changed:** - `AvatarIcon` now follows the const-object + string-union pattern already used by similar type migrations in this repo - Public imports and runtime usage remain unchanged **Impact:** - This is a type-level breaking change, but normal component usage should continue to work unchanged - Consumers should only expect updates if they relied on enum-specific typing assumptions ### ✅ Checklist - [x] Changelogs updated with human-readable descriptions - [x] Changelog validation passed (`yarn changelog:validate`) - [x] Version bumps follow semantic versioning - [x] design-system-shared: minor (`0.13.0` → `0.14.0`) - shared AvatarIcon and BadgeIcon type additions plus Telegram icon support - [x] design-system-react: minor (`0.18.0` → `0.19.0`) - Telegram icon plus pre-1.0 `AvatarIcon` type migration - [x] design-system-react-native: minor (`0.20.0` → `0.21.0`) - Telegram icon plus pre-1.0 `AvatarIcon` type migration - [x] Breaking changes documented proportionally to severity - [x] PR references included in changelog entries ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) - [x] I've reviewed the [Release Workflow](./.cursor/rules/release-workflow.md) cursor rule - [ ] All tests pass (`yarn build && yarn test && yarn lint`) - [x] Changelog validation passes (`yarn changelog:validate`) ## **Pre-merge reviewer checklist** - [ ] I've reviewed the [Reviewing Release PRs](./docs/reviewing-release-prs.md) guide - [ ] Package versions follow semantic versioning - [ ] Changelog entries are consumer-facing (not commit message regurgitation) - [ ] Breaking changes are documented proportionally to severity - [ ] All unreleased changes are accounted for in changelogs <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk release bookkeeping: only version bumps and changelog updates; no runtime code changes are included in this diff. > > **Overview** > Bumps the monorepo version to `36.0.0` and publishes new package versions for `@metamask/design-system-shared` (`0.14.0`), `@metamask/design-system-react` (`0.19.0`), and `@metamask/design-system-react-native` (`0.21.0`). > > Updates package changelogs to document the newly released consumer-facing changes, including adding the `Telegram` icon and *type-level breaking* alignment of `AvatarIcon` (and shared contracts in `design-system-shared`) to shared const-object + string-union exports. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit fa4ad9f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
## Release 36.0.0 This release makes the generated changelogs consumer-facing, adds the Telegram icon across the published packages, and keeps the type-level breaking change notes focused on the enum-to-const-object and string-union migration for `AvatarIcon`. ### 📦 Package Versions - `@metamask/design-system-shared`: **0.14.0** - `@metamask/design-system-react`: **0.19.0** - `@metamask/design-system-react-native`: **0.21.0** ### 🔄 Shared Package Updates (0.14.0) #### Type and icon updates ([#996](#996), [#1010](#1010), [#1122](#1122)) **What Changed:** - Added shared `AvatarIcon` contracts, including `AvatarIconPropsShared`, `AvatarIconSize`, and `AvatarIconSeverity` - Added shared `BadgeIconPropsShared` - Added `Telegram` to the shared icon exports ### 🌐 React Web Updates (0.19.0) #### Added - Added `Telegram` to the `IconName` set for React consumers ([#1122](#1122)) #### Changed - **BREAKING:** Updated `AvatarIcon` exports to use const-object + string-union types rather than local enum-based definitions ([#996](#996)) - No migration required for typical usage; continue importing from `@metamask/design-system-react` as before ### 📱 React Native Updates (0.21.0) #### Added - Added `Telegram` to the `IconName` set for React Native consumers ([#1122](#1122)) #### Changed - **BREAKING:** Updated `AvatarIcon` exports to use const-object + string-union types rather than local enum-based definitions ([#996](#996)) - No migration required for typical usage; continue importing from `@metamask/design-system-react-native` as before ###⚠️ Breaking Changes #### AvatarIcon type migration (Both Platforms) **What Changed:** - `AvatarIcon` now follows the const-object + string-union pattern already used by similar type migrations in this repo - Public imports and runtime usage remain unchanged **Impact:** - This is a type-level breaking change, but normal component usage should continue to work unchanged - Consumers should only expect updates if they relied on enum-specific typing assumptions ### ✅ Checklist - [x] Changelogs updated with human-readable descriptions - [x] Changelog validation passed (`yarn changelog:validate`) - [x] Version bumps follow semantic versioning - [x] design-system-shared: minor (`0.13.0` → `0.14.0`) - shared AvatarIcon and BadgeIcon type additions plus Telegram icon support - [x] design-system-react: minor (`0.18.0` → `0.19.0`) - Telegram icon plus pre-1.0 `AvatarIcon` type migration - [x] design-system-react-native: minor (`0.20.0` → `0.21.0`) - Telegram icon plus pre-1.0 `AvatarIcon` type migration - [x] Breaking changes documented proportionally to severity - [x] PR references included in changelog entries ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) - [x] I've reviewed the [Release Workflow](./.cursor/rules/release-workflow.md) cursor rule - [ ] All tests pass (`yarn build && yarn test && yarn lint`) - [x] Changelog validation passes (`yarn changelog:validate`) ## **Pre-merge reviewer checklist** - [ ] I've reviewed the [Reviewing Release PRs](./docs/reviewing-release-prs.md) guide - [ ] Package versions follow semantic versioning - [ ] Changelog entries are consumer-facing (not commit message regurgitation) - [ ] Breaking changes are documented proportionally to severity - [ ] All unreleased changes are accounted for in changelogs <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk release bookkeeping: only version bumps and changelog updates; no runtime code changes are included in this diff. > > **Overview** > Bumps the monorepo version to `36.0.0` and publishes new package versions for `@metamask/design-system-shared` (`0.14.0`), `@metamask/design-system-react` (`0.19.0`), and `@metamask/design-system-react-native` (`0.21.0`). > > Updates package changelogs to document the newly released consumer-facing changes, including adding the `Telegram` icon and *type-level breaking* alignment of `AvatarIcon` (and shared contracts in `design-system-shared`) to shared const-object + string-union exports. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit fa4ad9f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->


Release 36.0.0
This release makes the generated changelogs consumer-facing, adds the Telegram icon across the published packages, and keeps the type-level breaking change notes focused on the enum-to-const-object and string-union migration for
AvatarIcon.📦 Package Versions
@metamask/design-system-shared: 0.14.0@metamask/design-system-react: 0.19.0@metamask/design-system-react-native: 0.21.0🔄 Shared Package Updates (0.14.0)
Type and icon updates (#996, #1010, #1122)
What Changed:
AvatarIconcontracts, includingAvatarIconPropsShared,AvatarIconSize, andAvatarIconSeverityBadgeIconPropsSharedTelegramto the shared icon exports🌐 React Web Updates (0.19.0)
Added
Telegramto theIconNameset for React consumers (#1122)Changed
AvatarIconexports to use const-object + string-union types rather than local enum-based definitions (#996)@metamask/design-system-reactas before📱 React Native Updates (0.21.0)
Added
Telegramto theIconNameset for React Native consumers (#1122)Changed
AvatarIconexports to use const-object + string-union types rather than local enum-based definitions (#996)@metamask/design-system-react-nativeas beforeAvatarIcon type migration (Both Platforms)
What Changed:
AvatarIconnow follows the const-object + string-union pattern already used by similar type migrations in this repoImpact:
✅ Checklist
yarn changelog:validate)0.13.0→0.14.0) - shared AvatarIcon and BadgeIcon type additions plus Telegram icon support0.18.0→0.19.0) - Telegram icon plus pre-1.0AvatarIcontype migration0.20.0→0.21.0) - Telegram icon plus pre-1.0AvatarIcontype migrationPre-merge author checklist
yarn build && yarn test && yarn lint)yarn changelog:validate)Pre-merge reviewer checklist
Note
Low Risk
Low risk release bookkeeping: only version bumps and changelog updates; no runtime code changes are included in this diff.
Overview
Bumps the monorepo version to
36.0.0and publishes new package versions for@metamask/design-system-shared(0.14.0),@metamask/design-system-react(0.19.0), and@metamask/design-system-react-native(0.21.0).Updates package changelogs to document the newly released consumer-facing changes, including adding the
Telegramicon and type-level breaking alignment ofAvatarIcon(and shared contracts indesign-system-shared) to shared const-object + string-union exports.Reviewed by Cursor Bugbot for commit fa4ad9f. Bugbot is set up for automated code reviews on this repo. Configure here.