Link Search Menu Expand Document


This project is intended to be a safe, welcoming space for collaboration. By participating in this project you agree to abide by the Contributor Code of Conduct.

Hi there! We’re thrilled that you’d like to contribute to this project. Your help is essential for keeping it great.

If you have any substantial changes that you would like to make, please open an issue first to discuss them with us.

Contributions to this project are released to the public under the project’s open source license.

Submitting a pull request

  1. Fork and clone the repository.
  2. Configure and install the dependencies: bundle.
  3. Make sure the tests pass on your machine: bundle exec rake. (Run a subset of tests by supplying a file glob to the test command: TEST="test/components/YOUR_COMPONENT_test.rb" bundle exec rake)
  4. Create a new branch: git checkout -b my-branch-name.
  5. Make your change, add tests, and make sure the tests still pass.
  6. Add an entry to the top of docs/ for your changes, no matter how small they are. We want to recognize your contribution!
  7. If it’s your first time contributing, add yourself to docs/
  8. Push to your fork and submit a pull request.
  9. Pat yourself on the back and wait for your pull request to be reviewed and merged.

Here are a few things you can do that will increase the likelihood of your pull request being accepted:

  • Write tests.
  • Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
  • Write a good commit message.


Previewing changes locally

  1. Navigate to /docs.
  2. Configure and install the dependencies: bundle.
  3. Run Jekyll: bundle exec jekyll serve.
  4. Open the docs site at
  5. If making changes to the API, run bundle exec rake docs:build to generate docs/ from YARD comments.

Style guidelines

  • Keep it short.
  • Avoid unclear antecedents. Use the method name is too long instead of it is too long.
  • Avoid you, we, your, our.
  • Write in the active voice, avoiding the passive voice.
  • Refer to methods as #instance_method and .class_method.
  • Use the simplest examples possible.

Don’t be afraid to ask for help! We recognize that English is not the first language of many folks who contribute to ViewComponent.


If you are the current maintainer of this gem:

  1. Run ./script/release and follow the instructions.


ViewComponent is built by over a hundred members of the community. Project membership has three levels:


ViewComponent triagers are able to manage issues and pull request by assigning owners and labels, closing issues and marking duplicates.

After helping with the project by participating in issues, pull requests, and/or discussions, members of the community are welcome to request triage access by opening a pull request to update this list:

The triagers team is @andrewmcodes, @bbugh, @boardfish, @cesariouy, @dark-panda, @dylnclrk, @g13ydson, @horacio, @jcoyne, @johannesengl, @kaspermeyer, @mellowfish, @metade, @nashby, @rainerborene, @rdavid1099, @spdawson, and @vinistock.

Committers and maintainers may also nominate triagers by opening a pull request to update this list.


ViewComponent committers have write access, enabling them to push directly to the repository and approve/merge pull requests. Committers often have implicit ownership over a particular area of the project, such as previews, generators, or translations.

Triagers are invited to become committers by having an existing committer or maintainer open a pull request on the repository to update this list of committers:

The committers team is @elia, @jonspalmer, @juanmanuelramallo, @rmacklin, and @spone.


ViewComponent maintainers have admin access, enabling them to manage repository settings including access levels. They also have ownership of view_component on RubyGems and are required to have 2FA enabled for their GitHub and RubyGems accounts.

Maintainership is open by invitation only at this time.

The maintainers team is @camertron, @blakewilliams, @joelhawksley, @jonrohan, and @manuelpuyol.