Release 43.0.0#1215
Conversation
📖 Storybook Preview |
c83abaa to
23b0cda
Compare
📖 Storybook Preview |
|
|
||
| - **BREAKING:** Dropped Node.js 18 support for the release line; consumers must run Node 20 or newer ([#1206](https://github.com/MetaMask/metamask-design-system/pull/1206)) | ||
| - Added default padding and `isInteractive` support to `SectionHeader` so section rows match the new mobile layout patterns ([#1210](https://github.com/MetaMask/metamask-design-system/pull/1210)) | ||
| - **BREAKING:** Flattened `TextArea` so it renders the root `TextInput` directly; pass `TextInput` props on `TextArea`, use the component `ref` for the input, and stop relying on `inputProps` or `inputElement` ([#1205](https://github.com/MetaMask/metamask-design-system/pull/1205)) |
There was a problem hiding this comment.
This is the breaking React Native API change in the release. The migration guide mirrors the wrapper-to-root-input split removal so reviewers can see the required ref and prop updates in one place.
|
|
||
| ### Added | ||
|
|
||
| - Added `Content` for composing scrollable and padded content sections on React Native screens; it is closely related to the upcoming `ListItem` work ([#1192](https://github.com/MetaMask/metamask-design-system/pull/1192)) |
There was a problem hiding this comment.
This note intentionally ties Content to the upcoming ListItem work because the component is meant to be a building block for that flow, not a full list row abstraction on its own. The release note stays accurate without implying the follow-up has already shipped.
|
|
||
| ### Changed | ||
|
|
||
| - **BREAKING:** Dropped Node.js 18 support for the release line; consumers must run Node 20 or newer ([#1206](https://github.com/MetaMask/metamask-design-system/pull/1206)) |
There was a problem hiding this comment.
Node 18 is called out here because this release line changes the supported runtime for every package, even though the API surface in this package did not change. Keeping the requirement visible in each package changelog helps downstream consumers notice it where they upgrade.
|
|
||
| ### Changed | ||
|
|
||
| - **BREAKING:** Dropped Node.js 18 support for the release line; the emitted token values and CSS output are unchanged, but consumers must run on Node 20 or newer ([#1206](https://github.com/MetaMask/metamask-design-system/pull/1206)) |
There was a problem hiding this comment.
@georgewrmarshall Going forward, can we make sure to bump the major version whenever there are breaking changes? We use SemVer as a rough guide to know whether there are breaking changes or not. (I realize that for 0.x releases things are different so it's hard to keep track of. You might also consider promoting the 0.x releases in this monorepo to 1.x so it's easier to remember.)
There was a problem hiding this comment.
Hey @mcmire, really fair point! My view is that staying pre-1.0.0 is still somewhat defensible for us right now because the design system is still in a migration heavy phase, and the public API is not yet as stable as we want it to be. 0.x gives us more flexibility while the component surface is still settling.
But I agree with the underlying concern, using 0.x as a standing excuse for frequent breaking changes is a smell, not a strategy 😅. We are shipping breaking changes in almost every release, I think that's a sign that we are still in the "shape the API" stage rather than the "stabilize and protect the API" stage.
I was hoping we could release 1.0.0 whe core component APIs are mostly settled, breaking changes become rare and deliberate and we're prepared to optimize for consumer stability over release velocity
For now, I think the honest answer is that we're still in that transitional zone. I'm going to bring this up in team chat so we can align on when we think the right point is to move to 1.0.0 and what criteria we want to use to get there.
Release 43.0.0
This release drops Node.js 18 support across the release line, adds several new components, and includes a small set of breaking API changes that are documented in the migration guides.
📦 Package Versions
@metamask/design-system-shared: 0.21.0@metamask/design-system-react: 0.25.0@metamask/design-system-react-native: 0.28.0@metamask/design-tokens: 8.5.0@metamask/design-system-tailwind-preset: 0.9.0@metamask/design-system-twrnc-preset: 0.5.0🔄 Shared Type Updates (0.21.0)
Added
ContentPropsSharedandContentVerticalAlignmentfor React Native list-style rows and related layout patterns (#1192)Changed
TextAreaPropsSharedto removeinputElementso React NativeTextAreacan render the rootTextInputdirectly (#1205)🌐 React Web Updates (0.25.0)
Added
Popoverfor anchored overlays such as menus, tooltips, and dialogs (#1153)TextAreafor controlled multiline text entry (#1036)TextFieldSearchfor controlled search-field flows on top ofTextField(#1171)FormTextFieldfor labeled form controls built fromLabel,TextField, andHelpText(#1197)Changed
AvatarToken,AvatarNetwork, andAvatarFaviconresolve consistently when the requested image is unavailable (#1212)📱 React Native Updates (0.28.0)
Added
Contentfor composing scrollable and padded content sections on React Native screens; it is closely related to the upcomingListItemwork (#1192)Changed
isInteractivesupport toSectionHeaderso section rows match the new mobile layout patterns (#1210)TextAreaso it renders the rootTextInputdirectly; passTextInputprops onTextArea, use the componentreffor the input, and stop relying oninputPropsorinputElement(#1205)AvatarToken,AvatarNetwork, andAvatarFaviconresolve consistently when the requested image is unavailable (#1212)Node.js 18 support removed
What Changed:
Impact:
React Native
TextAreaflatteningWhat Changed:
TextAreanow renders the rootTextInputdirectly.inputPropsandinputElementare removed.inputRefis replaced by the componentref.Migration:
Impact:
TextArea.See migration guides for complete instructions:
✅ Checklist
yarn changelog:validate)Pre-merge author checklist
yarn build && yarn test && yarn lint)yarn changelog:validate)Pre-merge reviewer checklist
Note
Medium Risk
Breaking React Native TextArea and Node 18 removal affect consumer upgrades; most diff is release metadata with coordinated peer dependency bumps.
Overview
Release 43.0.0 bumps the monorepo root to 43.0.0 and publishes coordinated semver bumps across design-system packages, with yarn.lock peer ranges updated for
@metamask/design-system-tailwind-preset^0.9.0 and@metamask/design-system-twrnc-preset^0.5.0.Across the release line, changelogs record Node.js 18 dropped (Node 20+ required). @metamask/design-system-react 0.25.0 documents new
Popover,TextArea,TextFieldSearch, andFormTextField, plus avatar fallback fixes. @metamask/design-system-react-native 0.28.0 addsContent, updatesSectionHeader(default padding,isInteractive), and includes a breakingTextAreaflattening (inputProps/inputElement/inputRefremoved; props andreftarget the rootTextInput). @metamask/design-system-shared 0.21.0 addsContentPropsShared/ContentVerticalAlignmentand removesinputElementfrom sharedTextAreaprops.Migration guide edits in this diff: React Native 0.27.0 → 0.28.0
TextAreaguidance; React version heading 0.22.0 → 0.23.0 forBannerBase(changelog-driven 0.25.0 items are not new migration sections here).Reviewed by Cursor Bugbot for commit 23b0cda. Bugbot is set up for automated code reviews on this repo. Configure here.