Looking to contribute? We're excited to have you! ✨
While Reshaped is open-source, we might be quite opinionated about what should be included in the library. There are multiple reasons for this:
- We need to make sure all changes make sense in long term. We make a maximum of 1 major release per year and a lot of the APIs should be stable for years to come.
- All changes we're making in code are always synced with the Figma library and sometimes are decisions and priorities are impacted by the features available in Figma.
- We make sure that maintenance of Reshaped is sustainable for us so we might be saying no to some ideas just because of their maintenance cost. Instead we would encourage the community to build their solutions on top of Reshaped.
It's always a good idea to start with the reported bugs, missing tests and/or storybook examples. For all new features, we recommend to start with a feature proposal first where we can discuss its implementation details.
- Make sure you're using
pnpmas the package manager. - Run
pnpm installto install the dependencies. - Run
pnpm devto start Storybook and start developing.
- All component tests we write are running directly in Storybook and you can see their results in the action panel of a specific component. You can also run all component using the storybook test widget in the browser.
- All unit tests for other utilities can be executed using
pnpm test:unit. - Visual regression testing access is limited to the repository maintainers and will be triggered manually before the release or for pull requests with major changes.
We use Changesets to manage versions and generate changelogs.
Every PR with user-facing changes should include a changeset:
-
Run
pnpm changesetand follow the prompts to choose the bump type:- patch: bug fixes and internal tweaks
- minor: backward-compatible feature additions
- major: breaking changes (rare; coordinate with maintainers first)
-
Write a concise summary describing what changed and why. This becomes part of the changelog.
-
Commit the generated
.mdfile under.changeset/directory with your PR.
pnpm changeset– create a new changesetpnpm changeset:status– preview what will be releasedpnpm version– consume all changesets and bump package version (used during release)