Trend report6 min read

Material 3 Expressive a year on: what to adopt and what to leave

What Google changed in motion, shape, type and components, what its research actually claims, and how we use the ideas in apps that carry their own brand.

Soft sculpted shapes on low white steps: a scalloped circle, a pill, a star, a rounded square and a lavender four-lobed clover.
Generated for Ainur Design

Material 3 Expressive is the biggest change to Google's design system since Material You. Google announced it on 13 May 2025, ahead of I/O, and it reached most people in early September 2025, when Android 16 QPR1 rolled out to Pixel phones. Wear OS 6 carries the same language on the wrist.

More than a year later, the dust has settled. The springs, the shapes and the bolder type are now part of the Compose Material 3 library, not only a Pixel look. This report covers what actually changed, what the research behind it says, and what we take from it when we design a brand-led app that is not trying to look like a Pixel.

Not Material 4

The name matters. Expressive is an expansion of Material 3, not a new version. Existing M3 themes, tokens and components still work. What Google added is a second, louder register: more motion, more shape, more color, heavier type, and a set of new components that use them.

On Pixel, the most visible results are in system UI: Quick Settings tiles that can be resized, segmented status bar icons, new volume and brightness sliders, and notifications that stretch and spring when you swipe them away, with a haptic tick at the end. Inside apps, the change shows up in components.

Motion: two spring schemes instead of easing curves

The core of Expressive is a motion physics system. Instead of durations and cubic-bezier curves, components animate with springs defined by a damping ratio and a stiffness. In Compose this lives in MotionScheme, and there are two built-in schemes: MotionScheme.standard() and MotionScheme.expressive().

Each scheme has six specs. Spatial specs move things (position, size, shape) and come in fast, default and slow. Effects specs change things like color and opacity, and also come in three speeds. The token values in the androidx source show the difference between the two schemes clearly.

SpecStandard (damping / stiffness)Expressive (damping / stiffness)
Fast spatial0.9 / 14000.6 / 800
Default spatial0.9 / 7000.8 / 380
Slow spatial0.9 / 3000.8 / 200
Fast effects1.0 / 38001.0 / 3800
Default effects1.0 / 16001.0 / 1600
Slow effects1.0 / 8001.0 / 800

Two things stand out. First, expressive spatial springs have a lower damping ratio, so they overshoot and settle, which is the visible bounce. Second, the effects springs are identical in both schemes and fully damped (1.0). Google keeps color and opacity changes calm everywhere. Only movement gets the personality. That is a rule worth copying even if you never touch Compose.

Shape: 35 shapes and morphing

Expressive turns shape into a tool for state and emphasis. The MaterialShapes object in Compose ships 35 named shapes, from Circle, Pill and Arch to Cookie variants, Clover, Burst, Flower, Puffy and Heart. Each is a normalized RoundedPolygon, which means any two can morph into each other with a smooth animation.

You see this in the new loading indicator, which morphs through a sequence of these shapes, and in buttons that change corner radius when pressed or selected. A round button that becomes a rounded square when it is toggled on is the simplest example: state is shown by shape, not only by color.

Type, color and the new components

Typography gets an emphasized variant of every baseline role. The Compose Typography class now has 15 extra styles, from displayLargeEmphasized down to labelSmallEmphasized, meant for the one headline or number on a screen that should carry more weight. Color moves the same way: deeper tonal palettes and more color applied to containers rather than kept to accents.

The component set grew too. These are the ones we reach for most, all present in the current Compose Material 3 source:

  • Button groups: rows of buttons whose shape and width react when a neighbour is pressed.
  • Split buttons: a primary action with an attached menu segment.
  • FAB menu: a floating action button that opens into a short list of related actions.
  • Floating toolbars: compact, floating action bars for editing and media screens.
  • Loading indicator: the shape-morphing indicator for short waits, plus a wavy progress indicator for longer ones.
  • Toggle buttons and flexible app bars: buttons with a selected shape, and top and bottom bars that adapt their height and layout.

The research, in Google's own numbers

Google's Design team published the research behind Expressive in Expressive Design: Google's UX Research. The page describes 46 separate research studies with more than 18,000 participants worldwide, using eye tracking, surveys, focus groups and usability tests across 10 apps built in both styles.

The headline claim: participants could "spot key UI elements up to four times faster" in the expressive designs. The page also reports that preference for expressive design is strongest among 18-to-24-year-olds, up to 87%, and that it helped users over 45 perform on par with younger users.

Using it in Compose today

The expressive APIs are maturing in the 1.5 alphas of androidx.compose.material3 (alpha26 at the time of writing). Between May and July 2026 Google moved split buttons, button groups, floating toolbars, flexible app bars and expressive list items out of experimental status. MaterialShapes and LoadingIndicator still require the @ExperimentalMaterial3ExpressiveApi opt-in, so check the release notes for the version you ship.

The entry point is MaterialExpressiveTheme. You pass your own color scheme, shapes and type, and choose a motion scheme. Custom animations can then read springs from the theme, so they match the components around them.

MaterialExpressiveTheme(
    colorScheme = brandColors,
    motionScheme = MotionScheme.expressive(),
    shapes = brandShapes,
    typography = brandType,
) {
    AppContent()
}

// In a custom component: reuse the theme's spring
val width by animateDpAsState(
    targetValue = if (expanded) 280.dp else 56.dp,
    animationSpec = MaterialTheme.motionScheme.defaultSpatialSpec(),
)

Most of our work ships in React Native, where none of this is available as a library. The spring values still carry over. Reanimated's withSpring takes mass, damping and stiffness, and with a mass of 1 the damping is 2 × ratio × √stiffness. The expressive default spatial spring (ratio 0.8, stiffness 380) becomes a damping of about 31.2 at stiffness 380.

What we adopt in a brand-led app

Our clients rarely want their app to look like a Pixel settings screen. Expressive is still useful to them, because its best ideas are about structure, not Google's look. Here is where we land.

  • Adopt springs for anything that movesSheets, cards, buttons that grow, list items that expand. One spatial spring family, three speeds, used everywhere.
  • Keep effects calmCopy Google's split: color and opacity fades are critically damped, with no bounce. Overshoot is reserved for spatial movement.
  • Use shape for stateA selected filter, an active tab, a toggled control: change the corner radius as well as the color. It helps users who don't read color well, too.
  • Pick one or two brand shapesNot 35. A single signature shape for avatars or the loading state is recognisable. A different shape on every card is noise.
  • Emphasize one thing per screenThe research result is about finding the key element faster. That only works if there is one. Use the emphasized type style for the number or action that matters, and nowhere else.
  • Respect reduced motionWhen the system asks for less motion, swap springs for short fades. Expressive motion is a default, not a requirement.

What we leave out

We don't make every screen loud. Expressive works on Pixel because the system UI is a small set of high-traffic surfaces. In a product with forms, settings and long lists, bouncing on every tap gets tiring by the third session. We keep the expressive scheme for moments that deserve it, such as onboarding, a completed goal or a primary action, and use standard springs for routine navigation.

We also don't copy Google's shapes as brand identity. Cookie and clover shapes now read as Android. A brand that wants to feel like itself on both iOS and Android should take the method (morphing between a few owned shapes) and leave the specific shapes behind.

Take the physics and the hierarchy. Leave the volume for the moments that earn it.

If you are planning a redesign on Android, start with motion and shape tokens before any new component. Once springs and state shapes are in place, the rest of Expressive is a set of choices you can make one screen at a time.

Sources

  1. Google launches Material 3 Expressive redesign for Android, Wear OS devices · Google
  2. Expressive Design: Google's UX Research · Google Design
  3. Material Design 3 in Compose · Android Developers
  4. Compose Material 3 release notes · Android Developers
  5. MotionScheme API reference · Android Developers
  6. MaterialShapes API reference · Android Developers
  7. Android 16 QPR1 with Material 3 Expressive rolls out to Pixel · 9to5Google

Keep your place in the app

Save this story, pick up where you left off and follow Sana.

Coming soon onGoogle PlayComing soon onApp Store