Skip to content

Release 26.0.0#1004

Merged
georgewrmarshall merged 4 commits into
mainfrom
release/26.0.0
Mar 27, 2026
Merged

Release 26.0.0#1004
georgewrmarshall merged 4 commits into
mainfrom
release/26.0.0

Conversation

@georgewrmarshall

@georgewrmarshall georgewrmarshall commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

Release 26.0.0

This release adds new BannerAlert components, introduces KeyValueRow for React Native, includes breaking simplifications to React Native TextButton and TextField, and continues ADR-0003/0004 shared type migrations.

📦 Package Versions

  • @metamask/design-system-shared: 0.5.0
  • @metamask/design-system-react: 0.12.0
  • @metamask/design-system-react-native: 0.12.0

🔄 Shared Type Updates (0.5.0)

Component Type Additions (#975, #997)

What Changed:

  • Added BannerAlertSeverity const object + BannerAlertPropsShared
  • Added AvatarNetworkPropsShared type (ADR-0004)

Impact:

  • Enables consistent cross-platform BannerAlert severity/types
  • Continues ADR-0003/ADR-0004 const-object + string-union + shared types adoption

🌐 React Web Updates (0.12.0)

Added

Changed

📱 React Native Updates (0.12.0)

Added

Changed

Fixed

⚠️ Breaking Changes

TextButton API (React Native)

What Changed:

  • Removed size/TextButtonSize, isDisabled, isInverse, and start/end icon & accessory props
  • TextButton now aligns with Text typography and press handlers (variant, fontWeight, onPress, etc.)

Migration:

See ./packages/design-system-react-native/MIGRATION.md#from-version-0110-to-0120.

Impact:

  • Affects all React Native TextButton usages relying on the removed props

TextField Size API (React Native)

What Changed:

  • Removed TextFieldSize and the size prop
  • TextField is now a single fixed-height (48px) row

Migration:

See ./packages/design-system-react-native/MIGRATION.md#from-version-0110-to-0120.

Impact:

  • Affects all React Native TextField usages passing size / importing TextFieldSize

✅ Checklist

  • Changelogs updated with human-readable descriptions
  • Changelog validation passed (yarn changelog:validate)
  • Version bumps follow semantic versioning
    • design-system-shared: minor (0.4.0 → 0.5.0) - new shared types
    • design-system-react: minor (0.11.0 → 0.12.0) - new component + non-breaking changes
    • design-system-react-native: minor (0.11.0 → 0.12.0) - new components + breaking API changes (pre-1.0)
  • Breaking changes documented with migration guidance
  • Migration guides updated with before/after examples (if breaking changes)
  • 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 in MIGRATION.md with examples
  • All unreleased changes are accounted for in changelogs

Note

Medium Risk
Mostly a version/changelog release PR, but includes documented breaking React Native API removals for TextButton and TextField that can break downstream consumers on upgrade.

Overview
Bumps the monorepo version to 26.0.0 and releases @metamask/design-system-react/@metamask/design-system-react-native to 0.12.0 and @metamask/design-system-shared to 0.5.0.

Updates changelogs and the React Native migration guide to reflect new BannerAlert (web + RN) and KeyValueRow (RN), shared type additions (BannerAlertSeverity/BannerAlertPropsShared, AvatarNetworkPropsShared), and breaking RN API changes removing TextButton sizing/icons/disabled/inverse props and removing TextField sizing (TextFieldSize/size) in favor of a fixed-height row.

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

@georgewrmarshall georgewrmarshall requested a review from a team as a code owner March 27, 2026 17:50
@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview

@georgewrmarshall georgewrmarshall self-assigned this Mar 27, 2026

### Changed

- **BREAKING:** Simplified `TextButton` to a text-only control and removed `size`/`TextButtonSize`, inverse/disabled props, and icon/accessory props ([#1001](https://github.com/MetaMask/metamask-design-system/pull/1001))

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.

Marked as breaking because TextButton removes multiple props and the TextButtonSize export; the changelog links directly to the MIGRATION section with the recommended replacement patterns.


- **BREAKING:** Simplified `TextButton` to a text-only control and removed `size`/`TextButtonSize`, inverse/disabled props, and icon/accessory props ([#1001](https://github.com/MetaMask/metamask-design-system/pull/1001))
- See [Migration Guide](./MIGRATION.md#from-version-0110-to-0120)
- **BREAKING:** Removed `TextFieldSize` and the `size` prop; `TextField` is now a single fixed-height (48px) row ([#1000](https://github.com/MetaMask/metamask-design-system/pull/1000))

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.

TextField is treated as breaking because TextFieldSize and the size prop are removed; fixing the control to a single 48px row reduces platform alignment drift and matches the mobile spec.


### Fixed

- Improved `Input` single-line typography alignment (including iOS placeholder behavior) ([#1000](https://github.com/MetaMask/metamask-design-system/pull/1000))

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.

Input is called out as a fix because it does not change the public API for 0.12.0, but it can affect visual baselines, especially on iOS placeholder alignment.


### Changed

- Updated `TextButton` hover/pressed styles to be text-only (no background fill) ([#1001](https://github.com/MetaMask/metamask-design-system/pull/1001))

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.

React TextButton change is intentionally scoped to interaction styling (no API change); removing background fills makes it behave like a text link while keeping existing props stable.


### Added

- Added shared `BannerAlertSeverity` and `BannerAlertPropsShared` types for cross-package reuse ([#975](https://github.com/MetaMask/metamask-design-system/pull/975))

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.

Shared types are surfaced as const objects with derived union types so consumers get stable runtime constants plus type-safe string values across both React and React Native.

@@ -12,7 +12,6 @@ This guide provides detailed instructions for migrating your project from one ve
- [Version Updates](#version-updates)

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 Version Updates TOC is kept to a single 0.11.0 to 0.12.0 entry so changelog anchors stay unambiguous when linking reviewers and consumers to breaking-change guidance.


`TextButton` is intended for inline links without icons. If you relied on start or end icons or accessories, migrate to [`Button`](./src/components/Button/README.md) with `variant={ButtonVariant.Tertiary}`, which supports those props. For disabled or inverse patterns previously handled by `isDisabled` or `isInverse`, use conditional styling, [`Text`](./src/components/Text/README.md) when you need full control over color and press behavior, or `Button` tertiary when that component’s props match your needs.

### TextField

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.

TextField breaking guidance is grouped under the same 0.11.0 to 0.12.0 section as TextButton so the changelog migration link covers both RN breaking changes.

@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview

- [Version Updates](#version-updates)
- [From version 0.11.0 to 0.12.0](#from-version-0110-to-0120)
- [From version 0.10.0 to 0.11.0](#from-version-0100-to-0110)
- [From version 0.11.0 to 0.12.0](#from-version-0110-to-0120)

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.

Removing duplicate entry

@georgewrmarshall georgewrmarshall enabled auto-merge (squash) March 27, 2026 18:12
@georgewrmarshall georgewrmarshall merged commit 9e97cc9 into main Mar 27, 2026
44 checks passed
@georgewrmarshall georgewrmarshall deleted the release/26.0.0 branch March 27, 2026 20:04
georgewrmarshall added a commit that referenced this pull request Apr 27, 2026
## Release 26.0.0

This release adds new BannerAlert components, introduces `KeyValueRow`
for React Native, includes breaking simplifications to React Native
`TextButton` and `TextField`, and continues ADR-0003/0004 shared type
migrations.

### 📦 Package Versions

- `@metamask/design-system-shared`: **0.5.0**
- `@metamask/design-system-react`: **0.12.0**
- `@metamask/design-system-react-native`: **0.12.0**

### 🔄 Shared Type Updates (0.5.0)

#### Component Type Additions (#975, #997)

**What Changed:**

- Added `BannerAlertSeverity` const object + `BannerAlertPropsShared`
- Added `AvatarNetworkPropsShared` type (ADR-0004)

**Impact:**

- Enables consistent cross-platform `BannerAlert` severity/types
- Continues ADR-0003/ADR-0004 const-object + string-union + shared types
adoption

### 🌐 React Web Updates (0.12.0)

#### Added

- Added `BannerAlert` component (#975)

#### Changed

- Updated `TextButton` hover/pressed styles to be text-only (no
background fill) (#1001)
- Updated `Candlestick` icon asset with smaller size variant (#998)

### 📱 React Native Updates (0.12.0)

#### Added

- Added `BannerAlert` component (#966)
- Added `KeyValueRow` component (#959)

#### Changed

- **BREAKING:** Simplified `TextButton` to a text-only control and
removed `size`/`TextButtonSize`, inverse/disabled props, and
icon/accessory props (#1001)
- Migration:
`./packages/design-system-react-native/MIGRATION.md#from-version-0110-to-0120`
- **BREAKING:** Removed `TextFieldSize` and the `size` prop; `TextField`
is now a single fixed-height (48px) row (#1000)
- Migration:
`./packages/design-system-react-native/MIGRATION.md#from-version-0110-to-0120`
- Updated `Candlestick` icon asset with smaller size variant (#998)

#### Fixed

- Improved `Input` single-line typography alignment (including iOS
placeholder behavior) (#1000)

### ⚠️ Breaking Changes

#### TextButton API (React Native)

**What Changed:**

- Removed `size`/`TextButtonSize`, `isDisabled`, `isInverse`, and
start/end icon & accessory props
- `TextButton` now aligns with `Text` typography and press handlers
(`variant`, `fontWeight`, `onPress`, etc.)

**Migration:**

See
`./packages/design-system-react-native/MIGRATION.md#from-version-0110-to-0120`.

**Impact:**

- Affects all React Native `TextButton` usages relying on the removed
props

#### TextField Size API (React Native)

**What Changed:**

- Removed `TextFieldSize` and the `size` prop
- `TextField` is now a single fixed-height (48px) row

**Migration:**

See
`./packages/design-system-react-native/MIGRATION.md#from-version-0110-to-0120`.

**Impact:**

- Affects all React Native `TextField` usages passing `size` / importing
`TextFieldSize`

### ✅ 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.4.0 → 0.5.0) - new shared types
- [x] design-system-react: minor (0.11.0 → 0.12.0) - new component +
non-breaking changes
- [x] design-system-react-native: minor (0.11.0 → 0.12.0) - new
components + breaking API changes (pre-1.0)
- [x] Breaking changes documented with migration guidance
- [x] Migration guides updated with before/after examples (if breaking
changes)
- [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
- [x] 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 in MIGRATION.md with examples
- [ ] All unreleased changes are accounted for in changelogs

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Mostly a version/changelog release PR, but includes documented
**breaking** React Native API removals for `TextButton` and `TextField`
that can break downstream consumers on upgrade.
> 
> **Overview**
> Bumps the monorepo version to `26.0.0` and releases
`@metamask/design-system-react`/`@metamask/design-system-react-native`
to `0.12.0` and `@metamask/design-system-shared` to `0.5.0`.
> 
> Updates changelogs and the React Native migration guide to reflect new
`BannerAlert` (web + RN) and `KeyValueRow` (RN), shared type additions
(`BannerAlertSeverity`/`BannerAlertPropsShared`,
`AvatarNetworkPropsShared`), and **breaking** RN API changes removing
`TextButton` sizing/icons/disabled/inverse props and removing
`TextField` sizing (`TextFieldSize`/`size`) in favor of a fixed-height
row.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5ead00c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=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