Compose Material 3

Build Jetpack Compose UIs with Material Design 3 Components, the next evolution of Material Design. Material 3 includes updated theming and components and Material You personalization features like dynamic color, and is designed to be cohesive with the new Android 12 visual style and system UI.
Latest Update Stable Release Release Candidate Beta Release Alpha Release
December 12, 2024 1.3.1 - - 1.4.0-alpha05

Structure

Compose is combination of seven Maven Group IDs within androidx. Each Group contains a targeted subset of functionality, each with its own set of release notes.

This table explains the groups and links to each set of release notes.

GroupDescription
compose.animationBuild animations in their Jetpack Compose applications to enrich the user experience.
compose.compilerTransform @Composable functions and enable optimizations with a Kotlin compiler plugin.
compose.foundationWrite Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces.
compose.materialBuild Jetpack Compose UIs with ready to use Material Design Components. This is the higher level entry point of Compose, designed to provide components that match those described at www.material.io.
compose.material3Build Jetpack Compose UIs with Material Design 3 Components, the next evolution of Material Design. Material 3 includes updated theming and components and Material You personalization features like dynamic color, and is designed to be cohesive with the new Android 12 visual style and system UI.
compose.runtimeFundamental building blocks of Compose's programming model and state management, and core runtime for the Compose Compiler Plugin to target.
compose.uiFundamental components of compose UI needed to interact with the device, including layout, drawing, and input.

Declaring dependencies

To add a dependency on Compose, 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.compose.material3:material3:1.3.1"
    implementation "androidx.compose.material3:material3-window-size-class:1.3.1"
    implementation "androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0-alpha05"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material3:material3:1.3.1")
    implementation("androidx.compose.material3:material3-window-size-class:1.3.1")
    implementation("androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0-alpha05")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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.

Compose Material3 Common Version 1.0

Version 1.0.0-alpha01

April 17, 2024

androidx.compose.material3:material3-common:1.0.0-alpha01, androidx.compose.material3:material3-common-android:1.0.0-alpha01, and androidx.compose.material3:material3-common-desktop:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.

New Features

Themeless components that can be used to build Material Design components:

Compose Material3 Adaptive Navigation Suite Version 1.0

Version 1.0.0-alpha07

May 1, 2024

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha07, androidx.compose.material3:material3-adaptive-navigation-suite-android:1.0.0-alpha07, and androidx.compose.material3:material3-adaptive-navigation-suite-desktop:1.0.0-alpha07 are released. Version 1.0.0-alpha07 contains these commits.

API Changes

  • Make navigation suite APIs non-experimental (If62af)

Bug Fixes

  • Consume insets for content by default (50266df)

Version 1.0.0-alpha06

April 17, 2024

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha06, androidx.compose.material3:material3-adaptive-navigation-suite-android:1.0.0-alpha06, and androidx.compose.material3:material3-adaptive-navigation-suite-desktop:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits.

API Changes

  • Add containerColor and contentColor to NavigationSuiteScaffoldDefaults. (I64e3a, b/331993720)
  • Adding itemColors function to NavigationSuiteDefaults. (Idf719, b/328480012)
  • Make NavigationSuiteScope sealed. (Iefa57)

Version 1.0.0-alpha05

March 6, 2024

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha05, androidx.compose.material3:material3-adaptive-navigation-suite-android:1.0.0-alpha05, and androidx.compose.material3:material3-adaptive-navigation-suite-desktop:1.0.0-alpha05 are released. Version 1.0.0-alpha05 contains these commits.

API Changes

Version 1.0.0-alpha04

February 21, 2024

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha04, androidx.compose.material3:material3-adaptive-navigation-suite-android:1.0.0-alpha04, and androidx.compose.material3:material3-adaptive-navigation-suite-desktop:1.0.0-alpha04 are released. Version 1.0.0-alpha04 contains these commits.

Dependency Updates

  • Update Material3 adaptive dependencies to the new module paths. (Ibc421)
  • Migrate to use Window Manager version of window size classes. (I3794d)

Version 1.0.0-alpha03

February 7, 2024

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha03, androidx.compose.material3:material3-adaptive-navigation-suite-android:1.0.0-alpha03, and androidx.compose.material3:material3-adaptive-navigation-suite-desktop:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits.

API Changes

  • Update package name to navigationsuite from navigation-suite (I7eff7)
  • 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. (I41abb, b/298048146)

Version 1.0.0-alpha02

December 13, 2023

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha02, androidx.compose.material3:material3-adaptive-navigation-suite-android:1.0.0-alpha02, and androidx.compose.material3:material3-adaptive-navigation-suite-desktop:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.

New Features

Bug Fixes

  • Fix navigation component filling entire screen when root surface has modifier.fillMaxSize. (c9cf250, b/312664933)

Version 1.0.0-alpha01

November 15, 2023

androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.

New Features

Compose Material3 Adaptive Version 1.0

Version 1.0.0-alpha06

February 7, 2024

androidx.compose.material3:material3-adaptive:1.0.0-alpha06, androidx.compose.material3:material3-adaptive-android:1.0.0-alpha06, and androidx.compose.material3:material3-adaptive-desktop:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits.

New Features

  • Added additional behavior options for ThreePaneScaffoldNavigator back navigation. (I858aa)
  • Added optional destination content to navigation history. (Ibd7e6)

Version 1.0.0-alpha05

January 24, 2024

androidx.compose.material3:material3-adaptive:1.0.0-alpha05, androidx.compose.material3:material3-adaptive-android:1.0.0-alpha05, and androidx.compose.material3:material3-adaptive-desktop:1.0.0-alpha05 are released. Version 1.0.0-alpha05 contains these commits.

New Features

  • Support history-awareness in scaffold navigation and value calc (I71d46)

Version 1.0.0-alpha04

January 10, 2024

androidx.compose.material3:material3-adaptive:1.0.0-alpha04, androidx.compose.material3:material3-adaptive-android:1.0.0-alpha04, and androidx.compose.material3:material3-adaptive-desktop:1.0.0-alpha04 are released. Version 1.0.0-alpha04 contains these commits.

New Features

  • Added edge-to-edge support in pane scaffolds (I1b462)

API Changes

  • Moved hinge bounds properties in Posture to a list of hinge info (I24f90)

Bug Fixes

  • Fix AnimatedPane is not recomposed (c3f573d)

Version 1.0.0-alpha03

December 13, 2023

androidx.compose.material3:material3-adaptive:1.0.0-alpha03, androidx.compose.material3:material3-adaptive-android:1.0.0-alpha03, and androidx.compose.material3:material3-adaptive-desktop:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits.

API Changes

  • Change scaffold roles to aliases of ThreePaneScaffoldRole. (I65bd1)
  • Create a base class for scaffold roles (I4784d)
  • Remove unnecessary parameter from AnimatedPane's content (Ibc73b)
  • Renames collectWindowSizeAsState and returns raw values instead (I480f4)

Version 1.0.0-alpha02

November 29, 2023

androidx.compose.material3:material3-adaptive:1.0.0-alpha02, androidx.compose.material3:material3-adaptive-android:1.0.0-alpha02, and androidx.compose.material3:material3-adaptive-desktop:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.

API Changes

  • Split navigation APIs from adaptive scaffold APIs. (Ic4045)
  • Remove GutterSize class. (I785b3)

Bug Fixes

  • Fix panes are not switched when AnimatedPane is not used (d88f181)

Version 1.0.0-alpha01

November 15, 2023

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

New Features

Material3 adaptive condition APIs:

Material3 adaptive pane scaffold directive APIs:

Material3 adaptive pane scaffold APIs:

Compose Material3 Version 1.4

Version 1.4.0-alpha05

December 12, 2024

androidx.compose.material3:material3-*:1.4.0-alpha05 is released. Version 1.4.0-alpha05 contains these commits.

API Changes

  • Replace type in WideNavigationRailState.current/target value for an enum for better readability (I2d6ab)
  • SplitButton change Shape api from data class to class for binary compatibility. (I53812)
  • Added a tooltip API that has a onDismissRequest parameter so makers can decide what happens when a user clicks outside of the tooltip. Deprecated the old API that doesn't contain this new parameter. (I99aef)
  • Change naming of opticalCentering to horizontalCenterOptically. Making the modifier internal. Replace padding parameter with max start and end offset. (I0b904)
  • Change WideNavigationRailState to have current/target value, remove enums in favor of boolean. (Idfa29, b/356039090)
  • Add NavigationBarItemComponentOverride. (I3a06a)

Bug Fixes

  • Fix the top and bottom app-bar behaviors to reliably change color when content is scrolled all the way. (Idc4e8, b/293665988)
  • Scroll behavior functions for top and bottom app bars now return a remembered behavior to perform better across recompositions. (I0fdbe, b/207957336)
  • Modifier pararemeter is now applied after internal modifiers such as dragging behavior and semantics, instead of before. This affects the ordering in which modifiers are applied. (I8d83f)
  • Expanded bottom sheet remains expanded on size change. (I2870b, b/324934884)
  • Correctly route status and navigation bar flags for windows properties. (Ie674d, b/362539765)
  • Move modifier parameter to the scaffolds root, as documented. This aligns implementation with M2. (I0235e, b/372311595)

External Contribution

  • Commonized DatePickerDialog function. (I7dced)

Version 1.4.0-alpha04

November 13, 2024

androidx.compose.material3:material3-*:1.4.0-alpha04 is released. Version 1.4.0-alpha04 contains these commits.

Behavior Changes

  • Revert color changes introduced in aosp/3212478 to iconButtonColors, iconToggleButtonColors, outlinedIconButtonColors, outlinedIconToggleButtonColors and outlinedIconToggleButtonBorder. Moved the now-reverted behavior into a new set of functions called iconButtonVibrantColors and so forth to emphasize the high contrast colors being returned. (Iffd8d)

New Features

  • Introduce VerticalDragHandle component (I6c770)

API Changes

  • Rename DismissibleModalWideNavigationRailDefaults to ModalWideNavigationRailDefaults. (I8e877)
  • Add NavigationBarComponentOverrides. (I8a3f3)
  • Add NavigationRailComponentOverride. (I83e13)
  • Introduce WideNavigationRailState to handle collapsing/expanding of the rail, allow ModalWideNavigationRail to be dismissible and delete DismissibleModalWideNavigationRail. (I88568)
  • Add xSmall, medium, large, and xLarge size defaults into toggle button defaults. (Ie95d1)
  • Add xSmall, medium, large, and xLarge size defaults into button defaults. (If8b6d)

Bug Fixes

  • Filter chip trailing icon color has been updated from Primary to OnSurfaceContainer, per spec. All chip outline colors have been updated from Outline to Outline Variant, per spec. (I68bd4)

Version 1.4.0-alpha03

October 30, 2024

androidx.compose.material3:material3-*:1.4.0-alpha03 is released. Version 1.4.0-alpha03 contains these commits.

API Changes

  • SheetState constructor with density has been deprecated in favor of positional and velocity thresholds. (Ifd16e)
  • Added rememberTooltipPositionProvider that contains an updated positioning logic. Deprecated rememberPlainTooltipPositionProvider and rememberRichTooltipPositionProvider. (Ie66e2)
  • Additional ModalBottomSheetProperties allow for customization of status and navigation bar colors. By default, these update based on content color instead of system dark theme status. (Ib874e, b/362539765)
  • Improved the input experience for date pickers: when in input mode, the date text field will be focused for immediate text entry. The change adds a requestFocus parameter to the DatePicker and the DateRangePicker. You may prevent a focus by passing false. (I12d09, b/286399710, b/340102743)
  • Caching the shape defaults into the Shape object. Making the shape defaults @Composable for toggle button. Collapsing the shapes into one shape default since the variants point to the same token file. (Iaa014)

Bug Fixes

  • Optimize Scaffold contentPadding behavior to avoid always recomposing the body content when the contentPadding changes. (I8c8e2, b/373904168)
  • TextFieldLabelScope progress renamed to labelMinimizedProgress
  • TextFieldLabelPosition Default renamed to Attached. Interface members have been removed. (If75c6)
  • Fixed an issue with the DatePicker in input mode where validation errors could cause the component's height to change. (I2e229, b/280462363)
  • Make the material Slider change its value when control keys are pressed. (I1c442)

Version 1.4.0-alpha02

October 16, 2024

androidx.compose.material3:material3-*:1.4.0-alpha02 is released. Version 1.4.0-alpha02 contains these commits.

API Changes

  • Updates to the date pickers to ensure consistent Locale usage throughout the DatePicker and DateRangePicker when setting a Locale directly through a DatePickerState or a DateRangePickerState. Note that when setting Locales directly to the state, it's up to you to ensure that the title and headline texts are localized accordingly, as their default text will still be applied according to the default platform Locale. (I37073, b/326490763, b/321657276)
  • SheetState.isAnimationRunning is now exposed. (I9a3d7)
  • DatePickerColors now correctly take precedence over any conflicting colors defined at the theme's Typography text styles. Also note that this update adjusts the color parameter's position in the date picker functions and introduces a contentColor parameter for customizing the header and title text colors. (I30d03, b/347031394)
  • Rename SplitButton to SplitButtonLayout and remove SplitButton color variants APIs, variants will be achieve by re-using button variants provided by SplitButtonDefaults. (I44c36)
  • ModalBottomSheet now has sheetGestureEnabled parameter (I856cb, b/288211587)
  • Renamed the standardMotionScheme and the expressiveMotionScheme to standard and expressive. Both functions are now accessible through the MotionScheme companion object by calling MotionScheme.standard() and MotionScheme.expressive(). (Iceccf)
  • Adding maxWidth parameter to plain and rich tooltips. It defaults to the design spec of 200 dp for plain tooltips and 320 dp for rich tooltips. (I30ce9)

Bug Fixes

  • The DatePicker and DateRangePicker now correctly update the displayed month when set via their state's displayedMonthMillis. (If9e47, b/333414302)
  • ModalBottomSheet content now moves content away from status bar. (I5114c, b/321877275, b/336962418, b/342093067)
  • [Bottom Sheet] Change back callback priority to PRIORITY_DEFAULT to allow IME keyboard to dismiss first. (I447fb)
  • Fix crashes in the DatePicker and DateRangePicker when the minimum selectable year is set to a future year. (I78656, b/319395747)
  • Fix a date-picker issue to update the UI when an updated SelectableDates instance is applied. (Iad59a, b/290135807, b/339898760)

Version 1.4.0-alpha01

October 2, 2024

androidx.compose.material3:material3-*:1.4.0-alpha01 is released. Version 1.4.0-alpha01 contains these commits.

Behavior Changes

  • Library no longer adds a dependency to material-icons-core so if your project relied on that, you will have to explicitly add that dependency in your build.gradle[.kts] files. (I735ff, b/349894318)
  • NavigationBarItem and NavigationRailItem’s active label color change from onSurface to secondary in order to improve usability, color contrast and improve coherence within the system (Ibc297), to revert to the previous behavior, copy the default colors and change the selectedTextColor to MaterialTheme.colorScheme.onSurface.
  • Material 3 components are now using the new MotionScheme to define their motion. (Ie0f93)
  • Indeterminate circular Progress Indicator motion changes (I3c07e)
  • Update OutlinedIconButtonColors and OutlinedIconToggleButtonColors for better color contrast. (I2743d)
  • Updated container and content color for FilledIconToggleButtonColors and FilledTonalIconToggleButtonColors. (Ic5d0f)
  • Updated OutlinedButton border color from outline to outlineVariant. (057f00)

API Changes

  • Added an optional reverseLayout parameter to the TopAppBar's enterAlwaysScrollBehavior function to better support content that was set with a reverseLayout. (I4e0e5)
  • SegmentedButton now supports contentPadding argument. (I5ad91, b/358414376)
  • PullToRefreshState does no longer have default implementation for isAnimating (I6a593)
  • Added new overloads of Material TextField and OutlinedTextField that use TextFieldState. Added decoration box APIs that are compatible with TextFieldDecorator. (If13a1)
  • Added parameter to control text field's labelPosition. Using alwaysMinimize allows the UI pattern of displaying a label and placeholder in a text field at the same time even when the field is unfocused. (I1ef2c)
  • Added Material SecureTextField and OutlinedSecureTextField for password entry fields. (I7e22d)
  • Added a scope to text field labels to query animation progress. (If5ec8)
  • Adds support for MotionEvent.CLASSIFICATION_DEEP_PRESS to tooltips. (I62e6a)
  • TimePickerState’s isAfternoon is now an extension val instead of a var in the interface, renamed to isPm (I89a97)
  • Updating typography class to support emphasized type scales. (Ifa13c)
  • Added ModalWideNavigationRail API and renamed ModalExpandedNavigationRail APIs to DismissibleModalWideNavigationRail. (Ic9118)
  • Updated FloatingAppBarScrollBehavior to auto-calculate the screenOffset and not require a @Composable. (Idf349)
  • Updates to the LoadingIndicator API to fix the naming at its defaults object. Added a LoadingIndicatorElevation constant at the PullToRefresh. (I1d72b)
  • Updates to the LoadingIndicator API to fix the naming at its defaults object. Added a LoadingIndicatorElevation constant at the PullToRefresh. (I1d72b)
  • Added an amplitude and a waveSpeed parameters to the indeterminate variations of the LinearWavyProgressIndicator and the CircularWavyProgressIndicator. (I2a0c5)
  • Support changing an icon toggle button's shape based on its pressed or checked state. (Ibc781)
  • Updating typography class to support emphasized type scales. (Ifa13c)
  • SplitButton shape morphs based on default / pressed state. Removed AnimatedTrailingButton api because TrailingButton api can offer the same customizations (I95066)
  • Add modifier to animate showing and hiding of FAB, e.g. when content scrolls. (I8338d)
  • Adding connected button group shapes and spacing to ButtonGroupDefaults to be used in a sample. (I68e30)
  • Split button add horizontal padding for trailing button and enable optical centering calculated from start and end corner differences (I122e2)
  • Introducing a new Material MotionScheme to allow setting a scheme for the component's motion. The scheme is set through the MaterialTheme. (Id50c2)

Bug Fixes

  • Apply the correct focus traversal index to Scaffold child Composables. The order is topBar, bottomBar, fab, content, snackbar. (I5936b)
  • Fixed an issue at the DatePicker and DateRangePicker where in certain locales and format-skeletons some of the date elements (e.g. month names) did not start with a capital letter. (I1430f)
  • Integrate FAB and FAB Menu component tokens (minor visual updates to paddings and text) (Ib57f3)
  • ModalBottomSheet is now first in semantic traversal order, followed by the scrim. (I436f9, b/358594665)
  • Fix bottom app bar not disappearing entirely when scrolling under the navigation pill in edge to edge mode (I3ee21)

Compose Material3 Version 1.3

Version 1.3.1

October 30, 2024

androidx.compose.material3:material3-*:1.3.1 is released. Version 1.3.1 contains these commits.

Bug Fixes

  • The DatePicker and DateRangePicker now correctly update the displayed month when set via their state's displayedMonthMillis. (If9e47, b/333414302)
  • Fix crashes in the DatePicker and DateRangePicker when the minimum selectable year is set to a future year. (I78656, b/319395747)
  • Fix a date-picker issue to update the UI when an updated SelectableDates instance is applied. (Iad59a, b/290135807, b/339898760)
  • Change back callback priority used by bottom sheets to PRIORITY_DEFAULT to allow IME keyboard to dismiss first. (I447fb)

Version 1.3.0

September 4, 2024

androidx.compose.material3:material3-*:1.3.0 is released. Version 1.3.0 contains these commits.

Important changes since 1.2.0

Major features of 1.3.0

New Material Design 3 components

  • Carousel
  • [ModalBottomSheet] now supports Predictive Back on U+ (Iccf32, b/281967264, b/304850357)
  • [SearchBar] now supports Predictive Back on U+ (I657f8)
  • Nav Drawer (ModalDrawerSheet and DismissibleDrawerSheet) now supports Predictive Back on U+ as opt-in (Ie5b0b)
  • DropdownMenu now supports custom color, shape, elevation, and border. (I8e981,b/289554448, b/301887035, b/283654243)
  • Updated Slider to improve accessibility by adding a gap and stop indicator. (I3058e)
  • Updated ProgressIndicator to improve accessibility by adding a gap and stop indicator. (I21451)
  • Added a default caret for rich tooltip, support custom caret to be drawn given anchor LayoutCoordinates. (Ifd42c) Breaking Changes
  • New pull-to-refresh APIs:
    • Simplified PullToRefreshState to use fractional values instead of Dp units.
    • isRefreshing state is controlled by the user instead of PullToRefreshState.
    • Separated out the nested scroll connection from PullToRefreshState. It is handled by the new PullToRefreshBox or Modifier.pullToRefresh.
    • This update is a breaking change to previous experimental APIs. (I0adeb, b/314496282, b/317177684, b/323787138, b/324573502, b/317177683) Visual Breaking Changes
  • Update focus state overlay to be 0.1f to ensure sufficient color contrast. (I7ea77)
  • Small adjustments to surface and background color defaults in lightColorScheme and darkColorScheme. (I9db52)
  • Updated Slider and ProgressIndicator colors to follow the new Non-Text Contrast specs. (I26807)
  • SurfaceContainer variants are now used by components. Components which formally calculated color with Surface and TonalElevation now use SurfaceContainer roles by default, which are not affected by tonal elevation. (b/304584161)
  • Surface and Surface container baseline roles have been slightly adjusted, providing more tint in light and dark themes. (I677a5)
  • Promoted experimental APIs to stable!
  • Performance improvements

Version 1.3.0-rc01

August 21, 2024

androidx.compose.material3:material3-*:1.3.0-rc01 is released. Version 1.3.0-rc01 contains these commits.

Bug Fixes

  • ModalBottomSheet is now first in semantic traversal order, followed by the scrim. (I436f9, b/358594665)

Version 1.3.0-beta05

July 24, 2024

androidx.compose.material3:material3-*:1.3.0-beta05 is released. Version 1.3.0-beta05 contains these commits.

  • Fixed issue where BottomSheet content is missing or cut off on Android N and O (a10a2d)
  • Increased slider’s semantics bounds in order for TalkBack to properly show the focus indicators around the thumbs. (0b5a1d)

Version 1.3.0-beta04

June 26, 2024

androidx.compose.material3:material3-*:1.3.0-beta04 is released. Version 1.3.0-beta04 contains these commits.

Version 1.3.0-beta03

June 12, 2024

androidx.compose.material3:material3-*:1.3.0-beta03 is released. Version 1.3.0-beta03 contains these commits.

External Contribution

  • Make androidx.compose.material3.DropdownMenu available from common source set. (If62c0)

Version 1.3.0-beta02

May 29, 2024

androidx.compose.material3:material3-*:1.3.0-beta02 is released. Version 1.3.0-beta02 contains these commits.

API Changes

  • Modifier.pullToRefreshIndicator supports elevation, update Pull To Refresh APIs to have enabled be a boolean, instead of a lambda. Support content alignment in PullToRefreshBox (I75679)
  • Making TooltipScope a sealed interface and creating an internal implementation to use in TooltipBox and Label. (I3833e)
  • Added two new modifiers to CarouselItemScope - maskClip and maskBorder - to easily add a shape and border to any carousel item (Id67a1)
  • TimePickerState is now an interface and allows for setting the time (I88546)
  • Updated API for styling the links: moved the TextLinkStyles to the TextStyle and removed the TextDefaults from material. (I5477b)

Bug Fixes

  • ModalBottomSheet status and nav bar icons now respond to dark theme status. (Ie1fe7, b/338342149)
  • Added close sheet semantics to ModalBottomSheet scrim. (0e61cb,b/328801864)

External Contribution

  • Make androidx.compose.material3.AlertDialog available from common source set (Ia33f5)
  • Make ModalBottomSheet available from common source set (Id7cc7)

Version 1.3.0-beta01

May 14, 2024

androidx.compose.material3:material3-*:1.3.0-beta01 is released. Version 1.3.0-beta01 contains these commits.

API Changes

  • Using DpSize instead of CaretProperties. Removing CaretProperties. Rename CaretScope to TooltipScope. (Id9a76)
  • Updated the API for getting Material themed links in text. Specifically, removed the methods from the TextDefaults for constructing themed LinkAnnotations and parse HTML with themed links. Instead, added a TextLinkStyles class that allows to style the links as a parameter to the Text composable. (I31b93)

Version 1.3.0-alpha06

May 1, 2024

androidx.compose.material3:material3-*:1.3.0-alpha06 is released. Version 1.3.0-alpha06 contains these commits.

Breaking Changes

  • New pull-to-refresh APIs:

    • Simplified PullToRefreshState to use fractional values instead of Dp units.
    • isRefreshing state is controlled by the user instead of PullToRefreshState.
    • Separated out the nested scroll connection from PullToRefreshState. It is handled by the new PullToRefreshBox or Modifier.pullToRefresh.
    • This update is a breaking change to previous experimental APIs. (I0adeb, b/314496282, b/317177684, b/323787138, b/324573502, b/317177683)

API Changes

  • RippleConfiguration#isEnabled has been removed, and LocalRippleConfiguration has been made nullable. To disable a ripple, instead of providing a RippleConfiguration with isEnabled = false, provide null to LocalRippleConfiguration. (I22725)
  • ModalBottomSheet more accurately draws scrim over status bar when edge to edge is enabled. Modal bottom sheet content can now consume window insets, allowing for visible content above the navigation bar. ModalBottomSheet parameter windowInsets renamed to contentWindowInsets to specify where the insets will be applied, these are no longer tied to window logic. contentWindowInsets type has been changed to a function which returns WindowInsets, to allow it to be resolved within its new window. (I39630, b/274872542, b/300280229, b/290893168)
  • PrimaryScrollableTabRow and SecondaryScrollableTabRow now use custom layout instead of subcomposition, which should improve performance. (I991e0)
  • Text links got pressed state styling option in addition to normal styling, hovered and focused. TextDefaults methods each got a pressedStyle argument to support that. (Ic473f, b/139312671)

Bug Fixes

  • Navigation drawer drag anchors now match the drawerContent's width. (Ibc72f, b/245355396)
  • OutlinedTextField top padding for label now accounts for system font size. (Idc781)
  • Fixed package location of CalendarLocale. (Ifa235)
  • [Predictive Back] Update predictive back animations to use interpolation curve of (0.1, 0.1, 0, 1) (I2591a)

Version 1.3.0-alpha05

April 17, 2024

androidx.compose.material3:material3-*:1.3.0-alpha05 is released. Version 1.3.0-alpha05 contains these commits.

New Features

  • SearchBar and DockedSearchBar have new overloads that take a text field parameter. This allows styling the text field separately from the rest of the search bar as well as passing in custom text fields. The text field of the current implementation has been made available as SearchBarDefaults.InputField. (I50c73, b/275074248, b/278773336, b/326627700)
  • the lambda drawTick has been added to the public API in order to customize the ticks if needed (I0c048)

API Changes

  • Text links got pressed state styling option in addition to normal styling, hovered and focused (I5f864, b/139312671)
  • Updated CarouselItemInfo to expose a mask Rect that the item is being clipped by (I785d8)
  • Removed BasicTooltipState from the Material 3 public API. Its functionality is combined with TooltipState until Foundation's BasicTooltip is stabilized. (Icda29)
  • Added a TextDefaults object that contains methods to construct a LinkAnnotation and parse HTML-tagged string which apply MaterialTheme to the links (I98532, b/139312671)
  • ExposedDropdownMenuBoxScope no longer permits subclasses. Exposed dropdown menus now have a MenuAnchorType which should be passed to menuAnchor to support better a11y. This should be used instead of passing focusable to ExposedDropdownMenu, which is now deprecated. menuAnchor has a new parameter to control enabled state. (I55ee6, b/257209915, b/308840226)
  • Fixed the border color of OutlinedButton when disabled. Added ButtonDefaults.outlinedButtonBorder("enabled") overload that takes the enabled state. (Ie650b, b/318461363)
  • Added a new CarouselItemInfo class to help clients get information about the item sizes. (I9070c)
  • ColorScheme constructor without surface containers is now deprecated. Please migrate to the constructor that includes surface containers. (I35c11)
  • [Outlined]TextFieldDefaults ContainerBox renamed to Container. (Ie8d3b)

Bug Fixes

  • BottomSheetScaffold will no longer scroll from nested scroll if sheetSwipeEnabled is false. (I5e1c1, b/306464779)
  • Removed some ExperimentalMaterial3Api OptIn annotation in IconButtonSamples.kt. (I111d1)

Version 1.3.0-alpha04

April 3, 2024

androidx.compose.material3:material3-*:1.3.0-alpha04 is released. Version 1.3.0-alpha04 contains these commits.

New Features

  • Added two experimental versions of the Material3 Carousel - HorizontalMultiBrowseCarousel and HorizontalUncontainedCarousel (I88d64)
  • Updated Compose M3 Nav Drawer (ModalDrawerSheet and DismissibleDrawerSheet) to support Predictive Back on U+ as opt-in (Ie5b0b)
  • Added a new API in Icon to allow passing color tint as lambda to avoid recomposing. (I5b5a2)
  • Top app bar APIs now support custom heights for both fixed and collapsible sections. (Ib8b0c, b/323403446)

API Changes

  • Top app bar APIs now support custom heights for both fixed and collapsible sections. Fixed an issue that caused single-line top app bars to recompose too many times when scrolling content. Resolved an issue where MediumTopAppBar truncated titles on devices with large font/display settings. (Ib8b0c, b/323403446, b/300953236, b/286296147, b/330410290, b/308540676)
  • SegmentedButton and associated APIs are now stable (I8a158)
  • SwipeToDismissBox, SwipeToDismissBoxDefaults, SwipeToDismissBoxState and SwipeToDismissBoxValue are now marked stable. (I5f000)
  • Removed deprecated DismissDirection and DismissValue enums and APIs. (I89ccd)
  • Added an experimental tag to Carousel's CarouselState companion object. (I94154)
  • Deprecate LocalMinimumInteractiveComponentEnforcement and introduced LocalMinimumInteractiveComponentSize to replace it. (I7a7ac)
  • SearchBarColors constructor is now public. (I769ca)
  • Added a gesturesEnabled parameter to SwipeToDismissBox. (Idc59f, b/324170119)
  • Removed text field APIs that were marked as deprecated and experimental. (I1305f)

Version 1.3.0-alpha03

March 20, 2024

androidx.compose.material3:material3-*:1.3.0-alpha03 is released. Version 1.3.0-alpha03 contains these commits.

Visual Breaking Changes

  • Update focus state overlay to be 0.1f to ensure sufficient color contrast. (I7ea77)
  • Small adjustments to surface and background color defaults in lightColorScheme and darkColorScheme. (I9db52)

New Features

  • Added parameters to customize ExposedDropdownMenu. In particular, menus now have a focusable parameter (default true) that should be set to false when working with editable text fields. (I4184c, b/323694447, b/278609042)

API Changes

  • The ScaffoldSubcomposeInMeasureFix flag has been removed. (Ie2a4b)
  • NavigationRailItemColors is now marked as @Immutable. (If6112, b/327660613)
  • NavigationBarItemColors is now marked as @Immutable. (I42a30, b/298064514)
  • Reorder params in Slider Track composable. (I9f315)
  • ExposedDropdownMenu is now implemented using Popup. The behavior should be the same except focusable menus with editable text fields may be dismissed when typing on the keyboard.

Bug Fixes

  • Surface and Surface container baseline roles have been slightly adjusted, providing more tint in light and dark themes. (I677a5)
  • Updated Slider and ProgressIndicator colors to follow the new Non-Text Contrast specs. (I26807)
  • Update focus state overlay to be 0.1f to ensure sufficient color contrast. (I7ea77)
  • Small adjustments to surface and background color defaults in lightColorScheme and darkColorScheme. (I9db52)

Version 1.3.0-alpha02

March 6, 2024

androidx.compose.material3:material3-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits.

API Changes

  • Making the slider states stable again. Making State.onValueChangeFinished a val again. Wrapping onValueChangeFinished in a rememberUpdatedState. (I82ab2, b/322269951)
  • The Navigation components now use the new SurfaceContainer roles. DrawerDefaults now provides distinct standardContainerColor and modalContainerColor attributes. DrawerDefaults.ModalDrawerElevation is now 0.dp. (I7fbac)
  • Removing @Stable from the states of Slider since we're changing state.onValueChangeFinished to a var. (Ied34a, b/322269951)
  • ModalBottomSheet and StandardBottomSheet animation spec is now a TweenSpec, updated from a spring animation. This resolves an issue with a visible overshoot. Deprecated SheetState constructors without density have now been removed. (I7babc, b/285847707)

Bug Fixes

  • SurfaceContainer variants are now used by components. Components which formally calculated color with Surface and TonalElevation now use SurfaceContainer roles by default, which are not affected by tonal elevation. (b/304584161)
  • Fixed bug that caused ElevatedFilterChip's unselected, disabled container color to be black. (I400e6, b/322407043)
  • Fix indeterminate progress indicator when the progress is 0 (Id6582)
  • Fixed an issue with Slider and RangeSlider on RTL layout (Iab0e1)
  • Adding SliderRangeTolerance for the slider range calculation since Float rounding can be inaccurate. (Ic918a, b/324934900)
  • Ensure that the DatePickerDialog displays its buttons when nesting a DateRangePicker or when displaying any type of date picker on small screens with larger fonts. (Ie4758, b/325107799, b/277768544)
  • Menu now leverages the SurfaceContainer role for container color. MenuDefaults.TonalElevation is now 0.dp. (I135b7)
  • TextField now leverages the SurfaceContainerHighest role for container color. (I4dced)
  • Elevated chips now leverage the SurfaceContainerLow role (I7cd2f)
  • DatePicker container color is now SurfaceContainerHigh. DatePickerDefaults.TonalElevation is now 0.dp. (Ida753)
  • Updates Bottom Sheets container color and drag handle color. (I72a0a)
  • RichTooltip container color is now SurfaceContainer. (Ia8b45)
  • SearchBar container color is now SurfaceContainerHighest. SearchBarDefaults.TonalElevation is now 0.dp. (I88604)
  • Updates switch disabled and unselected tracks/icons to leverage the SurfaceContainerHighest color role. (I7687a)
  • AlertDialog container color is now SurfaceContainerHigh. (Ie0433)
  • BottomAppBar container color is now SurfaceContainer. TopAppBar onScroll color is now SurfaceContainer. (I41630)
  • ElevatedCard container color is now SurfaceContainerLow. FilledCard’s container color of SurfaceContainerHighest. (I35141)
  • ElevatedButton container color is now SurfaceContainerLow. FilledIconButton’s when unselected now have a container color of SurfaceContainerHighest. (I792c9)
  • Updates TimePicker container color and clock dial color role to SurfaceContainerHighest. (I43b93)

Version 1.3.0-alpha01

February 21, 2024

androidx.compose.material3:material3-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.

New Features

  • Update Compose M3 ModalBottomSheet to support Predictive Back on U+ (Iccf32, b/281967264, b/304850357)
  • Updated Compose M3 SearchBar to support Predictive Back on U+ (I657f8)
  • Updated Slider to improve accessibility by adding a gap and stop indicator. (I3058e)
  • Updated ProgressIndicator to improve accessibility by adding a gap and stop indicator. (I21451)
  • Adding a default caret for rich tooltip, new rich tooltip API now allows for custom caret to be drawn given anchor LayoutCoordinates. (Ifd42c)

Behavior Changes

  • Material components have been migrated to use the new ripple APIs, and no longer query RippleTheme.

API Changes

  • The fun drawStopIndicator is now public. (I3f59f)
  • Mark the DatePicker's formatWithSkeleton function as internal (Ic65dc)
  • DropdownMenu now supports custom color, shape, elevation, and border. (I8e981, b/289554448, b/301887035, b/283654243)
  • 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. (I41abb, b/298048146)
  • Adds RippleConfiguration and LocalRippleConfiguration to allow for per-component / sub-tree customization of ripples using fixed values. For example, to change the color of a component you don't control, or to disable a ripple for a component. In most cases the default values should be used: these APIs are an escape hatch for customization of individual components / limited sub-trees. For wider changes and custom design systems, you should instead build your own ripple using createRippleModifierNode. (I7b5d6, b/298048146)
  • Adds new ripple API in material3 which replaces the deprecated rememberRipple. Also adds a temporary CompositionLocal, LocalUseFallbackRippleImplementation, to revert material3 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. (I34cbc, b/298048146)

Bug Fixes

  • Removed subcomposition inside ModalBottomSheet to improve performance. Fixed an issue where ModalBottomSheet could crash in specific scenarios in combination with LookaheadScope. (I2a198)
  • Removed subcomposition inside BottomSheetScaffold to improve performance. Fixed an issue where BottomSheetScaffold would crash in specific scenarios in combination with LookaheadScope. (Ie6401)
  • The badge alignment is adjusted to be closer to the center of the anchor content in respect to the top-right corner. (I18a28)
  • Fix an a11y issue with the DateRangePicker where the Month-Year text title was conveyed as actionable to the screen reader, Switch access, and Voice access users. (I2ac55)
  • Fixed mediumTopAppBarColors param order bug. (Ibe64a)

Version 1.2

Version 1.2.1

March 6, 2024

androidx.compose.material3:material3-*:1.2.1 is released. Version 1.2.1 contains these commits.

Bug Fixes

  • Make the Slider states stable again. Making State.onValueChangeFinished a val again. Wrapping onValueChangeFinished in a rememberUpdatedState. (Ie8fd0, b/322269951)
  • Removing @Stable from the states of Slider since we're changing state.onValueChangeFinished to a var. (I82ba1, b/322269951)
  • Fix NavigationBar custom colors to copy from defaults. (80a779, b/326894020)
  • Fix regression in ExposedDropdownMenu to make it focusable again (3fcec1, b/323694447)
  • Fix button color caching issue (3e5bbcb/327371655)

Version 1.2.0

February 7, 2024

androidx.compose.material3:material3-*:1.2.0 is released. Version 1.2.0 contains these commits.

Known Issue

  • A View-Compose interop rendering bug was introduced in PrimaryTabRow as part of a performance improvement change. The workaround is to use TabRow with TabRowDefaults.PrimaryIndicator

Important changes since 1.1.0

New Material Design 3 Components

Enhancements to existing Material Design 3 components.

Promoted experimental APIs to stable!

Performance improvements

Version 1.2.0-rc01

January 24, 2024

androidx.compose.material3:material3-*:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.

Bug Fixes

  • Fixed mediumTopAppBarColors param order bug. (Ibe64a)
  • Fixed a bug introduced in 1.2.0-beta02 in CardDefaults.cardColors that did not update contentColor based on the containerColor param value. (Iee041, b/319671246)
  • Fixed a bug in disabledContentColor introduced in 1.2.0-beta02 and added small optimization. (I6dda1, b/318428829)

Version 1.2.0-beta02

January 10, 2024

androidx.compose.material3:material3-*:1.2.0-beta02 is released. Version 1.2.0-beta02 contains these commits.

Known Bug

  • A bug in IconButtonColors will by default assign disabledContentColor to an alpha (0.38f) of LocalContentColor instead of the user specified contentColor. The workaround is to explicitly set the disabledContentColor. This will be fixed in the next release.

API Changes

  • Adding the capability to enable tooltip carets for Plain Tooltip APIs. (Ibf767)
  • SwipeToDismissState, rememberSwipeToDismiss and SwipeToDismissValue are all renamed to have _SwipeToDismissBox_. (I68d6d)

Bug Fixes

  • Fixed ListItem end padding value to align with spec. (Ibd68b, b/305342674)
  • Outline color for outlined card is now correctly mapped to OutlineVariant. (I75480, b/310979715)
  • Dynamic color now pulls from system defined color roles. This improves contrast for accessible content, and more closely aligns dynamic color to the Material spec. (I1de96)
  • Fixed ModalBottomSheet back handling on Android T/13+ when android:enableOnBackInvokedCallback="true". (I728dc, b/306196110)

Version 1.2.0-beta01

December 13, 2023

androidx.compose.material3:material3-*:1.2.0-beta01 is released. Version 1.2.0-beta01 contains these commits.

API Changes

  • Mark TabIndicatorScope as experimental. (I45c88)
  • Removing deprecated experimental APIs for tooltip. (I438cb)
  • Change new TabRow overloads to not use subcompositions. This results in a different way to build the TabRow indicators with custom modifiers provided. (Ife741)
  • Deprecate DismissDirection and DismissValue API's. These have been merged to SwipeToDismissValue, whose values indicate both position and direction of SwipeToDismissBox. DismissState.progress is now marked as a FloatRange between 0.0 and 1.0. DismissState deprecated Saver and Constructor have now been removed. SwipeToDismiss component, state and defaults object have been remarked as experimental. (Ib54f2)

Bug Fixes

  • The default indicator for PullToRefresh is now an open arrowhead instead of a solid triangle. (I67be3)

Version 1.2.0-alpha12

November 29, 2023

androidx.compose.material3:material3-*:1.2.0-alpha12 is released. Version 1.2.0-alpha12 contains these commits.

API Changes

  • RangeSlider now takes a Kotlin range (e.g., 0f..1f) instead of a custom FloatRange value class. SnapFlingBehavior.kt now also uses a Kotlin range. (I025cb)
  • Mark Modifier factory functions as @Stable. (Ib109f)

Version 1.2.0-alpha11

November 15, 2023

androidx.compose.material3:material3-*:1.2.0-alpha11 is released. Version 1.2.0-alpha11 contains these commits.

New Features

  • Implements PullToRefreshContainer and PullToRefreshState, which together provide a pull to refresh implementation in Material3. (I16456, b/261760718)

API Changes

  • Mark the SwipeToDismissBox DismissDirection and DismissValue as experimental. (I517b0)
  • Rename SwipeToDismiss to SwipeToDismissBox. Rename background to backgroundContent and dismissContent to trailing content lambda. (I7f4d3)
  • Make the constructor for ChipElevation and SelectableChipElevation public. (Ie0c48, b/308432421)
  • Adding ModalBottomSheetProperties. Moving securePolicy into ModalBottomSheetProperties. Adding isFocusable and shouldDismissOnBackPress to ModalBottomSheetProperties. These new booleans help determine how modal bottom sheet should handle IME events. (Iea56f, b/278216859)
  • Updated RangeSlider and Slider states to remove initialOnValueChange, the initial prefixes, and appropriate kdocs. (I57d30)
  • Deprecate ChipBorder class and its associated function calls, recommend using BorderStroke directly instead. (I89cc2)
  • Foundation Tooltip APIs are now @ExperimentalFoundationApi. (I30b0b)
  • TabRow and ScrollableTabRow are no longer deprecated. The new Primary and Secondary variants are marked as experimental. (I0def6)
  • Filter and input chips now use BorderStroke directly. (I07a8d)
  • SegmentedButton now uses BorderStroke directly. (I89b9b)
  • Renamed the generic AlertDialog function to BasicAlertDialog, and deprecate the previous function. (Idbe52)
  • Rename SwipeToDismiss APIs to SwipeDismiss, and promote the new SwipeDismiss APIs to stable. (I14cbe)
  • Adding tonalElevation and shadowElevation to tooltip APIs. Additionally, moving TooltipBox, PlainTooltip, and RichTooltip APIs back to experimental since they were accidentally released as stable. (If0f66, b/293939035)
  • Promote experimental chip APIs to stable. (Iea2c3)
  • Removed the @ExperimentalMaterial3Api annotation from the Material3 clickable Cards. (I88dbf)

Bug Fixes

  • Fixed an issue where SwipeToDismiss would crash in certain scenarios with nested Lookahead and Lazy layouts. (Ica8d1, b/297226562)

Version 1.2.0-alpha10

October 18, 2023

androidx.compose.material3:material3-*:1.2.0-alpha10 is released. Version 1.2.0-alpha10 contains these commits.

API Changes

  • Promoting Badge and BadgedBox to stable. (I67f16, b/261565132)
  • Adding securePolicy as a parameter to ModalBottomSheet, so users can define the behavior for WindowManager.LayoutParams.FLAG_SECURE. (Icdac8, b/296250262)
  • Added new overloads of LinearProgressIndicator and CircularProgressIndicator that take progress as a lambda. These should be more performant than the previous versions. (I824e6, b/295616656)
  • Renames StandardSizeClasses to AllSizeClasses. (I8cb07)
  • Combine calculation functions of window size classes. (Iad935)

Bug Fixes

  • Fix a DatePicker crash when quickly clicking the navigation arrow buttons when the displayed month is at the edge of the allowed range of years. (I46f36, b/290954897, b/297002119)
  • [Nav rail/bar] Support transparent color for indicator. (Ie0a9b, b/267289987)

Version 1.2.0-alpha09

October 4, 2023

androidx.compose.material3:material3-*:1.2.0-alpha09 is released. Version 1.2.0-alpha09 contains these commits.

API Changes

  • Migrated ModalNavigationDrawer and DismissibleNavigationDrawer to use new AnchoredDraggable APIs. DrawerState's animateTo has been replaced by the open and close methods, and the offset is now exposed as a float instead of a state object. You can access the offset directly through currentOffset. (I0a72c)
  • Non-Composable functions have been added for creating a DatePickerState and DateRangePickerState directly. These functions can be used as an alternative to the Composable rememberDatePickerState and rememberDateRangePickerState functions when needed. (I70326, b/291524052)
  • Fixed and Scrollable TabRows now have Primary and Secondary variants. These correctly map to the color and indicator behavior as defined in Material3.
  • PrimaryScrollableTabRow and SecondaryScrollableTabRow now expose scroll state. (Iec8f5, b/260572337)
  • Adding a new sheetMaxWidth parameter that developers can set to specify a maximum width that the sheet will span. Dp.Unspecified can be passed in for the parameter if a sheet that spans the entire screen width is desired. (Ifb7c9, b/266697696)
  • Adding back PlainTooltipBox and RichTooltipBox APIs as deprecated methods. (I246fa)

Bug Fixes

  • Fix a crash when theDatePicker is initialized with a DatePickerFormatter that has certain date skeletons that stay the same when converted to date patterns (such as YY). (I01f29)

Version 1.2.0-alpha08

September 20, 2023

androidx.compose.material3:material3-*:1.2.0-alpha08 is released. Version 1.2.0-alpha08 contains these commits.

Behavior Breaking Change

  • ColorScheme is now 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. (Ic447d, b/297212873)
  • Tonal Elevation no longer animates in different interaction states to match spec. (Icdd12)

API Changes

  • Added a new BottomAppBar that takes as parameter a BottomAppBarScrollBehavior in order to auto-hide it when content is scrolled. Also added FabPosition.EndOverlay allowing the FAB to overlay the bottom app bar in the scaffold instead of being anchored above it. (Iecb47)
  • Added a simple Label component that builds on top of BasicTooltipBox that won't dismiss when tapping outside of the bounds of the label. (I821f9)

Bug Fixes

  • Removed the use of rememberSaveable for tooltips. (Icc131, b/299500338)
  • Introduced a temporary flag to control whether Scaffold should measure its children during measurement or during placement. By default, this will measure in measurement. If you are facing issues with the new behavior, please file an issue. (I0b354)
  • Fixed horizontal Edge to Edge in BottomSheet by using the correct measurement for device screen width. (I1df0c, b/299058752)
  • Fixed a bug where ModalBottomSheet was not calling onDismissedRequest when dismissing it by swiping down on the sheet. (Idfdd8)

Version 1.2.0-alpha07

September 6, 2023

androidx.compose.material3:material3-*:1.2.0-alpha07 is released. Version 1.2.0-alpha07 contains these commits.

New Features

  • Auto-mirror icons support has been added in compose material 1.6.0-alpha05, please see the release notes for details on auto-mirror icons.

API Changes

  • SliderState implements DraggableState (I9b116)
  • Change shape to be a required param. Rename position to index in shape helper function. (I34941)
  • Updates the DatePicker formatWithSkeleton to include a map that is used as a cache for performance improvements. (I3195f)
  • Added BasicTooltipBox to compose.foundation and updated PlainTooltipBox and RichTooltipBox to use TooltipBox with new PlainTooltip and RichTooltip composables. (I79e1d)

Bug Fixes

  • dynamicLightColorScheme and dynamicDarkColorScheme now return higher chroma colors for surface and surfaceContainer roles. (I5e901)
  • Fixed an issue where some components using Subcomposition (e.g. BottomSheetScaffold) inside a Scaffold inside a LookaheadScope were attempting to read their size too early. (I297b4, I871f1, b/295536718)

Version 1.2.0-alpha06

August 23, 2023

androidx.compose.material3:material3-*:1.2.0-alpha06 is released. Version 1.2.0-alpha06 contains these commits.

Bug Fixes

  • Fixed DropdownMenu's offset calculation so x offsets depend solely on the local layout direction, and y offsets will no longer be reversed when the menu is near the bottom of the screen. (Iccc74, b/294103942)
  • Fixed DropdownMenu's offset calculation so x offsets depend solely on the local layout direction, and y offsets will no longer be reversed when the menu is near the bottom of the screen. (Ib87a2, b/294103942)

Version 1.2.0-alpha05

August 9, 2023

androidx.compose.material3:material3-*:1.2.0-alpha05 is released. Version 1.2.0-alpha05 contains these commits.

API Changes

  • Updates to the Checkbox and TriStateCheckbox colors. The CheckboxDefaults.colors() disabledUncheckedColor now only affects the border of the checkbox. Special cases that require you to set the internal box color when disabled and unchecked requires a custom constructed instance of a CheckboxColors with the desired color values. (I77d17, b/291943198)

Version 1.2.0-alpha04

July 26, 2023

androidx.compose.material3:material3-*:1.2.0-alpha04 is released. Version 1.2.0-alpha04 contains these commits.

New Features

  • Experimental Segmented Button API (Ifc8fb)
  • Dividers now have a parameter to control orientation to support vertical dividers. (I4c899, b/288438593)

API Changes

  • We are moving the density dependency to the component level. This applies to the following components: SwipeToDismiss and Sheet based components. Please use the new overload provided where density is a parameter. (I1846e)
  • Additional annotations to specify allowed inputs to composables (Ief234)
  • Add an icon parameter to segmented button, split semantics so that segmented buttons can be selectable to implement single-select, and toggleable to implement multi-select, with SelectableSegmentedButtonRow and ToggelableSegmentedButtonRow respectively. (I38740)
  • Divider has been renamed to HorizontalDivider. Added VerticalDivider functionality. (I5975c)
  • Change the use of ClosedFloatingPointRange for the lighter weight FloatRange in experimental Material3 APIs to minimize autoboxing. (I4aab5)
  • Added new Start alignment for FabPosition (Ib7aea, b/170592777)

Bug Fixes

Version 1.2.0-alpha03

June 21, 2023

androidx.compose.material3:material3-*:1.2.0-alpha03 is released. Version 1.2.0-alpha03 contains these commits.

Behavior Changes

  • includeFontPadding is now false by default in Material 3 typography. The default line height style has also been changed to Trim.None and Alignment.Center, and explicit lineHeight (in sp) have been added to the TextStyles of Typography. Consult the API docs if you want to customize these values, and see the blog post for an in-depth explainer of these changes. (I6266f, Icabc3)

New Features

  • Added an overload for RangeSlider that is a stateful version of the component. Created RangeSliderState that holds all of the information for the current active track, the measurements of the components of the RangeSlider, and the drag and gesture logic. (I8c270)
  • Search bar now supports shadows via the newly added shadowElevation parameter. (Ia5369, b/271040353)
  • ColorScheme now supports new SurfaceContainer roles.
  • Surface tonal elevation overlay can now be disabled with the LocalTonalElevationEnabled composition local. (Ic203c, b/277774590)

API Changes

  • Open the component colors constructors. (I8c4a6)
  • Adding focusable parameter to both tooltip APIs, so that developers can have the tooltip consume touch events or not. Be cautious that this might break accessibility focus automatic traversal. (Ie32d8)
  • Optimized accessibility for performance and memory allocations. (Iede48)
  • Expose DefaultSizeClasses and create StandardSizeClasses for WindowSizeClasses (I91838)
  • change WindowWidth/HeightSizeClass to float value classes (Ie686e)

Bug Fixes

  • Scaffold's contentWindowInsets parameter now respects consumed window insets. Note that the behavior of content padding based on topBar and bottomBar remains unchanged when these parameters are provided. (I08b73, b/264601542)
  • Fix the alignment of the center top app bar to ensure that a long title doesn't render over the action icons or the navigation icon. (I4369f, b/236994621)
  • Tab positions now enforce a minimum content width of 24.dp. This provides an accessible touch target for tab indicators. (Id8861)
  • Dynamic color palettes from dynamicLightColorScheme and dynamicDarkColorScheme now support new surface roles. (I1252e)
  • Updating the badge notification alignment to not clip when colliding with great grandparent. (Idf75a)

Version 1.2.0-alpha02

May 24, 2023

androidx.compose.material3:material3-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.

API Changes

  • Add window insets parameter to ModalBottomSheet.
    • Scrim for ModalBottomSheet may now be drawn behind status bar with windowInsets set to zero
    • Updated default ModalBottomSheet functionality to stay outside of system bars including navigation
    • Status bar inset handling is provided by drag handle in edge-to-edge mode.
    • BottomSheetDefaults includes window insets for BottomSheetWindow. (I31200, b/274872542, b/272973615, b/272334475, b/268432129, b/275849044, b/275486106, b/268433162)
  • Deprecate Indicator and add Primary/SecondaryIndicator to match the M3 specs. PrimaryIndicator matches the width of the tab's content whereas SecondaryIndicator spans the full available width. SecondaryIndicator is equivalent to the now deprecated Indicator and can be a direct replacement. (I27604)
  • Added an option to pass in a ScrollState when constructing a DropdownMenu or an ExposedDropdownMenu for controlling the vertical scroll state of the displayed menu items. (Ia0734, b/185304441)
  • Added an overload for Slider that is a stateful version of the component. Created SliderState that holds all of the information for the current active track, the measurements of the components of the Slider, and the drag and gesture logic. (I124a5)
  • Renaming the Semantics property isContainer to isTraversalGroup (I121f6)
  • Added optimized TextStyle.merge(...) with full parameter list. (Iad234, b/246961787)
  • Made TooltipState, RichTooltipState, and PlainTooltipState public interfaces. Added RichTooltipStateImpl and PlainTooltipStateImpl for default states. Added remember*State functions to obtain these implemented states. Removed TooltipSync in favor of an TooltipDefault.GlobalMutatorMutex. (I7813d)
  • Updated the DatePickerColors to include additional customization options for the date picker divider, navigation, and text input fields colors. (I1a685, b/274626815)
  • DatePickerState and the DateRangePickerState are now public interfaces with default implementations that can be retrieved by the rememberDatePickerState and rememberDateRangePickerState. (I71c52)
  • Removed the dateValidator from DatePicker and DateRangePicker and introduced a SelectableDates interface that can be set on the state to control which dates or years are selectable in the UI. (Ic2fc6)
  • TimePicker removed from stable API, further changes are expected in the state API (I3f39a)
  • ModalBottomSheet moved to android only. ModalBottomSheet is not recommended for desktop use, and the functionality is not actively maintained. (Ib3778)

Bug Fixes

  • Fixed the AlertDialog dismiss action to appear below the confirm action when the actions stacked over each other to fit into the dialog's width. This fix aligns the implementation with the Material Design spec. (I029de, b/235454277)
  • Fixed bug in ListItem using incorrect padding for three-line items. (I6e235)
  • ModalBottomSheet now can display IME keyboard (Idc508, b/262140644, b/268380384, b/272483584)

Version 1.2.0-alpha01

May 10, 2023

androidx.compose.material3:material3:1.2.0-alpha01 and androidx.compose.material3:material3-window-size-class:1.2.0-alpha01 are released. Version 1.2.0-alpha01 contains these commits.

Version 1.1

Version 1.1.2

September 20, 2023

androidx.compose.material3:material3:1.1.2 and androidx.compose.material3:material3-window-size-class:1.1.2 are released. Version 1.1.2 contains these commits.

Bug Fixes

  • Fixed modifier incorrectly being passed to two composables. (b/282761472)
  • Fixed TimePickerState returns incorrect hours when initialized with 23 hours. (b/278242122)
  • Fixed initial toggle state for noon and minute validation. (b/269768197, b/282790635)
  • Fixed state.hour returning incorrect value for 11pm. (b/282761472, b/278242122)

Version 1.1.1

June 21, 2023

androidx.compose.material3:material3:1.1.1 and androidx.compose.material3:material3-window-size-class:1.1.1 are released. Version 1.1.1 contains these commits.

Bug Fixes

  • Adds call for ModalBottomSheet without windowInset param for binary compatibility. (Ib7959)
  • Add window insets parameter to ModalBottomSheet.
    • Scrim for ModalBottomSheet may now be drawn behind status bar with windowInsets set to zero
    • Updated default ModalBottomSheet functionality to stay outside of system bars including navigation
    • Status bar inset handling is provided by drag handle in edge-to-edge mode.
    • BottomSheetDefaults includes window insets for BottomSheetWindow. (I31200, b/274872542, b/272973615, b/272334475, b/268432129, b/275849044, b/275486106, b/268433162)

Version 1.1.0

May 10, 2023

androidx.compose.material3:material3:1.1.0 and androidx.compose.material3:material3-window-size-class:1.1.0 are released. Version 1.1.0 contains these commits.

Major features of 1.1.0

New Material Design 3 components

Enhancements to existing Material Design 3 components.

Promoted experimental APIs to stable!

Please see this blog post for more details!

Version 1.1.0-rc01

April 19, 2023

androidx.compose.material3:material3:1.1.0-rc01 and androidx.compose.material3:material3-window-size-class:1.1.0-rc01 are released. Version 1.1.0-rc01 contains these commits.

API Changes

  • TimePicker removed from stable API, further changes are expected in the state API (I3f39a)
  • ModalBottomSheet moved to android only. ModalBottomSheet is not recommended for desktop use, and the functionality is not actively maintained. (Ib3778)

Version 1.1.0-beta02

April 5, 2023

androidx.compose.material3:material3:1.1.0-beta02 and androidx.compose.material3:material3-window-size-class:1.1.0-beta02 are released. Version 1.1.0-beta02 contains these commits.

API Changes

  • SheetState now has optional skipHiddenState parameter
  • rememberStandardBottomSheetState now has optional skipHiddenState parameter
  • BottomSheetScaffold now has a defined Hidden anchor, though it is disabled by default
  • SheetState.requireOffset documentation has been updated
  • BottomSheetDefaults.MinimizedShape has been renamed as BottomSheetDefaults.HiddenShape (I839f4, b/273870234)

Bug Fixes

  • Do not switch the dial face from hour to minute when touch exploration is enabled. (I717d0)
  • ModalBottomSheet and BottomSheetScaffold drag handle semantics are now merged. (I05afb)
  • BottomSheetScaffold modifier, containerColor and contentColor parameters now only affect content. (I992cb)
  • BottomSheetScaffold nestedScroll for sheet content now implements flings. (I992cb)

Version 1.1.0-beta01

March 22, 2023

androidx.compose.material3:material3:1.1.0-beta01 and androidx.compose.material3:material3-window-size-class:1.1.0-beta01 are released. Version 1.1.0-beta01 contains these commits.

API Changes

  • Add layout type param to TimePicker composable. It allows to use different layouts, depending on the screen configuration (Ia0e16)
  • SearchBarDefaults has been marked as experimental. (I65561)
  • Added shadow elevation to BottomSheetScaffold (I94e0f)
  • Added support for displaying the date pickers without the header part. API changes to allow passing a null headline when creating a date picker. You can now pass null headline, title, and showToggleMode = false in order to display a headless picker. (Id3f3a, b/266132421, b/267194809)

Bug Fixes

  • Search bars now automatically clear focus when made inactive. (I22a7c, b/261444487)
  • Updated the DateRangePicker to allow selecting a range with the same date for its start and end. (I16529, b/272882497)
  • Text fields now properly position their text elements when font size is smaller than expected. This may result in a few pixels change in your apps based on font settings and script. (I8b8d0)
  • Bottom sheet semantic actions now have labels. (I277b0)

Version 1.1.0-alpha08

March 8, 2023

androidx.compose.material3:material3:1.1.0-alpha08 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha08 are released. Version 1.1.0-alpha08 contains these commits.

New Features

  • Added support for BottomSheetScaffold and BottomSheetScaffoldState. (I063d4)

API Changes

  • Added functionality to the DatePickerState and the DateRangePickerState to allow setting dates after the initial creation of the state, as well as resetting selections by setting null timestamps. Setting dates manually should be made with caution, and the new setSelection function will throw an exception in case a provided date fails a precondition (see documentation). (Ifa645, b/268609314, b/270427389)
  • Rename Collapsed SheetValue to PartiallyExpanded to more accurately and flexibly depict behavior in this state. (Ia1491)
  • Updated ListItem parameter names to _content instead of _text. Default getters are now ReadOnlyComposables where relevant. (I69a25)
  • Graduate interactive Surface APIs from experimental. (I90d59, b/261561812)

Bug Fixes

  • Fixed an issue where ModalBottomSheet's HalfExpanded state was calculated incorrectly and the sheet would appear to be floating. (I45e84, b/268411386)
  • Add confirmValueChange check to scrim tap for ModalBottomSheet. (I2311a, b/270425759)
  • Move semantic BottomSheet actions to drag handle. (I158ba)
  • ModalBottomSheet now commands focus on launch, handles back button. (I4d2ab)
  • ModalBottomSheet onDismissRequest is now also handled during nested scroll flings. (I655c5, b/268433166)

Version 1.1.0-alpha07

February 22, 2023

androidx.compose.material3:material3:1.1.0-alpha07 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha07 are released. Version 1.1.0-alpha07 contains these commits.

New Features

  • Add a Time Input composable that works with rememberTimePickerState(), it follows the M3 spec for time input (Ia4fab)
  • Added a Material 3 DateRangePicker API for selecting a range of dates. (I7a6c3, b/267194809)
  • Added a Material 3 input mode support for selecting date ranges via the DateRangePicker API. (Ifdbc4)
  • Text field colors now allow customizing:
    • The input field and placeholder text colors based on focus and error state. The textColor parameter has been renamed to unfocusedTextColor, and placeholderColor has been renamed to unfocusedPlaceholderColor.
    • The container color for filled text fields based on error state with the new errorContainerColor param.
  • Exposed dropdown menu text field colors have been updated with parameters to support the new prefix and suffix API. (I9c8b4, b/254284181, b/264766350)

API Changes

  • Reverting some Slider API versions and removing redundant Slider overloads that are covered by the new experimental Slider with custom thumb and track. Promoting RangeSlider to be stable. (Ie8fbd)
  • Renamed defaultElevation to elevation in chip's elevation functions. (I0f872)
  • The following Material 3 text field APIs are no longer experimental: TextField, OutlinedTextField, textFieldWithLabelPadding, textFieldWithoutLabelPadding, outlinedTextFieldPadding. (Ieb5c0, b/261561819)
  • TimePickers is24Hour uses system setting (I18856)
  • Removed experimental annotation from scaffold apis. (Ibb51e, b/261565765, b/261436953)

Bug Fixes

  • ModalBottomSheet default shape is now always SheetDefaults.ExpandedShape. (I0dfca)
  • Accessibility improvements for Material 3 DatePicker and DateRangePicker. (I5087e)
  • Fix bug where max height constraint is propagated and may crash. (I30d8c)
  • Removed semantic roles from clickable and selectable surfaces, updated components that used them to set roles using modifier.semantics (I793d9)

Version 1.1.0-alpha06

February 8, 2023

androidx.compose.material3:material3:1.1.0-alpha06 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha06 are released. Version 1.1.0-alpha06 contains these commits.

New Features

  • Text fields now support prefix and suffix text (Ia8578, b/179884561)
  • Added a TimePicker function to show a time picker following the Material 3 spec, used in conjunction with TimePickerState and convenience method rememberTimePickerState (I71910)
  • A date input is now a display mode at the DatePicker. Added support for switching between date picker and date input modes. (Ieeff7)
  • Added API for RichTextTooltips. (I58ef3)
  • Modal bottom sheet implementation for Material 3, including ModalBottomSheet and ModalBottomSheetDefaults. Also introduces SheetState and rememberSheetState which can be used for future sheet components. (I0853a, b/244189383)

API Changes

  • Stablize the API showSnackbar (I195c2, b/261424370)
  • Stablize the APIs for assist chip and suggestion chip (Ibb67b, b/261424370)
  • Promotes ListItem, ListItemDefaults and ListItemColors API to non-experimental (I7e7fa, b/261438882)
  • Promoting SliderPositions, SliderDefaults.Thumb, and SliderDefaults.Track to stable and adding non-experimental Slider and RangeSlider APIs that contain custom thumbs and track. Also deprecating the previous Slider and RangeSlider APIs. (Ie5ea6, b/261566890)
  • Made Modifier.tooltipAnchor() public, so devs can pass it to the anchor to indicate a tooltip should be displayed on long press. Updated PlainTooltipBox API to no longer make TooltipState nullable and now has a default. (Ie2fb7)
  • ProgressIndicatorDefaults.circularTrackColor has been marked @Composable for consistency. (Id29cc)
  • Restored property getter LocalMinimuTouchTargetEnforcement and mark it as deprecated and redirect to LocalMinimumInteractiveComponentEnforcement. (I60dd5)

Version 1.1.0-alpha05

January 26, 2023

androidx.compose.material3:material3:1.1.0-alpha05 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha05 are released. Version 1.1.0-alpha05 contains these commits.

New Features

  • DatePickerDialog and accessibility support
  • Added Custom thumb and track to RangeSlider.

Dependency Updates

Version 1.1.0-alpha04

January 11, 2023

androidx.compose.material3:material3:1.1.0-alpha04 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha04 are released. Version 1.1.0-alpha04 contains these commits.

New Features

  • Initial DatePicker API for picking a single date via a calendar UI. This API is still undergoing changes. (I722b9)
  • Added support for plain tooltips via PlainTooltipBox. (I0cdfb)
  • Search bar (Iad128)
  • SwipeToDismiss (I458a8, b/242889540)

API Changes

  • Added in IsContainer semantics property on Surfaces. This property will be used in a later change that determines traversal order based on the semantic meaning of elements such as surfaces. (I63379)
  • Mark navigation drawer related APIs as stable. (Iab01e, b/261439597)
  • Added a track color parameter for circular progress indicators, and a stroke cap parameter for both circular and linear progress indicators. (Ie668c, b/216325962, b/222964817)
  • More return type nullability of deprecated-hidden functions (Ibf7b0)
  • Add Modifier.minimumInteractiveComponentSize. It can be used to reserve at least 48.dp in size to disambiguate touch interactions if the element would measure smaller. (I33f58, b/258495559)
  • Added experimental API for AlertDialog composable that has a content slot. (Iec4a2)

Bug Fixes

  • Progress for progress indicators is now properly bounded to its expected range. (I8a7eb, b/262262727)

Known Issue

  • When updating from androidx.compose.foundation:1.4.0-alpha03 to androidx.compose.foundation:1.4.0-alpha04, you might experience a java.lang.NoSuchFieldError error. Here is where the issue was orginially reported. A fix has been submitted, and will be available on the next Compose update. As a work around, update your androidx.compose.material and androidx.compose.material3 libraries to the latest version(1.1.0-alpha04) or downgrade your androidx.compose.foundation to 1.4.0-alpha03.

Version 1.1.0-alpha03

December 7, 2022

androidx.compose.material3:material3:1.1.0-alpha03 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha03 are released. Version 1.1.0-alpha03 contains these commits.

API Changes

  • Renamed consumedWindowInsets() to consumeWindowInsets() and withConsumedWindowInsets() to onConsumedWindowInsetsChanged() and made the Modifiers public. (Ie44e1)
  • Add new default content padding for text button with icon to use. (I8f662)
  • Added disabled colors for navigation bar and rail. (Ia7892, b/258867034)
  • Added an Modifier API to query ancestors scroll info. (I2ba9d, b/203141462)
  • Used in Clickable to correctly delay press interactions, when gestures could become scroll events.
  • Fixed Clickables not correctly delaying ripples, when used inside an Scrollable ViewGroup.
  • Updated Drawers and Sheets to correctly delay presses in case gestures can become scroll events.

Dependency Updates

  • Compose UI and Compose Material now depend on Lifecycle 2.5.1. (I05ab0, b/258038814)

Version 1.1.0-alpha02

November 9, 2022

androidx.compose.material3:material3:1.1.0-alpha02 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha02 are released. Version 1.1.0-alpha02 contains these commits.

API Changes

  • awaitFirstDown and waitForUpOrCancellation now accept a PointerEventPass for greater flexibility (also fixes ExposedDropdownMenuBox showing a menu while scrolling).(I7579a, b/212091796)
  • Added minLines parameter into material and material3 Text, TextField and OutlinedTextField which allows setting the minimum height of the component in terms of number of lines (I4af1d)
  • Deprecate the TopAppBarDefaults smallTopAppBarColors function in favor of a new topAppBarColors function that should be used when creating a TopAppBar. (Ie6cb9)
  • Added minLines parameter to the BasicText and BasicTextField. It allows to set the minimum height of these composables in terms of number of lines (I24294, b/122476634)

Bug Fixes

  • Clip the content of a Material3 IconButton and IconToggleBotton to the component's state-layer shape (e.g. circular shape). (I9da8f)
  • Updates Material3 Medium and Large top app bars to apply the same background color across their entire surface, and to allow setting overriding the default colors with transparent color values. (I67659, b/249688556, b/250838918)

Version 1.1.0-alpha01

October 24, 2022

androidx.compose.material3:material3:1.1.0-alpha01 and androidx.compose.material3:material3-window-size-class:1.1.0-alpha01 are released. Version 1.1.0-alpha01 contains these commits.

Bug Fixes

  • Fixes to the top app bar when title is applied with a TextStyle and a Brush. (If667e)

Version 1.0

Version 1.0.1

November 9, 2022

androidx.compose.material3:material3:1.0.1 and androidx.compose.material3:material3-window-size-class:1.0.1 are released. Version 1.0.1 contains these commits.

Bug Fixes

  • Updates Material3 Medium and Large top app bars to apply the same background color across their entire surface, and to allow setting overriding the default colors with transparent color values. (I67659, b/249688556, b/250838918)

Version 1.0.0

October 24, 2022

androidx.compose.material3:material3:1.0.0 and androidx.compose.material3:material3-window-size-class:1.0.0 are released. Version 1.0.0 contains these commits.

Major features of 1.0.0

This is the first stable release of Compose Material 3!

Material Design 3 theming and Material You dynamic color

Material Design 3 components

Window Size Class

  • material3-window-size-class is a new library that provides support for window size classes: a set of opinionated viewport breakpoints for you to design, develop, and test resizable application layouts against. You can use calculateWindowSizeClass to retrieve a window size class instance, which you can use to determine how your UI should appear, such as showing a navigation rail instead of bottom navigation for larger window sizes. For more information and sample usage see the API reference documentation for WindowSizeClass.

  • Please see this blog post for more details!

Version 1.0.0-rc01

October 5, 2022

androidx.compose.material3:material3:1.0.0-rc01 and androidx.compose.material3:material3-window-size-class:1.0.0-rc01 are released. Version 1.0.0-rc01 contains these commits.

API Changes

Version 1.0.0-beta03

September 21, 2022

androidx.compose.material3:material3:1.0.0-beta03 and androidx.compose.material3:material3-window-size-class:1.0.0-beta03 are released. Version 1.0.0-beta03 contains these commits.

API Changes

  • ExposedDropdownMenuDefaults now exposes a padding value for menu items. (I34ee1)
  • ExposedDropdownMenuBoxScope now has a Modifier.menuAnchor() modifier that should be passed to the text field for proper a11y behavior. (I27fa3)
  • Adding two overloaded methods for the current Slider API to allow users to pass in a thumb or track to populate the slider. (I21c00)

Bug Fixes

  • Updated dark theme color mapping for On Error Container to tone 90 (Ic5612)
  • Fix to allow setting a transparent background for small Material 3 top app bars. (I645e2, b/245575782)

Version 1.0.0-beta02

September 7, 2022

androidx.compose.material3:material3:1.0.0-beta02 and androidx.compose.material3:material3-window-size-class:1.0.0-beta02 are released. Version 1.0.0-beta02 contains these commits.

API Changes

  • Default components insets introduced in m3 components in beta01 version no longer account for IME insets.
  • Material3 Scaffold component now has a contentWindowInsets parameter, allowing to specify the amount of insets to handle for the content slot. (Icf11a, b/243713323)
  • Deprecates the experimental Material 3 SmallTopAppBar function and introduces an equivalent TopAppBar function. Please migrate your usage to the new one. (I74404, b/226918634)
  • Adds control over the top app bar fling and snap behaviors. (I15c81)
  • Removes startIndent from Divider, moves color to last parameter. (If7be2)

Bug Fixes

  • Have Dialogs identify themselves to talkback users by announcing the word Dialog when they are displayed. (I857ef)

Version 1.0.0-beta01

August 24, 2022

androidx.compose.material3:material3:1.0.0-beta01 and androidx.compose.material3:material3-window-size-class:1.0.0-beta01 are released. Version 1.0.0-beta01 contains these commits.

API Reference

To see latest theming, component and other composables available check out the Compose Material 3 API reference overview.

API Changes

  • Updated the Material 3 top app bar to snap into a fully collapsed to a fully extended state. Also, updated the TopAppBarDefaults behavior function to be Composables and provide default values for their top app bar state and animation spec. (I642b3)
  • Updated FAB component signatures to match surface API (I3afaa)
  • Added insets Build-in support for Top app bars, drawers, navigation bar and rail. These components, when used separately or with Scaffold will automatically handle insets for developers. Note: This change doesn't add automatic handling of status bar icons and transparency of the status and navigation bars. Please, continue to do it manually to ensure the best edge-to-edge experience. (I7e4e6, b/183161866)
  • Updated component defaults to reduce API surface for future flexibility and performance improvements. (I31820)
  • Reordered chip and navigation drawer sheet parameters to maintain consistency within the API (I45d0b)
  • Removed startIndent from Divider and moved color to be the last parameter.(If7be2)

Version 1.0.0-alpha16

August 10, 2022

androidx.compose.material3:material3:1.0.0-alpha16 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha16 are released. Version 1.0.0-alpha16 contains these commits.

New Features

  • Support specifying a custom width on a navigation drawer. (Ia7f10)

API Changes

  • Reorder Tab and Leading icon tab parameters to maintain consistency within the API (Ie2637)
  • Marked BadgeDefaults as experimental. (I98ef3)
  • Remove deprecated navigation drawer function. (I4f2db)
  • Reorder Slider parameters in Material 3 to maintain consistency within the API (I0aee7)
  • Reorder NavigationBar and NavigationRail parameters to maintain consistency within the API (I51cda)
  • Reorder parameters in Material 3 to maintain consistency across the API. (If4ae1)
  • Reorder Slider parameters in Material 3 to maintain consistency within the API (I62673)
  • Renamed icons parameter to actions to be consistent with top app bar (Id75be)
  • Mark Badge and BadgedBox as experimental because the anchor alignment is still influx. (I1712e, b/236524516)
  • Change @ExperimentalMaterial3Api annotations on icon button variants to @OptIn (I070b5)
  • Separated a navigation drawer's content to its own composable to support specifying a custom width on it. (Ia7f10)
  • Removes Divider from MenuDefaults and TabDefaults (I4e33c)

Version 1.0.0-alpha15

July 27, 2022

androidx.compose.material3:material3:1.0.0-alpha15 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha15 are released. Version 1.0.0-alpha15 contains these commits.

New Features

API Changes

  • Updates to the FilterChip and ElevatedFilterChip APIs to remove the selectedIcon slot and promote reusing the leadingIcon for displaying a selected state. (Ie5dc2)
  • Add scrim and outline variant color roles. (Id6d54)
  • Fix naming conventions for composable defaults. (I62b27)
  • Mark ListItemDefaults and ListItemColors as experimental. (I1f3ec)
  • Changes to the top app bar API to better reflect the meaning of its state properties. Also, mark the top app bar API as experimental. (Ic0ad8)
  • Text selection colors have now been added to TextFieldColors for better discoverability. (Iba1b8)
  • Adding ButtonDefault.ButtonWithIconContentPadding to be used with buttons that contain an icon. (I2bf9c)
  • Text fields have been marked as experimental to allow for more flexibility in future API changes. (I127b5)
  • Removed the @ExperimentalMaterial3Api annotation from the Checkbox function. (I5eefc)
  • Removed the @ExperimentalMaterial3Api annotation from the RadioButton function. (I17e2a)
  • Removed the @ExperimentalMaterial3Api annotation from the non-interactive Cards. (I9bd49)
  • Updates various component defaults objects to include colors, shapes etc. (I96e11)

Bug Fixes

  • Removed non-functioning trailing icons from input chip samples to avoid user confusion in the catalog app. (I9846a)

Version 1.0.0-alpha14

June 29, 2022

androidx.compose.material3:material3:1.0.0-alpha14 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha14 are released. Version 1.0.0-alpha14 contains these commits.

New Features

  • Added M3 list implementation, see the documentation for sample usage (Id7a20)

API Changes

  • Change parameter name from values to value in RangeSlider (I3b79a)
  • API changes to the InputChip implementation to support a selectable state per the Material Design spec. Additional support at the FilterChip colors for selected disabled state. (I55244, b/235792432)
  • Add BottomAppBar default FAB (Ida4c8)
  • ColorScheme.surfaceColorAtElevation was added (Id41af)
  • Interfaces in compose libraries are now built using jdk8 default interface methods (I5bcf1)
  • WindowWidthSizeClass and WindowHeightSizeClass now implement Comparable, so they can be compared using operators (<, <=, >=, >) and other APIs. (I747d0)

Bug Fixes

  • Update badge sample to provide more meaningful content description. (I10b9d)
  • Adds option to use the system font size to the Material 3 catalog's theme picker. (I10605)
  • Adds sample code for Badge and indeterminate progress indicators. (I8fbe0)

Version 1.0.0-alpha13

June 1, 2022

androidx.compose.material3:material3:1.0.0-alpha13 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha13 are released. Version 1.0.0-alpha13 contains these commits.

API Changes

  • Supports maintaining the top app bar position on configuration change. (I10459, b/216160958)

Version 1.0.0-alpha12

May 18, 2022

androidx.compose.material3:material3:1.0.0-alpha12 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha12 are released. Version 1.0.0-alpha12 contains these commits.

Bug Fixes

Version 1.0.0-alpha11

May 11, 2022

androidx.compose.material3:material3:1.0.0-alpha11 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha11 are released. Version 1.0.0-alpha11 contains these commits.

New Features

  • Added RangeSlider to Material 3 (I18e38)
  • Adds Material3 AssistChip and InputChip support (I0d25a)
  • Adds Material3 FilterChip and SuggestionChip support (I9fdf3)

API Changes

  • Renamed TextFieldDefaults.BorderStroke composable that draws a border stroke in OutlinedTextField to TextFieldDefaults.BorderBox. (I5f295)
  • Switch m3 visual changes (Iab30e)
  • Allow passing colors to the standard icon buttons. (Ia2445)

Bug Fixes

  • Add lint check to material3/Scaffold to ensure that the inner padding is used (I72293, b/226951418)

Version 1.0.0-alpha10

April 20, 2022

androidx.compose.material3:material3:1.0.0-alpha10 and androidx.compose.material3:material3-window-size-class:1.0.0-alpha10 are released. Version 1.0.0-alpha10 contains these commits.

New Features

  • material3-window-size-class is a new library that provides support for window size classes: a set of opinionated viewport breakpoints for you to design, develop, and test resizable application layouts against. You can use calculateWindowSizeClass to retrieve a window size class instance, which you can use to determine how your UI should appear, such as showing a navigation rail instead of bottom navigation for larger window sizes. For more information and sample usage see the API reference documentation for WindowSizeClass. For more information on window size class definitions, see the public guidance on supporting different screen sizes.

API Changes

  • Adds default FAB elevation for BottomAppBar, removes trailing lambda from BottomAppBar with FAB. (I92c47)
  • Adds Material3 FilledIconButton, FilledTonalIconButton, and OutlinedIconButton. (Ib2bda)
  • Updates Material 3 Snackbar API to accept color values for the optional action and dismiss-action. (Ibe4b4)
  • Partial consumption (down OR position) has been deprecated in PointerInputChange. You can use consume() to consume the change completely. You can use isConsumed to determine whether or not someone else has previously consumed the change.
  • PointerInputChange::copy() now always makes a shallow copy. It means that copies of PointerInputChange will be consumed once one of the copies is consumed. If you want to create an unbound PointerInputChange, use constructor instead. (Ie6be4, b/225669674)
  • Changes to the Cards API to receive the container and content colors via a CardColors interface, and to support a disabled state for clickable cards. (I927df)
  • The parameter backgroundColor has been renamed containerColor in Material 3 text fields for improved consistency with other components. (I6fbd9)

Bug Fixes

  • Updates to the standard IconButton to align it with the Material3 spec. (I09eab)
  • Move the top bar height of material3 Scaffold into the padding passed to content, allowing the content to render underneath the top app bar. If the PaddingValues are ignored, then the content might be obscured by the top bar. (I83cbc, b/217776202)

Version 1.0.0-alpha09

April 6, 2022

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

New Features

  • Added Material 3 Switch API (I2c3ad)

API Changes

  • Added support for dropdown menus with text fields (aka 'exposed dropdown menus' or 'combo boxes'.) (I1b832)
  • Added shape parameter to MaterialTheme and Shape sub system. (I37426)
  • Added an expanded parameter to ExtendedFloatingActionButton to control whether the FAB is expanded or collapsed, with animations between each state. Added Extended FAB overload for extended FABs with trailing text for ExtendedFABs without icon. (Iba7f1)

Version 1.0.0-alpha08

March 23, 2022

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

New Features

API Changes

  • Add default divider for menu (I01374)
  • Added surfaceTint color parameter to ColorScheme class. (I2f558)

Bug Fixes

  • Fix at the Material3 Button to read its default text style value from the MaterialTheme. (Ie62fc)

Version 1.0.0-alpha07

March 9, 2022

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

API Changes

  • Updates to Material 3 Surface API that brings back the overloaded functions for clickable Surfaces, as well as adding a function to support selectable and toggleable Surfaces. (I4bf18)
  • LazyVerticalGrid and LazyHorizontalGrid are now stable. (I307c0)
  • LazyVerticalGrid/LazyHorizontalGrid and all related apis were moved into .grid subpackage. Please update your imports from androidx.compose.foundation.lazy to androidx.compose.foundation.lazy.grid. (I2d446)
  • Reverted previous change of relying solely on a View for WindowInsetsControllerCompat, and again require a Window which is required for managing some window flags. Deprecated ViewCompat.getWindowInsetsController in favor of WindowCompat.getInsetsController to ensure that the correct Window is used (such as if the View is in a dialog). (I660ae, b/219572936)
  • Added a new LazyVerticalGrid API to define cross axis sizes (I17723)

Bug Fixes

  • Updates to the Card API to follow changes at the Surface API (I3c8b9)

Version 1.0.0-alpha06

February 23, 2022

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

API Changes

  • NavigationDrawerItem is added that represents a single destination within the drawers (Ic396f, b/218286829)
  • PermanentNavigationDrawer and DismissibleNavigationDrawer have been added as experimental APIs. Those are the drawers suitable well for large screen devices. (I5f8ab, b/218286829)
  • Adds Material 3 bottom app bar support (Ic432a)
  • NavigationDrawer has been renamed to ModalNavigationDrawer (I1807d, b/218286829)
  • Added Material 3 Slider class and tokens (I1ccee)
  • Added Tab implementation, see the documentation for sample usage (Ie0146)

Bug Fixes

  • Fixed an issue where the TalkBack screen reader linear navigation selected an empty top app bar title. (Id4690)
  • Added IconSize to FloatingActionButtonDefaults. (Ia71cf)
  • Bug fix for hidden AlertDialog buttons when a long text is added with a LazyColumn. (Ib2cc9, b/216663029)

Version 1.0.0-alpha05

February 9, 2022

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

New Features

Added Material Design 3 components

API Changes

  • Deprecated Surface function that takes an onClick callback. Clickable surfaces should be created with an InteractionSource and a Modifier.clickable(). (I211c6)
  • Added pressed and focused elevation support for FAB. (Ibb584)
  • Changed the Surface API to receive an InteractionSource which allows controlling its appearance in different states. (Iafbc8)

Bug Fixes

Version 1.0.0-alpha04

January 26, 2022

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

API Changes

  • Added NonRestartableComposable to methods that are overloads of existing methods without complex logic. This reduces compiler generated memoization checks (equals) for all parameters which are repeated in the inner function that is called. (I90490)
  • Added Material 3 divider. (Ica5fc)
  • Mark the Checkbox and RadioButton with an experimental API annotation. (Ie44bb)
  • Added support for Material 3 progress indicators. (Iff232, b/205023841)

Bug Fixes

  • Update a disabled TextButton's container color to be transparent (I6b248, b/213339737)

Version 1.0.0-alpha03

January 12, 2022

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

Bug Fixes

Dependency Updates

  • Now depends on Kotlin 1.6.10.

Version 1.0.0-alpha02

December 1, 2021

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

New Features

  • Add support for checkbox and radiobutton.
  • Updated to be compatible with Kotlin 1.6.0

API Changes

  • Remove drawer from Material 3's scaffold. (I04f51)
  • Adds Material 3 Checkbox support. (Id5542)
  • Adds Material 3 RadioButton support. (I20334)

Bug Fixes

  • Reduce IconButton ripple radius from 40dp to 20dp. (I68bbe, b/206674345)
  • Port string fast path for Text changes from compose.material (I30b03)
  • Fixed but that hardcoded button to always be enabled. (Iea832, b/205335456)

Version 1.0.0-alpha01

October 27, 2021

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

New Features

Material Design 3 theming and Material You dynamic color

Material Design 3 components

For more information, check out the Material Design 3 and Material You section in the Material Theming in Compose guide.