dotnet / dotnet/maui

Add Opt-In Material Design 3 Support for Android

Open
#33,063 2 comments 7 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

s/triaged
Dominant language
C#
Stars
23.3k
Forks
2k
Avg merge
1d 14h
Merged PRs (30d)
296

Description

Summary

Add Material Design 3 (M3) support to .NET MAUI Android as an opt-in feature, allowing developers to modernize their app's appearance while maintaining backward compatibility with existing Material 2 applications.

Problem

Direct migration to Material 3 would be a breaking change because visual appearance, color schemes, and component behaviors would change for all existing apps.

Solution

Provide M3 as an opt-in feature via MSBuild property:

<PropertyGroup>
  <UseMaterial3>true</UseMaterial3>
</PropertyGroup>

Key Deliverables

  • Build Property - UseMaterial3 MSBuild property to enable M3 at build time
  • Dual Theme System - Maintain both M2 (default) and M3 themes simultaneously
  • Conditional Widget Selection - Use M3 widgets (MaterialSwitch, etc.) when enabled
  • Resource Files - styles-material3.xml and colors-material3.xml with M3 tokens

Implementation Phases

Phase Focus Scope
1 Foundation Build property infrastructure, M3 resources, theme selection
2 Controls Update handlers for M3 widgets (Switch, RadioButton, etc.)
3 Documentation Migration guide, samples, PR template updates

Breaking Change Analysis

None - M2 remains default, opt-in only, fully backward compatible.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin by locating the Android MSBuild property handling, theme resources, and control handlers referenced by the issue. Review how the existing Material 2 theme and widgets are selected, then verify the UseMaterial3 property, styles-material3.xml, colors-material3.xml, and listed control updates. Done means M2 remains the default while an opt-in build uses M3 resources and widgets without breaking existing apps.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, csharp
Domain
mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.