Skip to content

Release 30.0.0#1057

Merged
georgewrmarshall merged 3 commits into
mainfrom
release/30.0.0
Apr 8, 2026
Merged

Release 30.0.0#1057
georgewrmarshall merged 3 commits into
mainfrom
release/30.0.0

Conversation

@georgewrmarshall

@georgewrmarshall georgewrmarshall commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Release 30.0.0

This release adds the NoPhotography icon and continues ADR-0003/ADR-0004 type migrations for AvatarToken and AvatarAccount across all platforms, plus an internal IconSize token alignment in React Native.

📦 Package Versions

  • @metamask/design-system-shared: 0.8.0
  • @metamask/design-system-react: 0.15.0
  • @metamask/design-system-react-native: 0.15.0

🔄 Shared Type Updates (0.8.0)

AvatarToken and AvatarAccount Type Additions (#1009, #1015)

What Changed:

  • Added AvatarToken shared types (AvatarTokenSize, AvatarTokenPropsShared)
  • Added AvatarAccount shared types (AvatarAccountPropsShared)

Impact:

  • Enables consistent AvatarToken and AvatarAccount implementations across React and React Native
  • Continues ADR-0003/ADR-0004 const-object + string-union pattern adoption

🌐 React Web Updates (0.15.0)

Added

  • Added NoPhotography icon (#1056)

Changed

  • BREAKING: Updated AvatarToken and AvatarAccount exports to use shared const-object + string-union types (ADR-0003/ADR-0004); normal use is unaffected (#1009, #1015)

📱 React Native Updates (0.15.0)

Added

  • Added NoPhotography icon (#1056)

Changed

  • BREAKING: Updated IconSize underlying string values to semantic t-shirt size tokens; normal use is unaffected (#1049)
  • BREAKING: Updated AvatarToken and AvatarAccount exports to use shared const-object + string-union types (ADR-0003/ADR-0004); normal use is unaffected (#1009, #1015)

⚠️ Breaking Changes

All breaking changes in this release are internal type/value alignment changes. Normal consumer usage is unaffected.

✅ Checklist

  • Changelogs updated with human-readable descriptions
  • Changelog validation passed (yarn changelog:validate)
  • Version bumps follow semantic versioning
    • design-system-shared: minor (0.7.0 → 0.8.0) - new shared types added
    • design-system-react: minor (0.14.0 → 0.15.0) - new icon + type migrations
    • design-system-react-native: minor (0.14.0 → 0.15.0) - new icon + type migrations
  • Breaking changes documented in changelogs
  • 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 with examples
  • All unreleased changes are accounted for in changelogs

Note

Low Risk
Only version bumps and changelog updates; no runtime code changes, so risk is low aside from potential downstream impact of publishing new package versions.

Overview
Bumps the monorepo release to 30.0.0 and increments package versions for @metamask/design-system-react and @metamask/design-system-react-native to 0.15.0, and @metamask/design-system-shared to 0.8.0.

Updates the package changelogs to document the new release entries (including NoPhotography icon and ADR-0003/ADR-0004 type export migrations, plus React Native IconSize token alignment) and advances the [Unreleased] compare links accordingly.

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

@georgewrmarshall georgewrmarshall requested a review from a team as a code owner April 8, 2026 20:21
@github-actions

github-actions Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

📖 Storybook Preview


### Changed

- **BREAKING:** Updated `IconSize` underlying string values to semantic t-shirt size tokens; normal use is unaffected ([#1049](https://github.com/MetaMask/metamask-design-system/pull/1049))

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.

Why is IconSize marked BREAKING if normal use is unaffected?

IconSize is a TypeScript enum (nominal type), so consumers using IconSize.Md etc. are completely isolated from the underlying string value change ('20''md'). Raw string literals were never assignable due to TypeScript's enum nominal typing. The BREAKING label is technically correct (the emitted JS values changed) but in practice no consumer code needs updating.

### Changed

- **BREAKING:** Updated `IconSize` underlying string values to semantic t-shirt size tokens; normal use is unaffected ([#1049](https://github.com/MetaMask/metamask-design-system/pull/1049))
- **BREAKING:** Updated `AvatarToken` and `AvatarAccount` exports to use shared const-object + string-union types (ADR-0003/ADR-0004); normal use is unaffected ([#1009](https://github.com/MetaMask/metamask-design-system/pull/1009), [#1015](https://github.com/MetaMask/metamask-design-system/pull/1015))

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.

ADR-0003/ADR-0004 migration pattern

This follows the established pattern from 0.14.0's AvatarBase migration — shared const objects with derived string unions replace platform-local definitions, giving both React and React Native a single source of truth in @metamask/design-system-shared. The BREAKING label is required because the type definitions change, but since consumers import from the platform package (@metamask/design-system-react-native) and the const names are unchanged, no migration is needed.

@github-actions

github-actions Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

📖 Storybook Preview


### Added

- Added `AvatarToken` shared types (`AvatarTokenSize`, `AvatarTokenPropsShared`) for cross-platform use ([#1009](https://github.com/MetaMask/metamask-design-system/pull/1009))

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.

Asymmetry between AvatarToken and AvatarAccount shared types

AvatarToken gains both AvatarTokenSize (const object) and AvatarTokenPropsShared, while AvatarAccount only gains AvatarAccountPropsShared — no size const. This is intentional: AvatarAccount reuses the existing AvatarBaseSize from shared rather than defining its own size enum.

@georgewrmarshall georgewrmarshall enabled auto-merge (squash) April 8, 2026 20:23
@georgewrmarshall georgewrmarshall merged commit 801dff0 into main Apr 8, 2026
42 checks passed
@georgewrmarshall georgewrmarshall deleted the release/30.0.0 branch April 8, 2026 20:29
georgewrmarshall added a commit that referenced this pull request Apr 27, 2026
## Release 30.0.0

This release adds the `NoPhotography` icon and continues
ADR-0003/ADR-0004 type migrations for `AvatarToken` and `AvatarAccount`
across all platforms, plus an internal `IconSize` token alignment in
React Native.

### 📦 Package Versions

- `@metamask/design-system-shared`: **0.8.0**
- `@metamask/design-system-react`: **0.15.0**
- `@metamask/design-system-react-native`: **0.15.0**

### 🔄 Shared Type Updates (0.8.0)

#### AvatarToken and AvatarAccount Type Additions
([#1009](#1009),
[#1015](#1015))

**What Changed:**

- Added `AvatarToken` shared types (`AvatarTokenSize`,
`AvatarTokenPropsShared`)
- Added `AvatarAccount` shared types (`AvatarAccountPropsShared`)

**Impact:**

- Enables consistent `AvatarToken` and `AvatarAccount` implementations
across React and React Native
- Continues ADR-0003/ADR-0004 const-object + string-union pattern
adoption

### 🌐 React Web Updates (0.15.0)

#### Added

- Added `NoPhotography` icon
([#1056](#1056))

#### Changed

- **BREAKING:** Updated `AvatarToken` and `AvatarAccount` exports to use
shared const-object + string-union types (ADR-0003/ADR-0004); normal use
is unaffected
([#1009](#1009),
[#1015](#1015))

### 📱 React Native Updates (0.15.0)

#### Added

- Added `NoPhotography` icon
([#1056](#1056))

#### Changed

- **BREAKING:** Updated `IconSize` underlying string values to semantic
t-shirt size tokens; normal use is unaffected
([#1049](#1049))
- **BREAKING:** Updated `AvatarToken` and `AvatarAccount` exports to use
shared const-object + string-union types (ADR-0003/ADR-0004); normal use
is unaffected
([#1009](#1009),
[#1015](#1015))

### ⚠️ Breaking Changes

All breaking changes in this release are internal type/value alignment
changes. Normal consumer usage is unaffected.

### ✅ 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.7.0 → 0.8.0) - new shared types
added
- [x] design-system-react: minor (0.14.0 → 0.15.0) - new icon + type
migrations
- [x] design-system-react-native: minor (0.14.0 → 0.15.0) - new icon +
type migrations
- [x] Breaking changes documented in changelogs
- [x] PR references included in changelog entries

## **Pre-merge author checklist**

- [x] 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 with examples
- [ ] All unreleased changes are accounted for in changelogs

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Only version bumps and changelog updates; no runtime code changes, so
risk is low aside from potential downstream impact of publishing new
package versions.
> 
> **Overview**
> Bumps the monorepo release to `30.0.0` and increments package versions
for `@metamask/design-system-react` and
`@metamask/design-system-react-native` to `0.15.0`, and
`@metamask/design-system-shared` to `0.8.0`.
> 
> Updates the package changelogs to document the new release entries
(including `NoPhotography` icon and ADR-0003/ADR-0004 type export
migrations, plus React Native `IconSize` token alignment) and advances
the `[Unreleased]` compare links accordingly.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
a1d8f0e. 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 30.0.0

This release adds the `NoPhotography` icon and continues
ADR-0003/ADR-0004 type migrations for `AvatarToken` and `AvatarAccount`
across all platforms, plus an internal `IconSize` token alignment in
React Native.

### 📦 Package Versions

- `@metamask/design-system-shared`: **0.8.0**
- `@metamask/design-system-react`: **0.15.0**
- `@metamask/design-system-react-native`: **0.15.0**

### 🔄 Shared Type Updates (0.8.0)

#### AvatarToken and AvatarAccount Type Additions
([#1009](#1009),
[#1015](#1015))

**What Changed:**

- Added `AvatarToken` shared types (`AvatarTokenSize`,
`AvatarTokenPropsShared`)
- Added `AvatarAccount` shared types (`AvatarAccountPropsShared`)

**Impact:**

- Enables consistent `AvatarToken` and `AvatarAccount` implementations
across React and React Native
- Continues ADR-0003/ADR-0004 const-object + string-union pattern
adoption

### 🌐 React Web Updates (0.15.0)

#### Added

- Added `NoPhotography` icon
([#1056](#1056))

#### Changed

- **BREAKING:** Updated `AvatarToken` and `AvatarAccount` exports to use
shared const-object + string-union types (ADR-0003/ADR-0004); normal use
is unaffected
([#1009](#1009),
[#1015](#1015))

### 📱 React Native Updates (0.15.0)

#### Added

- Added `NoPhotography` icon
([#1056](#1056))

#### Changed

- **BREAKING:** Updated `IconSize` underlying string values to semantic
t-shirt size tokens; normal use is unaffected
([#1049](#1049))
- **BREAKING:** Updated `AvatarToken` and `AvatarAccount` exports to use
shared const-object + string-union types (ADR-0003/ADR-0004); normal use
is unaffected
([#1009](#1009),
[#1015](#1015))

### ⚠️ Breaking Changes

All breaking changes in this release are internal type/value alignment
changes. Normal consumer usage is unaffected.

### ✅ 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.7.0 → 0.8.0) - new shared types
added
- [x] design-system-react: minor (0.14.0 → 0.15.0) - new icon + type
migrations
- [x] design-system-react-native: minor (0.14.0 → 0.15.0) - new icon +
type migrations
- [x] Breaking changes documented in changelogs
- [x] PR references included in changelog entries

## **Pre-merge author checklist**

- [x] 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 with examples
- [ ] All unreleased changes are accounted for in changelogs

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Only version bumps and changelog updates; no runtime code changes, so
risk is low aside from potential downstream impact of publishing new
package versions.
> 
> **Overview**
> Bumps the monorepo release to `30.0.0` and increments package versions
for `@metamask/design-system-react` and
`@metamask/design-system-react-native` to `0.15.0`, and
`@metamask/design-system-shared` to `0.8.0`.
> 
> Updates the package changelogs to document the new release entries
(including `NoPhotography` icon and ADR-0003/ADR-0004 type export
migrations, plus React Native `IconSize` token alignment) and advances
the `[Unreleased]` compare links accordingly.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
a1d8f0e. 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