We welcome contributions from the community! Whether you're fixing bugs, adding new components, improving documentation, or proposing new features, your contributions help make Blend better for everyone.
- GitHub Discussions: Ask questions and share ideas
- Issues: Report bugs and request features
- Node.js 18+
- pnpm (recommended package manager)
- Git for version control
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/blend-design-system.git
cd blend-design-system
# Add upstream remote
git remote add upstream https://github.com/juspay/blend-design-system.gitpnpm install
# Build the design system
pnpm build
# Start development mode
pnpm dev# Create a new branch for your feature
git checkout -b feature/your-feature-name
# Make your changes
# ...
# Build to ensure everything works
pnpm buildUnderstanding the monorepo structure:
blend-design-system/
├── packages/
│ └── blend/ # Main design system package
│ ├── lib/
│ │ ├── components/ # React components
│ │ ├── tokens/ # Design tokens
│ │ ├── hooks/ # Custom hooks
│ │ └── context/ # Theme context and providers
├── apps/
│ ├── ascent/ # Documentation site
│ ├── storybook/ # Component playground
│ ├── site/ # Marketing / main site
│ └── blend-monitor/ # Monitoring / analytics app
- Check existing issues before creating new ones
- Include reproduction steps and expected vs actual behavior
- Update documentation if needed
Example Bug Fix Process:
git checkout -b fix/button-disabled-state
# Make your fix
# Update docs if needed
git commit -m "fix: button disabled state styling"
git push origin fix/button-disabled-stateDocumentation improvements are always welcome:
- Improve existing component documentation
- Add usage examples and best practices
- Update getting started guides
- Fix typos and improve clarity
When proposing design token changes:
- Create an issue first to discuss the change
- Ensure backward compatibility where possible
- Update all affected components
- Include design rationale and use cases
Each component should include:
- API Reference
- Usage Examples
- Accessibility
- Do’s and Don’ts
- Document complex logic and business rules
- Explain design decisions and trade-offs
- Link to relevant design specifications
- Build successfully:
pnpm build - Run relevant tests: for example,
pnpm test:blendfor Blend package changes - Run lint checks:
pnpm lint - Run formatting checks:
pnpm format:check - Update documentation if needed
type(scope): brief description
Examples:
feat(button): add loading state
fix(modal): resolve focus trap issue
docs(getting-started): update installation guide
### Summary
<!-- Write a brief summary of your changes -->
### Issue Ticket
Closes #[issue_number] or Related to #[issue_number]- Automated checks must pass
- Design team review for UI changes
- Code review by maintainers
- Documentation review if applicable
- Final approval and merge
Every pull request to main or dev automatically publishes an ephemeral preview build of @juspay/blend-design-system via pkg.pr.new. You do not need to clone the repo, run a local build, or use yalc to test someone else's PR.
Look for the sticky comment from the pkg-pr-new bot near the top of the PR. It contains a one-line install command you can paste into any consumer app:
pnpm add https://pkg.pr.new/@juspay/blend-design-system@<commit-sha>The URL is immutable and tied to the exact commit. Force-pushing the PR branch updates the sticky comment in place with a new URL.
This repository uses Changesets to manage versions and release notes.
If your change affects published packages, you must add a changeset:
pnpm changesetThis will prompt you to:
- Select affected packages
- Choose patch / minor / major
- Write a summary for the changelog
Commit the generated file along with your changes.
We follow Semantic Versioning:
- Patch (1.0.1): Bug fixes
- Minor (1.1.0): New features (backward compatible)
- Major (2.0.0): Breaking changes
Release notes are generated from Changesets and include:
- Bug fixes and improvements
- New features and components
- Breaking changes
- Contributor acknowledgements
Build failures:
rm -rf node_modules pnpm-lock.yaml
pnpm installTypeScript errors:
- Check exports in
index.ts - Verify type definitions
- Ensure imports are typed
- Check documentation and issues
- Ask in GitHub Discussions
- Reach out to maintainers
- Storybook
- TypeScript
- ESLint
- Figma
- Design Tokens
- React
- TypeScript
Thank you for contributing to Blend Design System!
Every contribution—big or small—helps improve the ecosystem for everyone.
Welcome to the community! 🎉