Releases: MetaMask/metamask-design-system
Releases · MetaMask/metamask-design-system
25.0.0
@metamask/design-system-react 0.11.0
Added
- Added
ButtonFiltercomponent for filter button functionality (#964) - Added
BannerBasecomponent for creating custom banner notifications (#961)
Changed
- BREAKING: Updated
ButtonIconAPI to usevariantprop instead ofisInverseandisFloatingboolean props (#948)- Removed
isInverseandisFloatingprops - Added
variantprop with three options:ButtonIconVariant.Default(default),ButtonIconVariant.Filled(new muted background with rounded corners), andButtonIconVariant.Floating(replacesisFloatingbehavior) - Migration: Replace
isFloating={true}withvariant={ButtonIconVariant.Floating}, and usevariant={ButtonIconVariant.Default}for standard transparent background - See Migration Guide for complete migration instructions
- Removed
- Updated
Aiicon to filled version for visual consistency (#970)
@metamask/design-system-react-native 0.11.0
Added
- Added
ButtonFiltercomponent for filter button functionality (#964) - Added
BottomSheetcomponent for modal bottom sheet interactions (#963) - Added
MainActionButtoncomponent for primary call-to-action buttons (#952) - Added
BannerBasecomponent for creating custom banner notifications (#955) - Added
ListItemcomponent for standardized list rows (#958) - Added
TabEmptyStatecomponent for empty tab state displays (#949) - Added
BottomSheetDialogcomponent for bottom sheet dialog interactions (#905)
Changed
- BREAKING: Updated
ButtonIconAPI to usevariantprop instead ofisInverseandisFloatingboolean props (#948)- Removed
isInverseandisFloatingprops - Added
variantprop with three options:ButtonIconVariant.Default(default),ButtonIconVariant.Filled(new muted background with rounded corners), andButtonIconVariant.Floating(replacesisFloatingbehavior) - Migration: Replace
isFloating={true}withvariant={ButtonIconVariant.Floating}, and usevariant={ButtonIconVariant.Default}for standard transparent background - See Migration Guide for complete migration instructions
- Removed
- BREAKING:
Inputcomponent now requiresvalueprop and is controlled-only (#960)- Removed
defaultValueprop - all Input instances must now pass avalueprop and manage state viaonChange - This change affects all components using
Inputdirectly, includingTextField - Migration: Convert uncontrolled inputs to controlled by adding state management with
valueandonChangeprops - See Migration Guide for complete migration instructions
- Removed
- Updated
Aiicon to filled version for visual consistency (#970)
Fixed
- Fixed iOS placeholder alignment issue in
Inputcomponent without affecting typed text rendering (#960) - Fixed missing component exports in package entry point (#967)
@metamask/design-system-shared 0.4.0
Added
- Added shared
ButtonFiltertypes and constants for cross-package reuse (#964)- Added
ButtonFilterVariantconst object with derived string union type (primary,secondary) - Added
ButtonFilterPropsSharedas the shared base props contract used by React and React Native implementations
- Added
- Added shared
BannerBasetypes and constants for cross-package reuse (#955)- Added
BannerBaseSeverityconst object with derived string union type for severity variants - Added
BannerBasePropsSharedas the shared base props contract used by React and React Native implementations
- Added
24.0.0
@metamask/design-system-react 0.10.0
Changed
- BREAKING: Updated
BadgeCounttype exports to use the ADR-0003/ADR-0004 const-object + string-union pattern instead of TypeScript enums (#942)BadgeCountSizeis now provided as a const object with a derived union type rather than an enumBadgeCountshared prop types are now sourced from@metamask/design-system-shared- Migration: update any enum-specific usage to const-object/union usage, while continuing to import from
@metamask/design-system-react
@metamask/design-system-react-native 0.10.0
Added
- Added
ActionListItemcomponent for standardized list row actions (#951) - Added
SensitiveTextcomponent for sensitive value display and reveal interactions (#922) - Added
ButtonSemanticcomponent for semantic intent button variants (#950) - Added
BottomSheetHeadercomponent for consistent bottom sheet header layouts (#927) - Added
ButtonHeroto@metamask/design-system-react-native(#934)
Changed
- BREAKING: Updated
BadgeCounttype exports to use the ADR-0003/ADR-0004 const-object + string-union pattern instead of TypeScript enums (#942)BadgeCountSizeis now provided as a const object with a derived union type rather than an enumBadgeCountshared prop types are now sourced from@metamask/design-system-shared- Migration: update any enum-specific usage to const-object/union usage, while continuing to import from
@metamask/design-system-react-native
@metamask/design-system-shared 0.3.0
Added
- Added shared
BadgeCounttypes and constants for cross-package reuse (#942)- Added
BadgeCountSizeconst object and derivedBadgeCountSizestring union type - Added
BadgeCountPropsSharedas the shared base props contract used by React and React Native implementations
- Added
23.0.0
@metamask/design-system-react-native 0.9.0
Added
- Added
TextFieldcomponent for text input fields (#910)- Boxed, press-to-focus wrapper around
Inputcomponent - Supports configurable sizes, optional start/end accessories
- Includes error and disabled states with custom styling
- Full accessibility support and comprehensive test coverage
- Boxed, press-to-focus wrapper around
@metamask/design-tokens 8.2.2
Changed
- Updated typography scale for improved text hierarchy (#936)
fontSize.5increased from 18px to 20px, affectingHeadingMd,SectionHeading,BodyLg, andButtonLabelLgtypography tokensSectionHeadingon large screens now uses 24px (up from 20px) to maintain consistent hierarchy withHeadingMd- These tokens map to
TextVariant.HeadingMd,TextVariant.SectionHeading,TextVariant.BodyLg, andTextVariant.ButtonLabelLgused in theTextcomponent from both@metamask/design-system-reactand@metamask/design-system-react-nativepackages - Typography documentation updated to reflect the refined sizes
22.0.0
@metamask/design-tokens 8.2.1
Changed
- Updated neutral grey palette (grey050-grey1000) to ensure consistent elevations and interactions across themes (#849)
- Refined neutral color values for more perceptible uniform elevations
- Improved hue consistency across muted shades
- Updated
background.muted,background.defaultHover,background.defaultPressedfor better theme consistency - Aligned border and overlay colors with theme-appropriate values
- Synchronized all design tokens (CSS, JS, Figma JSONs) with latest Figma specifications
21.0.0
@metamask/design-system-react 0.9.0
Changed
- BREAKING: Migrated
BadgeStatuscomponent from TypeScript enums to string union types with const objects (#912)BadgeStatusStatusandBadgeStatusSizeenums replaced with const objects and derived string union types- No migration required - continue importing from
@metamask/design-system-reactas usual - Const object values remain the same (e.g.,
BadgeStatusStatus.Activestill works) - String literals now also accepted thanks to structural typing (e.g.,
'active'works whereBadgeStatusStatus.Activeis expected) - We are still evaluating best practices for const objects vs string literals - use whichever approach works best for your codebase
- This change implements ADR-0003 and ADR-0004
@metamask/design-system-react-native 0.8.0
Added
- Added
RadioButtoncomponent for radio button form controls (#926)- Supports checked, disabled, read-only, and danger states
- Full accessibility support with
role="radio"andaccessibilityState - Optional label rendering for improved usability
Changed
- BREAKING: Migrated
BadgeStatuscomponent from TypeScript enums to string union types with const objects (#912)BadgeStatusStatusandBadgeStatusSizeenums replaced with const objects and derived string union types- No migration required - continue importing from
@metamask/design-system-react-nativeas usual - Const object values remain the same (e.g.,
BadgeStatusStatus.Activestill works) - String literals now also accepted thanks to structural typing (e.g.,
'active'works whereBadgeStatusStatus.Activeis expected) - We are still evaluating best practices for const objects vs string literals - use whichever approach works best for your codebase
- This change implements ADR-0003 and ADR-0004
- Refactored
BottomSheetFootercomponent location for better organization (#933)- Moved from
BottomSheets/BottomSheetFooter/toBottomSheetFooter/ - Updated import paths and Storybook title
- No breaking changes - all imports from package entry point continue to work
- Moved from
@metamask/design-system-shared 0.2.0
Added
- Added centralized
BadgeStatustypes and constants (#912)BadgeStatusStatusconst object with derived string union type for status variants (active,inactive,warning,danger,success)BadgeStatusSizeconst object with derived string union type for size variants (sm,md,lg)BadgeStatusPropsSharedtype interface for shared component props- Enables structural typing - both const object values (
BadgeStatusStatus.Active) and string literals ('active') are now accepted - Implements ADR-0003 and ADR-0004
20.0.0
@metamask/design-system-react 0.8.0
Added
- Added
CorporateFareicon to represent stocks (#920) - Added
Inputcomponent for text input fields (#909)
Changed
- BREAKING: Standardized non-icon enum runtime values to use kebab-case format (#894)
- Enum values now use lowercase/kebab-case (e.g.,
'primary'instead of'Primary','top-right'instead of'TopRight') - Migration likely not needed - continue using enum constants (e.g.,
ButtonVariant.Primary) - Migration needed only if your app persists or transmits these enum values (localStorage, databases, APIs)
- This prepares for migration from enums to string union types per ADR #127
- Enum values now use lowercase/kebab-case (e.g.,
- Updated
@metamask/utilspeer dependency from 11.9.0 to 11.10.0 (#903)
@metamask/design-system-react-native 0.7.0
Added
- Added
Labelcomponent for form labels and descriptive text (#907) - Added
HeaderBasecomponent for consistent header layouts (#902) - Added
Skeletoncomponent for loading states (#891) - Added
Cardcomponent for grouped content sections (#923) - Added
BottomSheetFootercomponent for bottom sheet actions (#899) - Added
Toastcomponent for temporary notification messages (#892) - Added
Inputcomponent for text input fields (#909) - Added
CorporateFareicon to represent stocks (#920) - Added
BottomSheetOverlaycomponent for modal bottom sheet interactions (#897)- Provides consistent overlay pattern for bottom sheet components
- Includes press-to-dismiss functionality and accessibility features
Changed
- BREAKING: Standardized non-icon enum runtime values to use kebab-case format (#894)
- Enum values now use lowercase/kebab-case (e.g.,
'primary'instead of'Primary','top-right'instead of'TopRight') - Migration likely not needed - continue using enum constants (e.g.,
ButtonVariant.Primary) - Migration needed only if your app persists or transmits these enum values (localStorage, databases, APIs)
- This prepares for migration from enums to string union types per ADR #127
- Enum values now use lowercase/kebab-case (e.g.,
- Updated component styling to use
tw.style()instead of string-basedtwClassNamefor better type safety and conditional styling (#889) - Updated
@metamask/design-tokenspeer dependency from ^8.1.0 to ^8.2.0 to supportAnimationDurationenum used byBottomSheetOverlay - Updated
@metamask/utilspeer dependency from 11.9.0 to 11.10.0 (#903) - Reorganized peer dependencies for better dependency management (#901)
Fixed
- Fixed
ButtonBasecomponent sizing issues in flex layouts to prevent unexpected shrinking (#870)
@metamask/design-system-shared 0.1.3
Changed
- Updated
@metamask/utilsdependency from 11.9.0 to 11.10.0 (#903)
@metamask/design-tokens 8.2.0
Added
- Exported
AnimationDurationenum for standardized animation timing values (#897)
19.0.0
18.0.0
@metamask/design-system-react 0.6.1
Changed
- Updated
@metamask/utilspeer dependency from 11.8.1 to 11.9.0 (#867)
Fixed
- Updated
ButtonIconcomponent icon sizes and border radius to match Figma design specifications (#873)ButtonIcon.Smnow uses 20px icon (previously 16px)ButtonIcon.Mdnow uses 24px icon (previously 20px)ButtonIcon.Lgnow uses 32px icon (previously 24px)- Non-floating border radius now uses 8px for improved visual consistency
@metamask/design-system-react-native 0.5.1
Changed
- Updated
@metamask/utilspeer dependency from 11.8.1 to 11.9.0 (#867)
Fixed
- Updated
ButtonIconcomponent icon sizes and border radius to match Figma design specifications (#873)ButtonIcon.Smnow uses 20px icon (previously 16px)ButtonIcon.Mdnow uses 24px icon (previously 20px)ButtonIcon.Lgnow uses 32px icon (previously 24px)- Non-floating border radius corrected to 4px (previously 2px)
@metamask/design-system-shared 0.1.2
Changed
- Updated
@metamask/utilsdependency from 11.8.1 to 11.9.0 (#867)
17.0.0
@metamask/design-system-react 0.6.0
Added
- Add
ButtonHerocomponent for prominent call-to-action buttons in hero sections and landing pages (#843)- Extends base Button component with all standard
ButtonBaseprops (variant,size,disabled, etc.) plus additional styling optimized for large, attention-grabbing CTAs - Import and use like standard Button:
import { ButtonHero } from '@metamask/design-system-react' - Provides consistent, accessible hero button pattern across MetaMask applications
- Fully typed with
ButtonHeroPropsinterface
- Extends base Button component with all standard
Changed
- Updated
@metamask/utilspeer dependency from 11.8.0 to 11.8.1 (#838)
@metamask/design-system-react-native 0.5.0
Changed
- BREAKING: Update font file names from space-separated to hyphenated PostScript format for iOS Metro bundler compatibility (#862)
- Font file names changed: "Geist Regular.otf" → "Geist-Regular.otf", "Geist Medium.otf" → "Geist-Medium.otf", "Geist Bold.otf" → "Geist-Bold.otf"
- Fixes Metro bundler asset resolution issues on iOS that prevented fonts from loading correctly
- If using
@metamask/design-system-react-nativecomponents as intended, fonts automatically load correctly with no migration needed - If manually referencing font file paths in custom code, update all references to use hyphenated file names instead of space-separated names
- Android is unaffected by this change
- Updated
@metamask/utilspeer dependency from 11.8.0 to 11.8.1 (#838)
Fixed
- Export missing
TextButtonSizeenum from package entry point for TypeScript type safety (#848)- The
TextButtonSizeenum is now properly exported and accessible for imports - Developers can now use typed enums instead of string literals:
import { TextButton, TextButtonSize } from '@metamask/design-system-react-native'and<TextButton size={TextButtonSize.Medium} /> - This is a non-breaking, additive change that improves type safety
- The
@metamask/design-system-twrnc-preset 0.3.0
Changed
- BREAKING: Update font family names from space-separated to hyphenated PostScript format for iOS Metro bundler and expo-font compatibility (#862)
- Font family names changed:
"Geist Regular"→"Geist-Regular","Geist Medium"→"Geist-Medium","Geist Bold"→"Geist-Bold" - Fixes critical font loading issues on iOS when using Metro bundler with expo-font
- If using TWRNC preset via
@metamask/design-system-react-nativecomponents, fonts automatically use correct names with no migration needed - If directly referencing font families in custom TWRNC styles, update to hyphenated names (e.g., tw
font-['Geist-Regular']instead of twfont-['Geist_Regular']) - Android is unaffected by this change
- Aligns with MetaMask Mobile's font configuration and expo-font requirements
- Font family names changed: