Material 3 Expressive: Stop Building Boring Apps

february 4, 2026

Material 3 Expressive is here to save your users from the 'default app' fatigue. Grab the material3-expressive-flutter skill and start shipping UI that actually feels alive.

Design · flutter · material-3 · m3e · design · ai-skills

Material 3 Expressive: Stop Building Boring Flutter Apps

"If your app doesn't morph, bounce, or use 15 different shades of mauve, are you even designing in 2026?"

Let's just be completely honest for a second: most Flutter apps look exactly like you ran flutter create, added a few Center widgets, and shipped it straight to production. Standard pill buttons. Standard drawers. Standard "I copied this directly from a 2021 tutorial" energy. It's a massive skill issue, it's everywhere, and your users notice.

After years of us complaining, Google finally dropped the actual antidote: Material 3 Expressive (M3E). This is the most heavily researched update to Material Design ever, specifically designed to fix your "playing it safe" problem. If your buttons don't have spring physics and your containers are still just hardcoded to BorderRadius.circular(8), your users are definitely more bored than their App Store reviews are letting on.

M3E Banner

The "I'm Not Reading 80 Pages of Material Spec" Summary

M3E (announced May 2025, still entirely dodging mainstream adoption in 2026 because people are lazy) is not just a theme change. It's a fundamental shift in how interfaces feel. Here's the 4-point cheat sheet so you don't have to read the documentation:

  1. Color with Purpose: Not just "make the button blue," but using bold container colors to actually guide the user's eye instead of hoping they find the CTA on their own.
  2. Shape Flexibility: Buttons that morph, containers that aren't just rectangles, and expressive active indicators. BorderRadius.circular(8) is retired. Let it rest.
  3. Springy Motion: Physics-based animations that feel like real objects, not just linear math functions that make your UI feel like a PowerPoint presentation.
  4. New Components: Button groups, split buttons, and those wavy loading indicators that make waiting for a network request feel almost... pleasant.

The Workflow: Skip the Spec, Use an Agent

You could spend three days meticulously reading the Material spec, or you could point the material3-expressive-flutter skill at your AI coding agent and start shipping while it actually handles the implementation details for you.

I've been using this skill to bridge the gap while official Flutter framework support takes its sweet time catching up with the spec. It gives your agent the exact context needed to implement components that don't even exist in the SDK yet — and properly, not hallucinated garbage.

_Actual footage of me shipping features faster than the Flutter team can update their changelog._

The Components You're Missing

1. The Wavy Loader (The "Vibe" Indicator)

Using a standard CircularProgressIndicator? Massive skill issue. M3E introduces wavy loaders. They look active, they look energetic, and they tell your user "we're actually doing work here" instead of "the app might have frozen, who knows."

2. Button Groups & Split Buttons

Finally, we can group related actions without it looking like a messy flex row of individual buttons you just threw together. Split buttons give you a primary action with a "hey, there's more here" dropdown that actually stays in visual context.

3. Springy Springs

Forget Curves.easeInOut. We’re talking Spatial Springs for movement and Effects Springs for color transitions. If your buttons don't have a little physical "bounce" when you tap them, did you even code them? Users want dopamine, give them the bouncy buttons.

The Result: Apps That Don't Suck

When you combine M3E principles with some decent motion physics, you get something that finally feels premium. No more "this looks like a template" comments in your DMs.

_Look at those transitions. That's the dopamine hit your users are desperately looking for._

How to Get Started (Four Real Steps)

If you're using an AI agent — which you are, let's not lie to ourselves — the material3-expressive-flutter skill has everything it needs.

  1. Enable Material 3: useMaterial3: true in your ThemeData. This is absolute table stakes.
  2. Use the Skill: Point your agent at the reference files in references/components/*.md. Force it to read the spec so you don't have to.
  3. Stop Hardcoding Colors: Use ColorScheme.fromSeed and let the dynamic palette work as intended. Stop manually typing hex codes like it's 2015.
  4. Embrace the Morph: Use shape packages to get the full M3E container expressions. I repeat: BorderRadius.circular(8) is retired.

Conclusion

M3E is about making apps feel alive instead of just functionally adequate. It's the literal difference between a utility tool and an actual experience. Stop shipping UIs that look like they came from a template repository in 2021.

Install the skill. Let the agent handle the physics math. Ship something with a personality for once.

Or keep building your gray-on-white list views. It's genuinely your call.


Next Steps:


Written while my AI agent refactored 50 buttons to use springy animations because I refused to do it manually.

back to blog