Skip to content

Release 36.0.0#1123

Merged
georgewrmarshall merged 5 commits into
mainfrom
release/36.0.0
Apr 28, 2026
Merged

Release 36.0.0#1123
georgewrmarshall merged 5 commits into
mainfrom
release/36.0.0

Conversation

@georgewrmarshall

@georgewrmarshall georgewrmarshall commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

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:

  • 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)

Changed

  • BREAKING: Updated AvatarIcon exports to use const-object + string-union types rather than local enum-based definitions (#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)

Changed

  • BREAKING: Updated AvatarIcon exports to use const-object + string-union types rather than local enum-based definitions (#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

  • Changelogs updated with human-readable descriptions
  • Changelog validation passed (yarn changelog:validate)
  • Version bumps follow semantic versioning
    • design-system-shared: minor (0.13.00.14.0) - shared AvatarIcon and BadgeIcon type additions plus Telegram icon support
    • design-system-react: minor (0.18.00.19.0) - Telegram icon plus pre-1.0 AvatarIcon type migration
    • design-system-react-native: minor (0.20.00.21.0) - Telegram icon plus pre-1.0 AvatarIcon type migration
  • Breaking changes documented proportionally to severity
  • PR references included in changelog entries

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've reviewed the Reviewing Release PRs 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

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.

Reviewed by Cursor Bugbot for commit fa4ad9f. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

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.

Create PR

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.

Comment thread packages/design-system-react/MIGRATION.md Outdated
Comment thread packages/design-system-react/MIGRATION.md Outdated
@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview

@github-actions

Copy link
Copy Markdown
Contributor

📖 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))

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 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))

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.

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",

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 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",

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 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.

Comment thread package.json
{
"name": "@metamask/metamask-design-system",
"version": "35.0.0",
"version": "36.0.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.

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.

@georgewrmarshall georgewrmarshall marked this pull request as ready for review April 28, 2026 16:45
@georgewrmarshall georgewrmarshall requested a review from a team as a code owner April 28, 2026 16:45
@georgewrmarshall georgewrmarshall enabled auto-merge (squash) April 28, 2026 16:48
@georgewrmarshall georgewrmarshall merged commit b738220 into main Apr 28, 2026
44 checks passed
@georgewrmarshall georgewrmarshall deleted the release/36.0.0 branch April 28, 2026 16:50
georgewrmarshall added a commit that referenced this pull request Apr 28, 2026
## 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 -->
cursor Bot pushed a commit that referenced this pull request Apr 28, 2026
## 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 -->
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