Wear Compose Material 3

  
Write Jetpack Compose applications for Wear OS devices by providing functionality to support different device sizes and navigation gestures using the Material 3 Expressive design system.
Latest Update Stable Release Release Candidate Beta Release Alpha Release
June 4, 2025 - - 1.5.0-beta03 -

Declaring dependencies

To add a dependency on Wear, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.

Add the dependencies for the artifacts you need in the build.gradle file for your app or module:

Groovy

dependencies {
    implementation "androidx.wear.compose:compose-foundation:1.5.0-beta03"

    // For Wear Material Design UX guidelines and specifications
    implementation "androidx.wear.compose:compose-material3:1.5.0-beta03"

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation "androidx.wear.compose:compose-navigation:1.5.0-beta03"

    // For Wear preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.5.0-beta03")
    
    // NOTE: DO NOT INCLUDE dependencies on androidx.wear.compose:compose-material
    // or androidx.compose.material:material.
    // androidx.wear.compose:compose-material3 is designed as a replacement,
    // not an addition, to both of these other libraries.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material3, please raise a bug to let us know.
}

Kotlin

dependencies {
    implementation("androidx.wear.compose:compose-foundation:1.5.0-beta03")

    // For Wear Material Design UX guidelines and specifications
    implementation("androidx.wear.compose:compose-material3:1.5.0-beta03")

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation("androidx.wear.compose:compose-navigation:1.5.0-beta03")
    
    // For Wear preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.5.0-beta03")

    // NOTE: DO NOT INCLUDE dependencies on androidx.wear.compose:compose-material
    // or androidx.compose.material:material.
    // androidx.wear.compose:compose-material3 is designed as a replacement,
    // not an addition, to both of these other libraries.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material3, please raise a bug to let us know.
}

For more information about dependencies, see Add build dependencies.

Feedback

Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

Wear Compose Material3 Version 1.5

Version 1.5.0-beta03

June 4, 2025

androidx.wear.compose:compose-*:1.5.0-beta03 is released. Version 1.5.0-beta03 contains these commits.

API Changes

  • OpenOnPhoneDialog now announces only the message text under TalkBack, and skips the icon semantics. The OpenOnPhoneDialogDefaults have been updated to remove the iconContentDescription and the contentDescription parameter from icon(). Also, ConfirmationDialogDefaults now has modifier parameters on SuccessIcon and FailureIcon composables. (Id2ae2)

Bug Fixes

  • Changed the order in which we apply the effect of SurfaceTransformation parameters. Before, the transformations applied to Wear Material3 components were done as follows: background painter, container transformation, content transformation. Now, the first 2 are inverted, and we apply any passed in modifier between them, so it is affected by container transformations. This fixes cases like using a placeholder shimmer effect with elements in a TLC using the transformation parameter. (I786cf)
  • RevealState.Saver was added to be used to restore the state of SwipeToReveal when activity or process is recreated. rememberRevealState function now uses this Saver by default. (Ie0ecb)
  • SwipeToReveal primary and secondary actions buttons should default to ButtonDefault.Height (fixed bug where these were filling the maximum height for taller buttons). (Ibfba1)
  • Changed SwipeToReveal to reset the last component interacted with, when the swipe right gesture is performed. (Ia8450)
  • SwipeToReveal was changed to settle on the Revealing state when the end position of the swipe is in between the revealing and revealed anchors, and is closer to the Revealing anchor. (If4458)
  • Now ButtonGroup's content is properly inverted in a RTL layout (Ib378d)
  • AnimatedText now supports RTL text direction (I4533c)
  • TransformingLazyColumn now resizes items correctly when the bottom item is removed (Idacab)
  • TransformingLazyColumn now makes just one measuring pass, which improves performance by reducing frame times. (I501a1)

Version 1.5.0-beta02

May 20, 2025

androidx.wear.compose:compose-*:1.5.0-beta02 is released. Version 1.5.0-beta02 contains these commits.

Bug Fixes

  • Updated baseline profiles for foundation, material & material3 libraries. (I53f06)
  • Fixed a bug in TransformingLazyColumn, where items resized when the bottom item was removed. (Idacab)
  • Fixed a bug with TransformingLazyColumn, when the list got stuck at the top or bottom of the list. (I49d00)
  • OpenOnPhoneDialog under TalkBack should announce the curved text, rather than the icon content description. (I4efe8)
  • Fixed a bug in SwipeToReveal that would report the wrong anchor in RevealState.currentValue when hasPartiallyRevealedState is set to false. (I9c7cf)
  • SwipeToReveal undo buttons are now ButtonDefaults.Height by default. (I1f6c8)
  • BasicSwipeToDismissBox performance has been improved by eliminating use of Canvas for drawing scrims. (I68f2c)
  • Fixed an accessibility bug in Slider, where the announced percentage did not match the value after updates (I91146)
  • Fixed a bug on placeholderShimmer implementation. (Iee39b
  • TransformingLazyColumn performance has been improved, by optimizing ScrollProgress calculation by 30%. (I4c4cb)

Version 1.5.0-beta01

May 7, 2025

androidx.wear.compose:compose-*:1.5.0-beta01 is released. Version 1.5.0-beta01 contains these commits.

The 1.5.0-beta01 release of Compose for Wear OS indicates that this release of the library is feature complete and the API is locked (except where marked as experimental).

Wear Compose 1.5.0-beta01 includes the Wear Compose Material3 library, which supports the new UI design system called Material 3 Expressive. It is recommended to upgrade from Material to Material3 to embrace the new visual design in apps, and to benefit from the new components as follows:

  • MaterialTheme for updated and extended color schemes, typography, and shapes to bring both depth and variety to your designs.
  • Dynamic Color Theming which automatically generates a color scheme for your app to match the watch face colors.
  • New components automatically adapt to larger screen sizes by default
  • Shape Morphing - round button components like IconButton, TextButton, IconToggleButton and TextToggleButton support variations that animate when pressed or checked.
  • EdgeButton - a new edge-hugging button with a special shape designed for the bottom of the screen.
  • Scaffolds - introducing AppScaffold and ScreenScaffold to lay out the structure of the screen and coordinate ScrollIndicator and TimeText animations.
  • Buttons - numerous stadium-shaped buttons are supported with flexible, single-slot containers and multi-slot variations for buttons with icons and labels. CheckboxButton and SwitchButton are provided when toggle buttons are needed, whilst RadioButton is the available selection button (‘Split’ variations of the toggle and selection buttons are also provided).
  • ButtonGroup - implements an expressive group of buttons in a row that shape-morph when touched.
  • AlertDialog variations support ok/cancel buttons or an EdgeButton.
  • ConfirmationDialog is available to display a message with a timeout, supporting special animations for success, failure and open-on-phone variations.
  • Pickers - TimePicker and DatePicker variations are supported as well as the Picker and PickerGroup components for building your own picker screens.
  • ProgressIndicators - circular, and linear progress indicators are supported (the CircularProgressIndicator has segmented and indeterminate variations).
  • Cards - a number of card variations are available, including TitleCard which offers specific layouts for cards with title, time, subtitle or content slots. TitleCard can also be given an image background to reinforce the meaning of the information in a card.
  • Pagers - HorizontalPagerScaffold, VerticalPagerScaffold and AnimatedPage components coordinate HorizontalPageIndicator and VerticalPagerIndicator animations. HorizontalPager and VerticalPager are released in the Wear Compose Foundation library.
  • Placeholders - draws a skeleton shape over a component, for situations where no provisional content is available.
  • Sliders and Steppers - both sliders and steppers allow users to make a selection from a range of values. Sliders are more compact and can be segmented, whereas Stepper is a full screen component typically paired with a StepperLevelIndicator.
  • SwipeToReveal - used to add additional actions to a composable when it is swiped right-to-left.

In addition, Wear Compose Foundation 1.5.0-beta01 includes these new components:

  • TransformingLazyColumn - a lazy, vertically scrolling list the supports scaling and morphing animations
  • Hierarchical Focus Groups - used to annotate composables in an application, to keep track of the active part of the composition and coordinate focus.
  • Pagers - HorizontalPager and VerticalPager components, built on the Compose Foundation components with Wear-specific enhancements to improve performance and adherence to Wear OS guidelines.

API Changes

  • Updated the Hierarchical Focus API - renamed Modifier.hierarchicalFocus to Modifier.hierarchicalFocusGroup and removed the callback parameter; removed the overload of Modifier.hierarchicalFocusRequester with a FocusRequester parameter; created a new CompositionLocal, LocalScreenIsActive so that components can inform and check which screen is the active one. (I5ff7c).
  • Deprecated SwipeToReveal from Wear Compose Foundation in favor of SwipeToReveal APIs in Wear Compose Material and Wear Compose Material3. Please replace Wear Foundation SwipeToReveal imports with Wear Compose Material/ Wear Compose Material3 imports to continue using the APIs. (Ia147d).
  • Wear Compose Material3 SwipeToReveal dependencies on Foundation were moved to the material3 package, e.g. RevealValue, RevealDirection, RevealActionType, RevealState, rememberRevealState. Developers should change their imports of these classes and functions from androidx.wear.compose.foundation to androidx.wear.compose.material3. (I640e6).
  • Updated the Wear Compose Material3 SwipeToReveal API as follows: added primaryAction, onFullSwipe, secondaryAction, undoPrimaryAction, undoSecondaryAction and hasPartiallyRevealedState parameters to the SwipeToReveal composable; removed the ability to customize positionalThreshold and animationSpec from RevealState; removed lastActionType, revealThreshold and width from RevealState; changed the RevealState constructor to accept a RevealDirection instead of anchors; removed createRevealAnchors, anchors, and bidirectionalAnchors functions; SwipeToRevealScope functions primaryAction, secondaryAction, undoPrimaryAction and undoSecondaryAction were renamed to PrimaryActionButton, SecondaryActionButton, UndoActionButton and made into Composable functions; marked RevealActionType as internal. (I885d0).
  • Further updated SwipeToReveal API as follows: renamed onFullSwipe to onSwipePrimaryAction; renamed SwipeToRevealNonAnchoredSample to indicate the use of the hasPartiallyRevealedState parameter; removed actionButtonHeight, since the default is the Button's default height and the larger height can be set using a modifier; removed the SmallActionButtonHeight from SwipeToRevealDefaults; made the value parameter in RevealValue and RevealDirection constructors private. (I465ce).

Bug Fixes

  • Fixed ScreenScaffold’s EdgeButton handling so that, after a TransformingLazyColumn item is removed, the EdgeButton is animated into place. (I6d366).
  • Updated Wear Compose dependencies on Compose libraries to version 1.8.0. (I2ef3f).
  • Updated the motion of the indeterminate CircularProgressIndicator so that it no longer regresses temporarily. (Ieddb1).
  • Fixed a SwipeDismissableNavHost bug - the focus was not switching correctly after swiping back, causing rotary input to fail (this was for API 36+, which uses predictive back). (Ieddb1).
  • Amended documentation for the Hierarchical Focus API (Idf2ff).
  • Updated the documentation for Button and Card to state how containerPainter and disabledContainerPainter override containerColor and disabledContainerColor (I4a453).
  • Reverted a change to TimeText in the previous release which moved the BroadcastReceiver to a worker thread, because it caused issues for apps that manage their own threading during navigation. (I34d02).
  • Updated the Picker samples to remove unnecessary remember calls and instead use rememberUpdatedState in Picker to remember the latest contentDescription lambda function. (Icb5b1).
  • Updated text styles in TimePicker and DatePicker so that font changes no longer result in truncation. (I26194).
  • ListHeader and ListSubHeader now default text alignment to center-aligned and start-aligned respectively. (I78339).
  • Updated Foundation and Material Swipe to Reveal samples and demos to announce custom accessibility actions (the custom actions must be added as semantics on the content, not on the SwipeToReveal composable itself). (Ie92a3).
  • Updated the default MaxLines set on the EdgeButton content according to its size - it is now 1 for extra small, 2 for small and medium, and 3 for large. (Ie35f6).
  • Simplified LocalReduceMotion so that the observer is only registered once, to improve performance. (Ib1979).
  • Minimized the number of redraws in ScrollIndicator, to improve performance. (Ia7a67).
  • Fixed a bug in TransformingLazyColumn, where the top visible item in the list did not scale correctly when EdgeButton achieved its full height. (I30580).

Wear Compose Material3 Version 1.0

Version 1.0.0-alpha37

April 23, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha37 is released. Version 1.0.0-alpha37 contains these commits.

API Changes

  • Removed scrollTransform from the public API surface. Use the combination of transformedHeight and graphicsLayer modifiers if you need to get the same functionality. (Ie181d)
  • Replaced ImageButton and ImageCard composables with Button and Card/TitleCard overloads respectively. Renamed imageButtonColors to buttonWithContainerPainterColors and imageCardColors to cardWithContainerPainterColors. Added public ButtonDefaults.scrimBrush and CardDefaults.scrimBrush. Renamed button imageBackgroundGradientStartColor and imageBackgroundGradientEndColor to scrimGradientStartColor and scrimGradientEndColor. Renamed CardDefaults.ImageContentPadding to CardDefaults.CardWithContainerPainterContentPadding (I7b8b6)
  • Picker and PickerGroup now take the contentDescription as a lambda to avoid unnecessary recompositions. (I002dd)

Bug Fixes

  • Fixed an issue where indeterminate CircularProgressIndicator would wobble during animation if width is not equal to height. (I76bfe)
  • Fixed an issue with edge button layout on invalid size. Now prevents updating the layout of the edge button when the height is NaN. (I32b93)
  • Increased the max sweep angle in OpenOnPhoneDialog so that the default ‘Check your phone’ text is not clipped with the largest font size. (I90af9)

Version 1.0.0-alpha36

April 9, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha36 is released. Version 1.0.0-alpha36 contains these commits.

API Changes

  • Replaced ButtonDefaults.imageBackgroundButtonColors with ImageButton, ButtonDefaults.imageButtonColors, ButtonDefaults.containerPainter and ButtonDefaults.disabledContainerPainter. And similar changes for Card. The painters are removed from ButtonColors and CardColors. (I8c6a1)
  • Updated placeholders to simplify the API. We now provide two Modifiers, Modifier.placeholderShimmer to apply a shimmer effect at the component level, and Modifier.placeholder to apply a mask on top of unloaded content (Iaee7a)

Bug Fixes

  • Integrated overscroll into the ScrollIndicator. (Icfb7f)
  • Address blank backgrounds and missing dialogs when launching material3 dialogs. (Ice597)
  • Fixed issues in FadingExpandingLabel when text spans multiple lines. (I04eb7)
  • Updated padding between primary and secondary labels on buttons. (I99b7b)
  • ArcLarge has been reduced from 20sp to 18sp, and letter spacings on ArcLarge and ArcSmall have been updated. ConfirmationDialog/OpenOnPhoneDialog now use the default ArcLarge instead of overriding it to 18sp. (Id39a8)

Dependency Updates

  • This library now targets Kotlin 2.0 language level and requires KGP 2.0.0 or newer. (Idb6b5)

Version 1.0.0-alpha35

March 26, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha35 is released. Version 1.0.0-alpha35 contains these commits.

API Changes

  • AlertDialog top padding is now reduced by default when an icon is provided - this makes best use of the screen size available. (Ief06c)
  • PagerScaffoldDefaults.FadeOutAnimation has been renamed to PagerScaffoldDefaults.FadeOutAnimationSpec. The page parameter on AnimatedPage has been renamed to pageIndex. (I701f2)
  • Updated naming for TransformingLazyColumn’s SurfaceTransformation - applyTransformation split into applyContainerTransformation and applyContentTransformation, and renamed createBackgroundPainter to createContainerPainter. Further naming updates to TransformationSpec and ResponsiveTransformationSpec. (I1c534)
  • The AppScaffold backgroundColor has been renamed to containerColor. (I4e63f)

Bug Fixes

  • Fixed an issue in FadingExpandingLabel where the text did not always expand correctly. (I0e773)
  • ArcLarge has been reduced from 20sp to 18sp, and letter spacings on ArcLarge and ArcSmall have been updated. ConfirmationDialog/OpenOnPhoneDialog now use the default ArcLarge instead of overriding it to 18sp. (Id39a8)
  • Updated the heading animation for DatePicker and TimePicker based, so that the fade-out and fade-in animation act as one Spring animation. (I68963)
  • Optimized PagerScaffold by avoiding the reading of currentPageOffsetFraction in the AnimatedPage composable. (I433ef)
  • All type scales have been updated to have proportional numerals by default, because that is seen as the most frequent use case and defaulting to tabular resulted in too much spacing between certain number pairings. TimePicker and DatePicker continue to apply FontFeatureSetting=tnum for tabular numerals. (I88929)
  • Corrected the initial RSB input focus for TimePicker and DatePicker. (I1c773)
  • Updated the default text on OpenOnPhoneDialog to "Check your phone". (I00a3f)
  • Updated weights for ArcLarge and ArcMedium from 600 to 599 to workaround an issue where weight 600 is treated as bold (I2a51d)
  • Update SwipeToReveal paddings between content and action buttons, and also the padding between the icon and text of the action buttons. (Ic46cb)

Version 1.0.0-alpha34

March 12, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha34 is released. Version 1.0.0-alpha34 contains these commits.

API Changes

  • PagerScaffold no longer emits a Pager component - instead this must be provided via the content Composable. AnimatedPage and snapWithSpringFlingBehaviour are now public and can be used along with Wear Foundation Pager to achieve previous M3 PagerScaffold behaviour. (See updated samples). (Ia4724)
  • Updated PagerState, removing the Compose Foundation PagerState as the base class and adding currentPage, currentPageOffsetFraction and pageCount properties. Updated the GestureInclusion interface, renaming the method to ignoreGestureStart. (I4ae07)
  • LevelIndicator sweep angle parameters are now annotated with FloatRange(0, 360) (I7e636)
  • We have added CurvedModifier.clearAndSetSemantics to provide a means by which curved semantics can be turned off. CurvedText continues to default the content description to the text, but timeTextCurvedText and timeTextSeparator do not now announce their contents. (I4b568)
  • Added a background and default content color parameters to AppScaffold. (I56652)
  • HorizontalPager’s default handling of swipe gestures has been renamed to PagerDefaults.gestureInclusion. The default behavior is now to only ignore swipe gestures that start on the left edge of the first page, and only then when Talkback is turned off. In other cases, the default behavior is that swipe gestures will not be ignored by the pager, so they will not be available to swipe-to-dismiss handlers. (Iee486)
  • Added a SurfaceTransformation parameter to button, card and list header components, so that they can apply different background and content transformations when used in containers that change items appearance based on their position, such as TransformingLazyColumn. (Iabe3f)
  • We have updated 'public const val' properties in our Wear Compose Material3 API to 'public val', to avoid the values being inlined. (Ib0f32)
  • Added support for an edge-swipe zone to SwipeToReveal. Foundation SwipeToReveal’s default behavior is now to disallow swiping when the gesture starts from the edge. Material3 SwipeToReveal’s default behavior is now to disallow swiping when the gesture starts from the edge, when the SwipeDirection is set to single direction. (I32ef0)
  • Added FadingExpandingLabel composable, which allows it to fade in text with animation line by line. (Ic60fa)
  • TransformingLazyColumn now uses empty contentPadding by default instead of putting first and last items into center. (I77ab7)
  • Removed SwipeToReveal’s rememberRevealState from the Wear Compose Material3 library. (I8c0e0)

Bug Fixes

  • Wear Compose libraries have been updated to the Kotlin 2.0 compiler. (I2de79)
  • Support for non-round ScrollIndicator and PageIndicator has been removed from Material3. Square screen support is also no longer part of the Wear OS requirements, see the Getting Started guide for more information. (I9a852)
  • The CurvedTextStyle used in ConfirmationDialogDefaults and OpenOnPhoneDialogDefaults has been updated to use ArcLarge typography with size 18sp and letter spacing 1.8sp. (Ic9ced)
  • Card, ListHeader, RadioButton, CheckboxButton, SwitchButton no longer constrain the height of its contents by default. Where necessary, use Modifier.height(IntrinsicSize.Min) to restore the previous behavior if needed. (I80bb8)
  • We have updated the default TimeText and ScrollIndicator colors to include more gray tones, because using OnBackground (white) directly carried too much visual weight when competing with other content on screen like titles. (I8b36f)
  • We have reduced the timeout for animating the TimeText and ScrollIndicator in scaffold components to 2 seconds. (I52021)
  • We have updated the motion of Dialog so that the scale of the background of the Dialog is synchronised with swiping to dismiss. (I925a9)
  • Add demo of M3 SwipeToReveal using edgeSwipeToDismiss modifier. (I02b07)
  • We have added a heading to DatePicker and TimePicker under TalkBack so that the user is informed to scroll to set date/time. (Id738d)
  • AnimatedText now follows the reduce motion setting. (Ib6578)
  • The optimisation to use AppScaffold for display Dialog content has been improved to allow multiple dialogs to be displayed on top of each other (I1209c)

Version 1.0.0-alpha33

February 26, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha33 is released. Version 1.0.0-alpha33 contains these commits.

API Changes

  • We have removed the label parameter from SwipeToRevealScope's primaryAction and secondaryAction. Custom action semantics should be added to the content of the SwipeToReveal component directly, by the developer. (Ia67f3)
  • We have removed the 'Button' prefixes from sizes, text styles and color functions in IconToggleButtonDefaults and TextToggleButtonDefaults (I5471d)
  • We have removed the experimental LocalMinimumInteractiveComponentEnforcement (I4ad8a)
  • We have replaced the PickerGroupScope DSL with a composable. As such, we removed the pickerGroupItem method from PickerGroupScope, and instead added @Composable PickerGroupItem that should be used to add a Picker to PickerGroup. We also updated the type of PickerGroup 'content' parameter to @Composable PickerGroupScope.() -> Unit. (Ic6aec)
  • We have added a LevelIndicator overload for fractional values and added a Stepper prefix to those overloads that include a range parameter (which are suitable for use with the Stepper component). (If4234)
  • We have added TransformingLazyColumn’s TransformationSpec to the API, which allows the definition of the exact transformations happening to the items as they are being scrolled through the TLC. (I21856)
  • We have updated IconButtonShapes, IconToggleButtonShapes, TextButtonShapes and TextToggleButtonShapes to be consistent with the compose/material3 classes (I5a081)
  • We have added an overscrollEffect parameter added to ScalingLazyColumn, TransformingLazyColumn and ScreenScaffold. (I0cee8)
  • We have renamed the swipeDirection parameter to revealDirection in rememberRevealState. (I7472f)
  • Wear Pager now has its own PagerScope instead of using Compose PagerScope. (I9195b)
  • We have removed the LinearProgressIndicatorContent composable, please use LinearProgressIndicator directly so that changes to values are animated by default. (I2c4ad)
  • We have removed the CircularProgressIndicatorStatic composable and added a public DrawScope function drawCircularProgressIndicator with the same functionality. Please use CircularProgressIndicator directly so that changes are animated by default, but build your own composable from drawCircularProgressIndicator if custom animations are needed. (Ie762f)
  • We have reordered the parameters in DrawScope.drawCircularProgressIndicator to move up the targetProgress parameter. (I8ab92)
  • The OpenOnPhoneDialog api was updated for better clarity and consistency with other Dialogs. The show parameter was renamed to visible and curvedText is now provided by the caller instead of having a default value. (Idec2d)
  • We have renamed openOnPhoneCurvedText to openOnPhoneDialogCurvedText (I65bdd)
  • We have added ScrollIndicatorColors for providing custom colors to ScrollIndicator. (I9eb8c)
  • Allow the configuration of the color used to draw a background behind TimeText. (I9f5d9)
  • Updated ArcLarge, ArcMedium and ArcSmall typographies to be CurvedTextStyle (Iffc41)
  • We have removed ScreenScaffoldDefaults.contentPaddingWithEdgeButton. (Ia923e)
  • We have added errorDim to the ColorScheme, for high priority errors or emergency actions such as safety alerts, failed dialog overlays or stop buttons. (I70998)

Bug Fixes

  • We have pinned wear.compose.material3 to version 1.15.0 of androidx.core.core (I132e9)
  • We have improved Dialog's performance by using the AppScaffold to layer dialogs over other screen content (I1b9a4)
  • Reduced EdgeButton's internal vertical padding. (I1a5bb)
  • We have added Button semantics to Slider buttons. (I80cc6)

Version 1.0.0-alpha32

January 29, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha32 is released. Version 1.0.0-alpha32 contains these commits.

API Changes

  • On CurvedTextStyle, we have split letter spacing into clockwise letter spacing and counter clockwise letter spacing. This is required because clockwise letters fan out from the baseline whereas counter-clockwise letters fan in (so larger letter spacing is needed) (I4b848)
  • We have updated IconButtonShapes, IconToggleButtonShapes, TextButtonShapes and TextToggleButtonShapes to improve consistency across Material3 libraries. This change also introduces shape caching to reduce the number of allocations. (I049fc)
  • We have removed the pressedShapeCornerSizeFraction parameter from the variantAnimatedShape method in IconToggleButton and TextToggleButton (I58a65)
  • We are introducing improvements to curved text rendering (including TimeText) that are incompatible with non-round screens. Non-round screen support is also no longer part of the Wear OS requirements, see the Getting Started guide for more information. (I1cc1c)
  • We have updated ButtonGroup’s ButtonGroupScope, replacing the DSL-based ButtonGroupItem with Modifier.weight, Modifier.minWidth and Modifier.enlargeOnPress. (I16c3c)
  • In the ButtonGroup API, we have updated the new modifier-based ButtonGroupScope: enlargeOnPress is now called animateWidth, and it takes an InteractionSource, rather than MutableInteractionSource because it is not necessary to mutate it. We have also added public constant ButtonGroupDefaults.DefaultMinWidth, the default minimum width of buttons in a ButtonGroup. (Ie27ec)
  • We have updated ListHeaderDefaults.contentColor to start with a lowercase letter as it is a composable property (I125a5)
  • We have added a content description parameter to SliderDefaults.DecreaseIcon and SliderDefaults.IncreaseIcon, with suitable default values (I2e1a7)
  • We have renamed the spacing parameter in Picker and PickerGroup to verticalSpacing (Ib75cc)
  • We have removed ConfirmationDialogDefaults.successText and failureText because it is expected that callers of ConfirmationDialog will provide strings with more context. Also renamed confirmationCurvedText to confirmationDialogCurvedText. Finally, renamed the Dialog show parameter to visible for consistency with other recent updates to dialogs. (I10074)
  • IconButton renamed disabledImageOpacity to DisabledImageOpacity. (I5f94a)

Bug Fixes

  • We have fixed a bug in EdgeButton animation so that the correct size is used in each frame (Id3b58)
  • Fixed an issue with animateContentSize not working with Button. (Ib18a0)
  • We have changed the Title Large type scale to have font size 18dp (Ic9d52)
  • We have updated AlertDialog spacing and icon size (Iac28c)
  • We have fixed inconsistencies in large screen breakpoints (screens at and above 225dp are large screen) (I36474)
  • Fixed a minor bug in button positioning (I952c2)

Version 1.0.0-alpha31

January 15, 2025

androidx.wear.compose:compose-material3:1.0.0-alpha31 is released. Version 1.0.0-alpha31 contains these commits.

API Changes

  • We have updated all Wear Compose libraries to ‘explicit API’ mode. (Iebf9f)
  • We have updated the ScreenScaffold and EdgeButton APIs, so that it is easier to specify content paddings on screens that include an EdgeButton. In the new API the EdgeButton's size is only passed to the EdgeButton, and the ScreenScaffold takes an edgeButtonSpacing parameter for the spacing between EdgeButton and list content. (I424fd)
  • In DatePicker, we have renamed parameters minDate to maxDate, and minValidDate to maxValidDate. In DatePickerColors, we have renamed parameter selectedPickerContentColor to activePickerContentColor, and unselectedPickerContentColor to inactivePickerContentColor (Iba17b)
  • We have updated the ArcProgressIndicator defaults to strokeWidth=6dp and recommended diameter = 81.24% of screen height (I6f248)
  • We have updated the Confirmation API to reflect its usage as a dialog. The composable is now called ConfirmationDialog, with associated updates to the naming of colors and defaults classes. We have also renamed the show parameter to visible for compatibility with other Compose animation APIs. In addition, we have made ConfirmationDialogContent, SuccessConfirmationDialogContent, FailureConfirmationDialogContent available for situations where developers need to customize the intro/outro dialog animations. (Iaeb33)
  • We have updated CircularProgressIndicatorContent to CircularProgressIndicatorStatic (the non-animated variation of CircularProgressIndicator) so that it can now be used to build CircularProgressIndicator with custom animations. (I1346f)
  • We have fixed the parameter ordering on the ArcProgressIndicator, putting the modifier parameter first (I4656a)
  • Improved the SwipeToReveal API to receive a text slot parameter for the labels of the actions (except secondary action) and to remove label parameters from undo action (I5b3db)

Bug Fixes

  • We have fixed a bug where LongPress haptics were triggered more than once in Button, Card, IconButton, TextButton (Ia8b0f)
  • Changes to the UX of AlertDialog - on large screens the confirm and dismiss buttons are now smaller. There is also increased spacing below the confirm and dismiss buttons. (I4f066)
  • We have changed the animation specs of the action button label of the SwipeToReveal component. (Ib87fb)
  • Changed SwipeToReveal to expand the container at the same time that the text is displayed. (I44cf8)
  • Improved SwipeToReveal to perform haptic feedback when the swipe passes the threshold where the primary action is committed. (I23efe)
  • We have updated SwipeToReveal to display ellipsis on text overflow by default, for primary and undo actions. (I71f5a)
  • We have fixed an issue causing jitter on ButtonGroup animations. (I63f8f)
  • We have added text semantics to AnimatedText (I6063c)
  • Dialog now resets background scaling when the dialog is removed from the composition (without this fix, the launching screen may have been left in a scaled down state) (Id24ac)
  • We have added a shape morph animation to the buttons in the Stepper component (Id6ed3)

Version 1.0.0-alpha30

December 11, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha30 is released. Version 1.0.0-alpha30 contains these commits.

API Changes

  • The scrollTransform modifier for TransformingLazyColumn was refactored which triggered an API change. (I0c6dc)
  • We have updated IconToggleButtonShapes and TextToggleButtonShapes to have two different shape parameters uncheckedPressed and checkedPressed (I85dbd)
  • Invalid month/day options are now visible in the DatePicker, with a new invalidPickerContentColor, when using minDate or maxDate. (If4541)
  • We have updated the Stepper API to provide increaseIcon and decreaseIcon slots - the content for these can be built as usual from the Icon composable. (Id35da)
  • We have updated dynamicColorScheme by removing the optional defaultColorScheme parameter and now returning nullable ColorScheme. This means that the caller must explicitly handle the fallback case when a dynamic color scheme is not provided. (I6d62e)
  • We have updated the icon sizes in ButtonDefaults for use with CompactButton. A CompactButton containing only an icon should use ButtonDefaults.SmallIconSize = 24.dp, whereas a CompactButton containing both icon and text should use ButtonDefaults.ExtraSmallIconSize = 20.dp. It is recommended that CompactButton wrap its content (rather than filling the max width) and samples have been updated to show that. (I0582c)
  • We have added EdgeButtonDefaults with recommended icon sizes for the 4 different EdgeButtonSizes. Also, updated the EdgeButton layout so that it has slightly larger bottom padding than top padding, which improves appearance for both Icon and Text content. (Id772a)
  • We have added motion to LinearProgressIndicator and exposed LinearProgressIndicatorContent which provides the visual content without animations. (Idee99)
  • We have added a new CircularProgressIndicatorContent composable to display the visual content of CircularProgressIndicator without animations. (Ie33d4)
  • TransformingLazyColumn newly provides the composition local LocalTransformingLazyColumnItemScope which Cards, Buttons and ListHeaders now use to automatically morph when placed inside a TransformingLazyColumn. Callers can disable automatic morphing using the new TransformExclusion wrapper. (I1652f)
  • We have updated the type of ButtonDefaults.shape to RoundedCornerShape (Iccdf2)

Bug Fixes

  • We have fixed a bug to respect existing alpha on background for TimeText (I1eb60)
  • We have set TextMotion to Animated by default in our typography, to avoid text jitter due to snapping letter glyphs to pixel boundaries during scaling operations. (I626fa)
  • We have updated the appearance of the ScrollIndicator by increasing width and gap size, to improve visibility. (Ied7cb)
  • We have fixed a bug on Modifier.scrollTransform when adding/removing/moving items. (I6830f)
  • We have fixed a round button animation issue for short taps (previously, the minimum animation duration was not always observed). (I757a7)
  • We have updated the sweep angle for LevelIndicator to 20% (i.e. 72 degrees). (Idde5c)
  • We have fixed ScrollIndicator positioning when ScalingLazyColumn was used with AutoCenteringParams. (I387dd)
  • We have updated the colors and typography for ListHeader and ListSubHeader. Also the colors for the toggle controls on CheckboxButton and SwitchButton. (I39817)
  • We have fixed ScrollIndicator positioning in LazyColumn and ScalingLazyColumn with ContentPadding. (I2bc51)
  • We have fixed a bug seen in OpenOnPhoneDialog progress animation by using the new CircularProgressIndicatorContent. (I3e443)
  • We have updated the HorizontalPagerScaffold and VerticalPagerScaffold to disable animations when reduce motion is enabled (Iaaf68)
  • We have implemented a separate animation for circular progress indicators when progress reaches over 100%. (I47135)
  • We have fixed a bug where EdgeButton could be drawn with an incorrect shape in Pager components (I91db9)

Version 1.0.0-alpha29

November 13, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha29 is released. Version 1.0.0-alpha29 contains these commits.

API Changes

  • We have updated TimeText to provide default content that shows the time. (Id23b3)
  • We have simplified the ScrollInfoProvider for PagerState by removing the orientation parameter, which is no longer needed. The new behavior is for TimeText to remain in place for both horizontal and vertical paging. (I71767)
  • LocalHapticFeedback now provides a default HapticFeedback implementation when the Vibrator API indicates that haptics are supported. The following have been added to the HapticFeedbackType - Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. Wear Compose long-clickable components such as Button, IconButton, TextButton, and Card now perform the LONG_PRESS haptic when a long-click handler has been supplied. (I5083d)

Bug Fixes

  • We have updated the motion for Confirmations. (I04bff)
  • We have updated the minimum API dependency to 1.7.4 for Compose libraries. (I88b46)
  • New motion was added for the OpenOnPhone dialog. (I1e10a)
  • We have fixed a bug in the LevelIndicator so that it is now correctly displayed with the level is zero. (Ie95a4)
  • We have updated the HorizontalPageIndicator and VerticalPageIndicator animations. (I5c8f3)
  • We have added a shrink-to-dot animation to the indeterminate ArcProgressIndicator. (I9fd51)

Version 1.0.0-alpha28

October 30, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha28 is released. Version 1.0.0-alpha28 contains these commits.

API Changes

  • We have added an arc variation on the indeterminate circular progress indicator (I2efc1)
  • We have made public the AlertDialogContent and Dialog composables that make up the AlertDialog API, so that it is possible to add customization if necessary (such as customizing AlertDialog animation whilst keeping the recommended content layout). In addition, we have added Modifier and Color parameters to the EdgeButton, ConfirmButton and DismissButton members of AlertDialogDefaults. (I4eb71)
  • We have updated the Placeholder API as follows: renamed PlaceholderState.startPlaceholderAnimation to PlaceholderState.animatePlaceholder, PlaceholderState.isShowContent to PlaceholderState.isHidden, and PlaceholderDefaults.shape to PlaceholderDefaults.Shape; renamed the painter parameter in painterWithPlaceholderOverlayBackgroundBrush to originalPainter; changed visibility of PlaceholderState.placeholderProgression from public to internal and renamed it to placeholderShimmerProgression; added placeholder animation duration constants to PlaceholderDefaults. (Ie5a59)
  • We have updated the EdgeButton API as follows: renamed the parameter on ScreenScaffold from bottomButton to edgeButton; made EdgeButtonSize a value class. (Ieef15)
  • We have changed the visibility of copy() to public in wear material3 Colors classes (I0287f)

Bug Fixes

  • Added minimum animation duration for IconToggleButton and TextToggleButton on click (Ieb333)
  • Added minimum duration on IconButton and TextButton shape animation (Iebcee)
  • Corrected the repeat option state of DatePicker. (I3587c)
  • Added motion for Alert and Confirmation dialogs. (I173b1)

Version 1.0.0-alpha27

October 16, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha27 is released. Version 1.0.0-alpha27 contains these commits.

API Changes

  • We have updated the ScreenScaffold and ScrollIndicator following the renaming of Wear Compose Foundation LazyColumn to TransformingLazyColumn. (I0608b)
  • EdgeButton's preferredHeight parameter has been renamed to buttonSize and its value can only be chosen from 4 constants in the newly introduced EdgeButtonSize value class. (Icdd70)
  • We have changed the naming of ListSubheader to ListSubHeader and added publicly accessible default values for ListHeader and ListSubHeader. (I96730)
  • We have added new HorizontalPagerScaffold and VerticalPagerScaffold components for Wear which provide new animations and coordination between time text and page indicator components. (Iff7d0)
  • We have added rotary support to HorizontalPagerScaffold and VerticalPagerScaffold, enabling users to navigate pagers using rotary input devices. (I9770d)
  • We have made MotionScheme API changes to simplify the usage and improve consistency. Removed inlined remember functions and moved the built-in Motion Schemes to a dedicated MotionScheme companion object. Renamed the standardMotionScheme and the expressiveMotionScheme to standard and expressive. (I5fd45)
  • We have added support for a dynamic color scheme based on system colors. (I073e9)
  • We have updated the Stepper to the latest UX specs. (I622bb)

Bug Fixes

  • We have updated typography and paddings for Card components. (I3ae48)
  • We have changed the padding in AlertDialog between Confirm/Dismiss buttons and the rest of the content from 8dp to 12dp according to UX specs (Ie55f0)
  • We have updated the color opacity for the Slider component. (Idb383)

Version 1.0.0-alpha26

October 2, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha26 is released. Version 1.0.0-alpha26 contains these commits.

API Changes

  • We have updated the API and appearance of HorizontalPageIndicator and added VerticalPageIndicator for use with VerticalPager (Ic9309)
  • AlertDialog now supports the ability to omit the default bottom button from the button stack variation, for custom layouts in which EdgeButton is not required. (I34fa9)
  • We have added a SwipeToReveal component for Wear Material 3 (Ic38b2)
  • We have added support for bi-directional swiping in SwipeToReveal, for rare cases where the current screen does not support swipe to dismiss. The default is still to swipe-to-reveal only on right-to-left swipes and it is strongly advised to respect the default behavior to avoid conflict with swipe to dismiss. (Ifac04)
  • We have renamed EdgeButton's buttonHeight parameter to preferredHeight. (I4fab3)
  • The Kotlin version has been updated to 1.9 (I1a14c)
  • We have renamed OpenOnPhoneDialogDefaults.Icon to OpenOnPhoneDialogDefaults.OpenOnPhoneIcon to avoid clashing with Icon(I0f391)
  • We have added support for ScrollIndicator in LazyColumn. (Ia546a)
  • We have updated default values for TextToggleButton and IconToggleButton. (I7aaa9)
  • We have simplified the Picker and PickerGroup API. (Id0653)
  • We have added CardDefaults.Shape and CardDefaults.Height, which (being tokens) were otherwise private to developers using the library. (I1594a, b/347649765)
  • We have renamed the progress parameter for the binary segmented circular progress indicator to segmentValue. (Ib72d9)
  • We have updated the colors and layout for Slider. (Ic3eec)

Bug Fixes

  • We have updated the openOnPhone icon animation (I66f85)
  • We are now using Google Symbols icons in Slider, TimePicker and DatePicker. (I46c7c)
  • We have updated the paddings in Confirmation and OpenOnPhoneDialog. (Iaa82e)

Version 1.0.0-alpha25

September 18, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha25 is released. Version 1.0.0-alpha25 contains these commits.

API Changes

  • We have added an Indeterminate circular progress indicator. (I427a7)
  • We have added support for progress overflow (>100% progress) for both the CircularProgressIndicator and the SegmentedCircularProgressIndicator. When the progress exceeds 1.0, this will be indicated by the new overflowTrack color. (Iaaa3d)
  • The round IconToggleButton and TextToggleButton now support a new shape animation variation, in which different shapes represent checked, unchecked and pressed states. The earlier animated shape variation for the just pressed state continues to be supported. (I29f03)
  • We have removed support for using EdgeButton with Column, due to the need to specify the EdgeButton height explicitly in ScreenScaffold. (Ie353d)
  • We have added support for the Wear Compose LazyColumn with our ScreenScaffold (and added an implementation of ScrollInfoProvider for LazyColumnState). (Ib8d29)
  • We have combined LocalTextMaxLines, LocalTextAlign, LocalTextOverflow into a single LocalTextConfiguration composition local to provide a more scalable solution going forwards. (I5edbc)
  • We have added arc-large as an additional typescale, reserved for short header text strings at the very top or bottom of the screen, like in Confirmation overlays. (I60e3e)
  • We have added defaults to Button for recommended large and extra large icon sizes and content padding. (I84675)

Bug Fixes

  • We have updated the colors for IconButton and TextButton. (I48324)
  • We have changed the base Button overloads to be vertically center-aligned for consistency with other overloads. To restore the previous behavior, use Modifier.align from the RowScope. (I66e57)

Version 1.0.0-alpha24

September 4, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha24 is released. Version 1.0.0-alpha24 contains these commits.

API Changes

  • We have added a Motion scheme into the Material3 theme. This will be used by components across the library to apply animation specifications such as springs for expressive motion. (I54ff3)
  • We have added AppScaffold and ScreenScaffold components to the Material3 library, which include functionality to coordinate layering and transitions of TimeText and ScrollIndicator. AppScaffold provides a top level of scaffold components that sit on top of all screens. As such, adding TimeText to the AppScaffold allows it to remain in place while swiping between screens. Screens can themselves override or hide the time text. ScreenScaffold provides a slot for the ScrollIndicator and automatically animates the scroll indicator when scrolling, including timeout to hide the scroll indicator after inactivity. (I047d6)
  • We have added ScrollIndicator featuring the new Material3 design. It has a fixed thumb size based on initial list contents, in order to avoid size variations when lazy content is loaded into the list. (Ic228d)
  • We have changed the ScrollAway API such that ScreenStage is a value class instead of an enum class, to allow for additional stages to be added as needed going forwards. (I48c93)
  • We have added EdgeButton, a distinctive Wear-specific button with a shape that follows the curvature of the bottom of the screen (I16369)
  • We have added a new slot to the ScreenScaffold for a bottom button (such as EdgeButton), that will be shown and resized depending on the scrolling content (I032eb)
  • We have added Modifier.scrollTransform and Modifier.targetMorphingHeight to add Material3 motion effects to items in LazyColumn. (Ie229a)
  • We have added SegmentedCircularProgressIndicator as a variation on CircularProgressIndicator. The segmented variation either shows a single progress value across all segments or shows each segment as being on/off. (I6e059)
  • We have added LinearProgressIndicator as an alternative to the existing CircularProgressIndicator. (I89182)
  • We have added AlertDialog, providing layouts for presenting important prompts to the user. Variations are included for either a pair of confirm/dismiss buttons or a single bottom button (typically an EdgeButton) below a stack of options. Both variations have slots for icon, title and additional text to provide further details. (Ieb873)
  • We have added OpenOnPhoneDialog, which should be used to indicate an action that will continue on the user's phone. OpenOnPhoneDialog is dismissed after a specified timeout. (I978fd)
  • We have added Confirmation, a dialog component that has slots for an icon and either curved or linear text. Specific variations are provided for success/failure messages. Confirmations are automatically dismissed after a timeout. (Ib43e8)
  • We have added a background to TimeText to mitigate issues where the underlying content and the TimeText overlapped, and obscured the time. (Ia11fd)
  • We have added LevelIndicator, which shows the value of a setting such as volume, and can be used with the existing Stepper component to construct a volume screen. LevelIndicator is similar to ScrollIndicator, but is displayed on the opposite side of the screen and has a wider stroke width and different indicator color by default. (I8a4ac)
  • We have added TimePicker, with layouts for 24 hour time (with or without seconds), or 12 hour time with am/pm selection. (Ia5124)
  • We have added DatePicker, with configuration for column ordering (i.e. day-month-year, month-day-year or year-month-day) and optional min/max dates. (Ibf13b)
  • We have added a weight parameter to the TimeText's text function. In cases where TimeText is made up of more than one text element, this allows control over how the space is distributed. (I36700)
  • We have added RadioButton and SplitRadioButton - these components simplify the previous API by combining both the (Split)SelectableButton and the child radio control (If7ae8)
  • We have added CheckboxButton and SplitCheckboxButton - these components simplify the previous API by combining both the (Split)ToggleButton and the child Checkbox control (Ia8f70)
  • We have added SwitchButton and SplitSwitchButton - these components simplify the previous API by combining both the (Split)ToggleButton and the child Switch control (I0d349)
  • We have updated AnimatedText documentation to explain overshooting behavior. (Iff30a)
  • We have added ButtonGroupto combine 2 or 3 buttons such that button presses produce a coordinated animation. (Ie27db)
  • We have added optional shape animation for IconButton and TextButton when pressed. (Iffca5)
  • We have added an additional color variation, FilledVariant, to Button, IconButton, TextButton, CompactButton and EdgeButton (I65fc3)
  • We have added the forcedSize parameter to ImageWithScrimPainter, such that Button image backgrounds now maintain their component size by default. Setting the forcedSize = null adopts the Painter.instrinsicSize instead. (Ic57af)
  • We have added long-click to Buttons (Ib613d)
  • Long click support has also been added to IconButton and TextButton. (I38891)
  • Long click support has been added to Cards. (I305d5)
  • We have added LocalTextMaxLines, LocalTextAlign, LocalTextOverflow as CompositionLocals and used them as parameter defaults on Text. The composition locals can now be used by components such as CheckboxButton, SwitchButton, RadioButton to implement UX guidance, but the parameters can be overridden by developers if necessary. (Iab841)
  • We have added Placeholder to help in masking the content of components like buttons & cards until the data is loaded. (I1a532)
  • We have added IconToggleButtonColors and TextToggleButtonColors to replace the now removed ToggleButtonColors. (Ie0bf1)

Bug Fixes

  • We have updated Button, FilledTonalButton, OutlinedButton, ChildButton, CompactButton to use the new CompositionLocals LocalTextMaxLines, LocalTextAlign, LocalTextOverflow to implement UX guidance - these parameters can be overridden by developers on Text directly if necessary (Ie51f7)
  • We have changed the default stroke width of the LevelIndicator to 6dp to differentiate it from the ScrollIndicator which has a stroke width of 4dp. (If6f63)
  • We have fixed an issue in TimeText so that larger sweep angles are supported. (Ie489f)
  • Fixed an issue during EdgeButton recomposition. (I4cdca)
  • Corrected layouts of split toggle buttons when customized content padding is provided. (Ia33d3)
  • Rounded up small progress values to at least the line width of the progress indicator. (I3bd84)

Version 1.0.0-alpha23

May 14, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha23 is released. Version 1.0.0-alpha23 contains these commits.

API Changes

  • We have updated ToggleButton and RadioButton APIs such that disabled colors can be configured. (If13a7)
  • We have added a new CircularProgressIndicator for Material3. (Ib3bd7)

Bug Fixes

  • We have fixed a bug where selectable buttons announced double tap to toggle when already selected. (I7ed88)

Version 1.0.0-alpha22

May 1, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha22 is released. Version 1.0.0-alpha22 contains these commits.

API Changes

  • We have updated the Material3 ColorScheme. (I7b2b8)
  • We have updated the Material3 Switch - as well as some color changes, the tick now matches that used for the Checkbox. (Icac7b)

Bug Fixes

  • Update all integration demos to use new rotaryScrollable modifier. (I25090)

Version 1.0.0-alpha21

April 17, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha21 is released. Version 1.0.0-alpha21 contains these commits.

  • This release was triggered due to a technical issue in the previous release that resulted in missing source jars. There are no new commits in this release.

Version 1.0.0-alpha20

April 3, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha20 is released. Version 1.0.0-alpha20 contains these commits.

Bug Fixes

  • We have adjusted the Ripple pressed and focused state alphas for contrast. (I59f0a)
  • We have added spacing between primary and secondary labels in Button, ToggleButton and RadioButton, following the latest changes to typography styles and line heights. (I2c0ba)

Version 1.0.0-alpha19

March 6, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha19 is released. Version 1.0.0-alpha19 contains these commits.

API Changes

  • We have added TimeText to the Wear Compose Material3 library. This component shows the current time (and additional status) at the top of the screen. The new, concise Material3 API avoids duplication between linear and curved content. (I4d7c3)
  • We have updated parameter names from onSelected to onSelect for RadioButton. (I1a971)
  • Tokenize RadioButton and SplitRadioButton and also refactor the existing methods to reduce the amount of CompositionLocal lookup by adding cached instances of colors, and making methods of RadioButtonColors and SplitRadioButtonColors internal. (I02b33)

Version 1.0.0-alpha18

February 21, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha18 is released. Version 1.0.0-alpha18 contains these commits.

API Changes

  • We have refactored the defaults pattern for CardColors, ToggleButtonColors and SplitToggleButtonColors by creating cached instances internally and reducing the usage of CompositionLocal. (If3fec)

Version 1.0.0-alpha17

February 7, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha17 is released. Version 1.0.0-alpha17 contains these commits.

API Changes

  • We have updated the Button API to use buttonColors by default and removed the duplicate filledButtonColors. (I4fe3b)
  • We have refactored default patterns for ButtonColors, IconButtonColors and TextButtonColors by creating a cached instance internally and reducing the usage of CompositionLocal. (I5f51c)
  • We have removed the overhead of rememberUpdatedState in Component specific color classes and marked accessor methods inside color classes as internal. (If6571)

Bug Fixes

  • We have updated Modifier.minimumInteractiveComponentSize to use Modifier.node. (Iba6b7)

Version 1.0.0-alpha16

January 24, 2024

androidx.wear.compose:compose-material3:1.0.0-alpha16 is released. Version 1.0.0-alpha16 contains these commits.

New Features

  • We have added CompactButton, which can use the same filled, filled tonal and outlined colors as Button.(I05df0)

API Changes

  • We have added RadioButton/SplitRadioButton as containers for selection controls, such as the Radio control. This differs from the existing ToggleButton in that RadioButton is selectable (and operates within a selection group) whereas ToggleButton is toggleable (and is independent). (I61275)
  • We are removing LocalContentAlpha from the Wear Compose Material3 library for consistency with the Compose Material3 library. (I49a0a)
  • Wear material and wear material3 components exposing a MutableInteractionSource in their API have been updated to now expose a nullable MutableInteractionSource that defaults to null. There are no semantic changes here: passing null means that you do not wish to hoist the MutableInteractionSource, and it will be created inside the component if needed. Changing to null allows for some components to never allocate a MutableInteractionSource, and allows for other components to only lazily create an instance when they need to, which improves performance across these components. If you are not using the MutableInteractionSource you pass to these components, it is recommended that you pass null instead. It is also recommended that you make similar changes in your own components. (Ib90fc, b/298048146)
  • Adds new ripple API in wear:compose-material and wear:compose-material3 libraries which replaces the deprecated rememberRipple. Also adds a temporary CompositionLocal, LocalUseFallbackRippleImplementation, to revert Material components to using the deprecated rememberRipple/RippleTheme APIs. This will be removed in the next stable release, and is only intended to be a temporary migration aid for cases where you are providing a custom RippleTheme. See developer.android.com for migration information and more background information behind this change. (af92b21)
  • We have made minor improvements to the HorizontalPageIndicator api and its documentation. (I60efc)
  • We have updated ColorScheme to be immutable, making individual color updates less efficient, but making more common usage of colors more efficient. The reasoning behind this change is that the majority of apps wouldn't have updating individual colors as a main use case. This is still possible but it will recompose more than before, in turn we significantly decrease the amount of state subscriptions through all of material code and will impact initialization and runtime cost of more standard use cases. (Ibc2d6)
  • Updated ToggleButton and SplitToggleButton APIs to allow disabled colors to be customized. In addition, Material Design tokens are now used for color and typography values. (If087c)
  • Updated Button image background colors to use Material Design tokens. (Iba215)
  • We have changed the Checkbox, Switch and RadioButton components to be display-only, by removing the click handling. These components are expected to be used in (Split)ToggleButton which handles the click, so the components are now more clearly indicated as display-only (and are not intended for standalone use on Wear). (I2322e)

Bug Fixes

  • We have added tokens for motion values of durations and easings in Wear Compose Material 3. (I437cd)
  • We have fixed a bug in the ToggleButton, SplitToggleButton, Checkbox, Switch and RadioButton so that accessibility announcements are not repeated (previously, semantic roles were duplicated). (Ica281)
  • We have removed the materialcore layer for CompactButton to improve performance. (7902858)

Version 1.0.0-alpha15

November 15, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.

API Changes

  • We have renamed the Foundation level SwipeToDismissBox to BasicSwipeToDismissBox. This makes the distinction clearer between the Foundation level component and the Material3 level SwipeToDismissBox. The latter pulls colors from the MaterialTheme to be used in scrims and delegates the remaining implementation to the BasicSwipeToDismissBox. (Ibecfc)

Bug Fixes

  • We have removed the material-core layer for Material3 Button to improve performance. (I55555)

Version 1.0.0-alpha14

October 18, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha14 is released. Version 1.0.0-alpha14 contains these commits.

API Changes

  • We have removed the indicatorStyle parameter from the Material3 HorizontalPageIndicator - instead, it will follow the device screen shape (linear or round). (I83728)
  • We have separated the colors for SplitToggleButton from those for ToggleButton, by adding a new SplitToggleButtonColors class. (I78bee)

Version 1.0.0-alpha13

October 4, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha13 is released. Version 1.0.0-alpha13 contains these commits.

API Changes

  • We have added an optional Subtitle field to TitleCard. (Ifc45a)
  • We have added Material Design color tokens for TextButton. (I769dc)

Version 1.0.0-alpha12

September 20, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha12 is released. Version 1.0.0-alpha12 contains these commits.

API Changes

  • We have updated IconButton to use Material Design tokens. (I3f137)
  • We have updated IconToggleButton to use Material Design tokens. (I7d263)
  • We have made public the constructors of CheckboxColors, RadioButtonColors, SwitchColors. (I82b73)

Version 1.0.0-alpha11

September 6, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha11 is released. Version 1.0.0-alpha11 contains these commits.

Bug Fixes

  • We update updated the typography for Material3 Cards to TitleMedium. (I597bd)
  • We have updated the typography and alignment for our Material3 ListHeader and ListSubheader. (Ib5ceb)

Version 1.0.0-alpha10

August 23, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.

New Features

  • Add HorizontalPageIndicator in Wear Material3 library. (Ifee99)

API Changes

  • Update Buttons code to use Material3 design tokens. (I92fe4)
  • Declaring Wear Material 3 Stepper and Slider APIs as experimental as the details of the user interface are still being finalized. (I84d54)
  • We have removed the ExtraSmall sizes from the round TextButton and TextToggleButton as that size only applies to the IconButton. (Ibc7d5)

Bug Fixes

  • We have updated the guidance on typography for TextToggleButton to use LabelLarge for LargeButtonSize (Ib10fa)
  • We have updated the guidance on typography for TextButton to use LabelLarge for LargeButtonSize (I8f3a7)
  • We have set the Card's minimum touch target to be 48dp for accessibility. (Ieb9b1)
  • Add AppCard with image demo, removing AppCard with Background demo (Id735f)
  • Fix a bug in round buttons where modifiers were not chained correctly. (I5e162)

Version 1.0.0-alpha09

August 9, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.

New Features

  • We have added ToggleButton for material3 (I6bed6)

API Changes

  • We have turned on the FloatRange annotation as API constraints , which were previously stated in comments. (Icb401)
  • We have updated the typography for Wear Material3 to adhere to the latest Material3 guidelines. (I1bad6)

Bug Fixes

  • We have updated the colors for Button, IconButton and TextButton in line with Material3 design. (Ib2495)
  • We have fixed checkbox tick visibility in disabled states. (Ib25bf)

Version 1.0.0-alpha08

July 26, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.

New Features

  • We have added the following selection controls for Material3 - Switch, Checkbox, RadioButton. (Ib918c)
  • We have added IconToggleButton and TextToggleButton to Material3, a circular toggle button with a single slot for icon and text respectively. For different sizes of ToggleButton, we recommend using Modifier.touchTargetAwareSize with the sizes provided in respective toggle buttons. (I9f015)
  • We have added ListHeader and ListSubheader to our Material3 components. (Ibaefe)
  • We have added Material3 SwipeToDismissBox, which calls the new Foundation SwipeToDismissBox and supplies default color values from its theme. (I275fb)
  • We have added the Material3 InlineSlider to Wear Compose. It allows users to make a selection from a range of values. The range of selections is shown as a bar between the minimum and maximum values of the range, from which users may select a single value. InlineSlider is ideal for adjusting settings such as volume or brightness. (I7085f)

API Changes

  • We have updated the Shapes in Wear Material 3 theme to use RoundedCornerShape based instead of Shape. (Idb133)
  • We have made the height constants for Button public (Idbfde)
  • Updated API files to annotate compatibility suppression (I8e87a, b/287516207)
  • We have updated InlineSliderColors in Wear Compose Material 3 to have public constructor and public properties. (I6b632)
  • We have updated all color classes in Wear Compose Material 3 to have public constructors and public properties. (I17702)
  • We have made Button horizontal and vertical padding constants public. (Ieeaf7)

Bug Fixes

  • Button will now adjust its height to accommodate content that has grown due to large fonts for accessibility, when required (Iaf302)
  • We have updated a number of Button demos to address accessibility issues. (I61ce9)
  • Stepper and InlineSlider now support repeated clicks on long press so that you can quickly increase/decrease value of Stepper and InlineSlider by holding the + or - buttons (I27359)

Version 1.0.0-alpha07

June 21, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.

New Features

  • We have added the Stepper component to our Compose for Wear OS Material 3 library. This is similar to the previous Material version, but omits range semantics by default, following developer feedback. We provide Modifier.rangeSemantics the cases where range semantics are required. (Ic39fd)
  • We have added curvedText to our Compose for Wear OS Material 3 library. (Ia8ae3)

Bug Fixes

  • We have update wear.compose.foundation to be an API dependency of wear.compose.material3 (I72004, b/285404743)

Version 1.0.0-alpha06

June 7, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.

Bug Fixes

  • We have updated TextButton to use the toDisabledColor extension function for correct disabled alpha values. (I814c8)

Version 1.0.0-alpha05

May 24, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.

New Features

  • We have added TextButton to Material3, a circular button with a single slot for text. For different sizes of TextButton, we recommend using Modifier.touchTargetAwareSize and ExtraSmallButtonSize, SmallButtonSize, DefaultButtonSize and LargeButtonSizeIcon provided in TextButtonDefaults. The default TextButton has no border and a transparent background for low emphasis actions. For actions that require high emphasis, use filledTextButtonColors; for a medium-emphasis, outlined TextButton, set the border to ButtonDefaults.outlinedButtonBorder; for a middle ground between outlined and filled, use filledTonalTextButtonColors. (I667e4)
  • We have added Card, OutlinedCard, AppCard and TitleCard into the Wear Compose Material3 library. AppCard and TitleCard can also be given the outlined appearance using CardDefaults.outlinedCardColors and CardDefaults.outlinedCardBorder(I80e72)

API Changes

  • We have moved the Button label parameter to the end to support trailing lambda syntax and removed the role parameter (as this can be overridden using Modifier.semantics). ButtonColors constructors are now public. (Ie1b6d)

Version 1.0.0-alpha04

May 10, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.

New Features

  • We have added IconButton to Material3, a circular button with a single slot for icon/image. There are four variations: IconButton, FilledIconButton, FilledTonalIconButton and OutlinedIconButton. For different sizes of IconButton, we recommend using Modifier.touchTargetAwareSize and ExtraSmallButtonSize, SmallButtonSize, DefaultButtonSize and LargeButtonSizeIcon provided in IconButtonDefaults. We also provide IconButtonDefaults.iconSizeFor to determine the recommended icon size for a given button size. (I721d4)

Version 1.0.0-alpha03

April 19, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.

API Changes

  • We have added the Material 3 Button component - this is our stadium-shaped button and was formerly named Chip in the Wear Compose Material library (it has been renamed to Button for consistency with the Compose Material 3 library). The default Button has a filled background and there are button variations for FilledTonal (muted background), Outlined (transparent with a thin border) and Child (transparent background and no border, used for supplementary actions with the lowest amount of prominence). Round buttons for simple icon and text content will follow in a future release.(Ia6942)

Version 1.0.0-alpha02

April 5, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.

Bug Fixes

  • We have added a DefaultTextStyle to Wear Compose Material 3 which defaults the PlatformTextStyle.includeFontPadding to true (the current setting). This will allow us to synchronize turning off font padding by default with the Compose libraries in the future (see Fix font padding in Compose for background). (I7e461)

Version 1.0.0-alpha01

March 22, 2023

androidx.wear.compose:compose-material3:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.

New Features

  • Material 3 is the next evolution of Material Design and includes updated theming and redesigned components. Material 3 on Wear Compose is designed to be cohesive with the Material 3 Compose library on Android. This first alpha release contains early, functional implementations of the following:

    • Material theme - configures the color scheme, typography and shapes consistently across components in the library. The Material3 theme has revised colors which support accessible contrast. (I84005)
    • Text/Icon - building blocks for Wear Compose apps (I8e06a)
  • We will continue to develop Wear Material (androidx.wear.compose:compose-material) and Wear Material 3 (androidx.wear.compose:compose-material3) in parallel. Future material3 releases will extend the widget set to include other familiar components from Compose for Wear OS, such as buttons, pickers, and sliders.

  • The Wear Material and Wear Material 3 libraries are mutually exclusive and should not be mixed in the same app, primarily because they reference different themes which would lead to unexpected inconsistencies.