Material 3 Expressive (Android UI/UX)
Overview
Design and review Android UI/UX using Material 3 Expressive. Prioritize component-token requests for dialogs, sheets, modals, toolbars, and buttons, with guidance plus token references by default.
Intake Questions
- Target device class (phone, tablet, foldable, Wear OS)
- Window size class (Compact, Medium, Expanded)
- Brand constraints and dynamic color usage
- Primary action(s) and desired hero moments (1-2 max)
- Motion constraints and reduced-motion expectations
- Accessibility targets (contrast, touch target)
Default Assumptions
- Intensity level: Foundational
- Window size class: Compact
- Dynamic color: enabled
- Standard navigation patterns preserved
Quick Workflow
- Confirm intensity level + hero moments
- Confirm device class + window size class
- Load Tier 1 index and output template
- Load component overview + token spec files
- If theming needed, load Tier 3 foundation tokens
- Output: guidance + token refs (see template)
Default Output Format (Guidance + Token Refs)
Use references/m3-component-token-output-template.md verbatim as the base output shell.
- Context and intent (1-2 lines)
- Intensity level + hero moments (count + location)
- Window size class + device class
- Component + variant
- Token references: file paths + token groups to use (quote minimal key values only if needed)
- Compose mapping reference (optional):
references/compose-mapping.md
- Behavior or interaction constraints (from overview)
- Reduced-motion fallback note
- Accessibility and performance checks
- Optional: Compose mapping notes
Expressive Tactics
| Lever | Application |
|---|
| Shape contrast | Bold corners on primary, subtle on secondary |
| Rich color | Primary/secondary containers for emphasis |
| Type hierarchy | Size + weight variation |
| Motion | Shape morph on press/select |
Constraint: Max 1-2 hero moments per flow
Expressive Intensity Levels
- Foundational: Clarity and familiarity first
- Excellent: Stronger color, type, and shape while preserving patterns
- Transformative: Bold layouts and motion with strict usability and accessibility
Common Mistakes
| Mistake | Fix |
|---|
| Removing text labels for "cleaner" look | Keep labels; usability drops without them |
| Too many hero moments per screen | Limit to 1-2 per flow |
| Breaking navigation patterns | Preserve standard nav behaviors |
| No reduced-motion fallback | Honor system animation scale; provide reduced-motion or instant transitions when animation scale is 0 |
| Hardcoding token values | Use semantic tokens (md.sys.color.*) |
| Ignoring window size classes | Test Compact, Medium, Expanded |
Android-Specific Guidance
- Preserve navigation and component behaviors
- Keep touch targets generous and platform-consistent
- Honor system animation scale; provide reduced-motion alternatives or instant transitions when animation scale is 0
- Apply window size classes for tablets and foldables
Review Checklist
Hierarchy
Accessibility
Expressive Compliance
Reference Tiers (Load in Order of Need)
Tier 1: Always Load First
| Need | File |
|---|
| Component token lookup | references/m3-expressive-specs-tokens-index.md |
| Output format template | references/m3-component-token-output-template.md |
| New/updated components | references/m3-expressive-components.md |
Tier 2: Component-Specific (Load When Requested)
| Component | Overview | Tokens |
|---|
| Buttons | m3-buttons.md | m3-buttons-specs-tokens.md |
| Button Groups | m3-button-groups.md | m3-button-groups-specs-tokens.md |
| Dialogs | m3-dialogs.md | m3-dialogs-specs-tokens.md |
| Sheets | m3-sheets.md | m3-bottom-sheets-specs-tokens.md / m3-side-sheets-specs-tokens.md |
| Toolbars | m3-toolbars.md | m3-toolbars-specs-tokens.md |
| FABs | m3-fabs.md | m3-fabs-specs-tokens.md |
| Extended FAB | m3-extended-fab.md | m3-extended-fab-specs-tokens.md |
| FAB Menu | m3-fab-menu.md | m3-fab-menu-specs-tokens.md |
| Icon Buttons | m3-icon-buttons.md | m3-icon-buttons-specs-tokens.md |
| Split Button | m3-split-button.md | m3-split-button-specs-tokens.md |
| Navigation Bar | m3-navigation-bar.md | m3-navigation-bar-specs-tokens.md |
| Navigation Rail | m3-navigation-rail.md | m3-navigation-rail-specs-tokens.md |
| App Bars | m3-app-bars.md | m3-app-bars-specs-tokens.md |
| Carousel | m3-carousel.md | m3-carousel-specs-tokens.md |
| Progress Indicators | m3-progress-indicators.md | m3-progress-indicators-specs-tokens.md |
| Loading Indicator | m3-loading-indicator.md | m3-loading-indicator-specs-tokens.md |
Tier 3: Foundation Tokens (Load for Theming)
| Foundation | File |
|---|
| Color system | m3-color-system.md, m3-color-foundation-tokens.md |
| Typography | m3-typography.md, m3-typography-foundation-tokens.md, m3-typography-fonts.md, m3-typography-type-scale-tokens.md |
| Shape | m3-shape.md, m3-shape-foundation-tokens.md, m3-shape-corner-radius-scale.md, m3-shape-morph.md |
| Motion | m3-motion-physics.md, m3-motion-foundation-tokens.md, m3-motion-specs.md |
| Elevation | m3-elevation.md, m3-elevation-specs-tokens.md |
| State | m3-state-foundation-tokens.md |
Tier 4: Evidence & Research (Load for Justification)
| Resource | File |
|---|
| Research findings | references/expressive-research.md |
| Testing guidance | references/m3-testing-material-3.md |
| Expressive blog | references/m3-expressive-blog.md |
| Expressive guidelines | references/m3-expressive-guidelines.md |
| UX article | references/medium-ux-article.md |
Tier 5: Wear OS (Load Only for Wearables)
| Resource | File |
|---|
| Benefits | references/wear-expressive-benefits.md |
| Levels of expression | references/wear-levels-of-expression.md |
| Design language | references/wear-expressive-design-language.md |
| Blog | references/wear-expressive-blog.md |
| Compose Material3 | references/wear-compose-material3.md |
Supporting Resources
| Resource | File |
|---|
| Android UI design hub | references/android-ui-design-hub.md |
| Expressive catalog | references/expressive-catalog.md |
| Compose mapping | references/compose-mapping.md |
Maintenance
- Refresh references with
skills/material-3-expressive/scripts/update_m3_expressive_refs.py.
- Requires Playwright and Chromium (
.venv/bin/python -m playwright install chromium if needed).
- CI runs weekly; local runs are for urgent changes.
Search Tips
- Find a token prefix:
rg "md.comp.button" skills/material-3-expressive/references/m3-buttons-specs-tokens.md
- Find navigation tokens:
rg "md.comp.navigation" skills/material-3-expressive/references/m3-.*navigation.*.md
Examples
- Use
assets/examples/ui/ExpressiveHomeScreen.kt as a Compose starting point
- Use
assets/examples/ui/ExpressiveButtonComparison.kt to see standard vs expressive button differences
- Use
assets/examples/ui/ExpressiveAntiPatterns.kt to learn common mistakes to avoid
- Use
assets/examples/ux/expressive-ux-brief-template.md to draft an expressive UX brief
- Examples are illustrative; adapt sizes/colors to expressive tokens and project constraints.