Skip to main content
We would love for you to contribute to Angular Material and help make it ever better! As a contributor, here are the guidelines we would like you to follow.
Before contributing, please read and follow our Code of Conduct.

Ways to Contribute

Report Bugs

Found an issue? Report it on GitHub

Request Features

Have an idea? Share your proposal

Submit Code

Fix bugs or implement features

Improve Docs

Help make documentation better

Answer Questions

Help others on Stack Overflow

Review PRs

Review and test pull requests

Got a Question?

Please do not open GitHub issues for general support questions.
For questions, use these channels:

Why Stack Overflow?

Thousands of people willing to help
Questions and answers stay available publicly
Voting system surfaces the best answers
Searchable for others with similar issues

Found a Bug?

If you find a bug in the source code or a mistake in the documentation, you can help by submitting an issue to our GitHub Repository.

Issue Requirements

Issues without a reproduction will be closed.
1

Search for existing issues

Before creating a new issue, search the issue tracker to see if it’s already been reported.
2

Create a reproduction

Provide a live reproduction using:
Our team has limited resources. Reproductions allow us to quickly diagnose issues.
3

Provide details

Include in your issue:
Overview
required
Clear description of the issue and expected behavior
Versions
required
Angular and Material versions affected (e.g., 21.0.0)
Browsers
required
Which browsers are affected? All or specific ones?
Steps to Reproduce
required
Unambiguous steps to reproduce the error
Screenshots
recommended
Visual issues benefit greatly from screenshots
Link to similar issues if any exist
4

Submit the issue

Create a new issue with all the information.

Want a Feature?

You can request a new feature by submitting an issue to our GitHub Repository.
For significant features:
  1. Open an issue with your proposal
  2. Outline your approach and discuss with the team
  3. Wait for approval before starting implementation
  4. Submit a PR once approved
This helps coordinate efforts and ensures your work can be accepted.

Submitting a Pull Request

1

Sign the CLA

Before we can accept your PR, you must sign the Contributor License Agreement:
2

Search for existing PRs

Check if someone else is already working on the same thing:
# Search GitHub PRs
https://github.com/angular/components/pulls
3

Create a branch

git checkout -b my-fix-branch main
Branch names should be descriptive: fix/button-ripple, feat/tree-virtual-scroll
4

Make your changes

Create your patch
Include appropriate test cases
Follow our Coding Rules
Test with supported browsers and screen readers
Run the full test suite
5

Commit your changes

Use our commit message conventions:
git commit -a
Example commit message:
fix(button): unable to disable button through binding

Fixes a bug where buttons cannot be disabled through a binding.
This is because the `disabled` input did not set the
`.mat-button-disabled` class on the host element.

Fixes #1234
6

Push to GitHub

git push origin my-fix-branch
7

Create the PR

  1. Go to GitHub and create a pull request to components:main
  2. Fill out the PR template completely
  3. Link related issues using “Fixes #123” syntax
8

Address review feedback

If we suggest changes:
# Make updates
git add .
git commit --fixup HEAD

# Rebase and force push
git rebase main -i --autosquash
git push -f

Commit Message Format

We use commit messages to automatically generate the changelog. Follow the format strictly.
Each commit message consists of a header, body, and footer:
<type>(<package>/<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
The header is mandatory and must follow this format:
type
required
Type of change:
  • feat - New feature
  • fix - Bug fix
  • docs - Documentation only
  • refactor - Code refactoring
  • perf - Performance improvement
  • test - Test improvements
  • build - Build system changes
  • ci - CI changes
package
required for changelog
Which package is affected:
  • material - Material components
  • cdk - Component Dev Kit
  • material-experimental - Experimental features
scope
required for changelog
What component/area:
subject
required
Brief description:
  • Use imperative, present tense: “change” not “changed”
  • Don’t capitalize first letter
  • No period at the end
  • Max 100 characters

Body

The body should include:
  • Motivation for the change
  • Contrast with previous behavior
  • Use imperative, present tense
The footer should contain:
  • Breaking Changes: Start with BREAKING CHANGE:
  • Deprecations: Start with DEPRECATED:
  • Issue references: Fixes #123, Closes #456
fix(material/button): unable to disable button through binding

Fixes a bug in the Angular Material `button` component where buttons
cannot be disabled through a binding. This is because the `disabled`
input did not set the `.mat-button-disabled` class on the host element.

Fixes #1234

Coding Rules

To ensure consistency throughout the source code, keep these rules in mind:

Write Tests

All features or bug fixes must be tested

Document APIs

All public API methods must be documented

Follow Style Guide

100 Column Limit

Wrap all code at 100 characters
See the complete Coding Standards guide for details.

After Your PR is Merged

1

Delete your branch

# Delete remote branch
git push origin --delete my-fix-branch

# Delete local branch
git branch -D my-fix-branch
2

Update your main branch

git checkout main
git pull --ff upstream main
3

Celebrate!

🎉 Thank you for contributing to Angular Material!

Development Setup

See the Developer Environment guide for detailed setup instructions. Quick start:
# Clone your fork
git clone https://github.com/YOUR_USERNAME/components.git
cd components

# Install dependencies
pnpm install

# Start dev server
pnpm dev-app

# Run tests
pnpm test button

Review Process

1

Automated checks

CI runs automatically:
  • Linting
  • Unit tests
  • Integration tests
  • Build verification
2

Code review

Team members review:
  • Code quality
  • Test coverage
  • Documentation
  • Breaking changes
3

Approval

PRs need approval from:
  • One team member (small changes)
  • Two team members (significant changes)
4

Merge

Once approved and passing:
  • PR is squashed and merged
  • Commit follows format conventions
  • Appears in next release

Recognition

All contributors are recognized in release notes and the contributors list.

First Contribution

Get a special “first contribution” badge

Frequent Contributors

Become a recognized community member

Major Features

Featured in release announcements

Maintainer

Outstanding contributors may be invited as maintainers

Resources

Coding Standards

Detailed coding guidelines

Dev Environment

Setup your development environment

GitHub Repo

Angular Components repository

Issue Tracker

Report and track issues

Code of Conduct

Help us keep Angular open and inclusive. Please read and follow our Code of Conduct.
Violations of the Code of Conduct will not be tolerated.

Build docs developers (and LLMs) love