Contributing
Thank you for your interest in contributing to Vuetify0! This guide will help you get started.
Getting Started
Before contributing, please:
Read the Getting Started guide to understand the project
Review existing issues↗
Join our Discord community↗ for questions
Reporting Issues
Bug Reports
When reporting bugs, please include:
A clear, descriptive title
Steps to reproduce the issue
Expected vs actual behavior
Browser and OS information
A minimal reproduction (preferably a link to a repo or CodeSandbox)
Feature Requests
For new features:
Check if it’s already been requested in issues↗
Explain the use case and why it would benefit others
Consider if it fits the headless/composable philosophy of Vuetify0
Local Development
Prerequisites
Node.js 20.19+ or 22+
pnpm 10.6+
Git
Setup
# Clone the repository
git clone https://github.com/vuetifyjs/0.git
cd 0
# Install dependencies
pnpm install
# Start the playground
pnpm dev
# Start the docs site
pnpm dev:docsProject Structure
├── packages/
│ └── 0/ # @vuetify/v0 - main package
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── composables/ # Composable functions
│ │ ├── utilities/ # Helper functions
│ │ └── types/ # TypeScript types
├── apps/
│ ├── docs/ # Documentation site
│ └── storybook/ # Storybook stories
└── playground/ # Development playgroundUseful Commands
# Development
pnpm dev # Start playground
pnpm dev:docs # Start docs site
# Testing
pnpm test # Run tests in watch mode
pnpm test:run # Run tests once
# Type checking
pnpm typecheck # Check all packages
# Linting
pnpm lint # Lint codebase
pnpm lint:fix # Auto-fix lint issues
# Building
pnpm build # Build packagesPull Requests
Before Submitting
Create a new branch from
masterMake your changes
Run
pnpm lint:fixto fix formattingRun
pnpm typecheckto check typesRun
pnpm test:runto verify tests passWrite tests for new functionality
PR Guidelines
Keep PRs focused - one feature or fix per PR
Write a clear title and description
Reference any related issues
Be responsive to feedback
Branch Naming
Use descriptive branch names:
fix/issue-description- Bug fixesfeat/feature-name- New featuresdocs/what-changed- Documentation updatesrefactor/what-changed- Code refactoring
Commit Messages
Follow the Conventional Commits↗ format:
type(scope): subjectTypes
feat- New featurefix- Bug fixdocs- Documentation changesrefactor- Code refactoringtest- Adding or updating testschore- Maintenance tasks
Examples
feat(useSelection): add toggle method
fix(ExpansionPanel): correct aria-expanded state
docs(getting-started): update installation instructions
refactor(useRegistry): simplify reindex logic
test(useForm): add validation edge casesGuidelines
Use imperative mood (“add” not “added”)
Keep the subject under 60 characters
Don’t end with a period
Reference issues when applicable:
fix(useForm): validation error (#123)
Code Style
General
Use TypeScript for all new code
Follow existing patterns in the codebase
Prefer
functiondeclarations overconstarrow functionsUse single-word variable names when clear
Add JSDoc comments for public APIs
Composables
Place in
packages/0/src/composables/Each composable in its own directory with
index.tsInclude
@moduleJSDoc block at the topColocate tests as
index.test.tsExport both standalone and context-creation functions
Components
Follow the compound component pattern (Root/Item)
Extend
AtomPropsfor polymorphic componentsUse
useProxyModelfor v-model bindingInclude proper ARIA attributes
Testing
Write tests for new composables and components
Focus on behavior, not implementation details
Test edge cases and error conditions
Use
describeblocks to organize related tests
describe('useSelection', () => {
it('should select an item', () => {
// ...
})
it('should respect mandatory option', () => {
// ...
})
})Skillz Feedback
Vuetify0 Skillz is our interactive tutorial system currently in beta. We’re actively developing new content and improving the learning experience.
How to Give Feedback
Content issues: Typos, unclear instructions, or incorrect examples
Technical problems: Bugs in the interactive editor or validation
Suggestions: New skill ideas or improvements to existing ones
When reporting issues, please include:
The skill name and step number
What you expected vs what happened
Browser and OS information
Thank you for contributing!