Before You Start
All contributions must begin with a GitHub Issue, unless the change is for:- Small bug fixes
- Typo corrections
- Minor wording improvements
- Simple type fixes that don’t change functionality
For Features and Contributions
Check existing discussions
First check the Feature Requests discussions board for similar ideas.
Create a feature request
If your idea is new, create a new feature request with a clear description of the problem and proposed solution.
Writing and Submitting Code
1. Keep Pull Requests Focused
- Limit PRs to a single feature or bug fix
- Split larger changes into smaller, related PRs
- Break changes into logical commits that can be reviewed independently
2. Code Quality
- Linting
- Formatting
- Type Safety
Check code style:All PRs must pass CI checks which include linting.
3. Testing
Add tests for new features
Add tests for new features
Every new feature should include appropriate tests:
- Unit tests for individual functions
- Integration tests for component interactions
- E2E tests for user-facing features
Run tests before submitting
Run tests before submitting
Ensure all tests pass:
Update existing tests
Update existing tests
If your changes affect existing functionality, update the relevant tests.
4. Version Management with Changesets
Create a changeset for any user-facing changes:Choose the version bump
Select the appropriate version bump:
major→ breaking changes (1.0.0 → 2.0.0)minor→ new features (1.0.0 → 1.1.0)patch→ bug fixes (1.0.0 → 1.0.1)
Documentation-only changes don’t require changesets.
5. Commit Guidelines
- Write clear, descriptive commit messages
- Use conventional commit format:
feat:for new featuresfix:for bug fixesdocs:for documentationrefactor:for refactoringtest:for test changeschore:for maintenance tasks
- Reference relevant issues using
#issue-number
6. Before Submitting
7. Pull Request Description
Your PR description should:- Clearly describe what your changes do
- Include steps to test the changes
- List any breaking changes
- Add screenshots for UI changes
- Reference the related issue(s)
Creating a Pull Request
Code Style Guidelines
TypeScript
- Use TypeScript strict mode
- Prefer interfaces over types for object shapes
- Use meaningful variable and function names
- Add JSDoc comments for public APIs
- Avoid
any- use proper types orunknown
React Components
- Use functional components with hooks
- Keep components small and focused
- Extract reusable logic into custom hooks
- Use TypeScript for prop types
File Organization
- One component per file
- Co-locate tests with source files
- Use index files for cleaner imports
- Group related files in directories
Documentation
Code Comments
- Write self-documenting code when possible
- Add comments for complex logic
- Use JSDoc for public APIs
- Explain the “why” not the “what”
Documentation Updates
If your changes affect user-facing features:- Update relevant documentation in
/docs - Add examples where helpful
- Update screenshots if UI changed
- Consider adding a how-to guide
Review Process
What to Expect
- Automated checks: CI will run tests, linting, and type checking
- Changeset validation: Changesetbot comments on version impact
- Code review: Maintainers will review your code
- Feedback: You may receive requests for changes
- Approval: Once approved, your PR will be merged
Responding to Feedback
- Be responsive to review comments
- Ask questions if feedback is unclear
- Make requested changes in new commits
- Mark conversations as resolved when addressed
- Be patient and respectful
Linux-Specific Development
If you’re developing on Linux, you’ll need additional system libraries for running tests. See the Setup Guide for details.Getting Help
If you need help:- Check existing documentation
- Search existing issues
- Ask in discussions
- Reach out to maintainers in your PR
Recognition
All contributors are recognized in:- The project’s README
- Release notes (via changesets)
- GitHub’s contributor graph
Next Steps
Testing Guide
Learn how to test your changes
Code of Conduct
Read our code of conduct