Overview
This guide covers the pull request (PR) process for contributing code to Visual Studio Code. Following these guidelines helps ensure your contributions can be reviewed and merged efficiently.Before submitting a pull request, make sure you’ve read the How to Contribute guide and Coding Guidelines.
Prerequisites
Before creating a pull request:Set Up Development Environment
Follow the How to Contribute guide to:
- Fork and clone the repository
- Install dependencies
- Build from source
- Run VS Code in development mode
Find or Create an Issue
Associate your PR with an existing issue, or create one first to discuss the proposed changes.
Before Submitting
Code Quality Checklist
Ensure your code meets these requirements:Follows Coding Guidelines
Follows Coding Guidelines
- Uses tabs for indentation (not spaces)
- Follows naming conventions (PascalCase for types, camelCase for functions)
- Includes JSDoc comments for public APIs
- Externalizes user-facing strings with
nls.localize() - Uses proper TypeScript types (avoids
any)
Compiles Without Errors
Compiles Without Errors
Run the build to check for TypeScript compilation errors:Fix all errors before submitting.
Passes All Tests
Passes All Tests
Run the test suites to ensure nothing breaks:
Includes Tests for Changes
Includes Tests for Changes
Add new tests for:
- New features
- Bug fixes (reproduce the bug, then fix it)
- Changes to existing behavior
- Unit tests:
src/vs/*/test/folders - Integration tests:
test/folder or extension tests
Passes Layering Check
Passes Layering Check
Verify no architectural layer violations:
Keep Code Up to Date
Creating the Pull Request
PR Title
Write a clear, concise title that describes what the PR does:- Good Examples
- Bad Examples
- Fix hover flickering in editor
- Add support for workspace trust API
- Improve performance of file search
- Update TypeScript to 5.3
PR Description
Provide a comprehensive description following the template:PR Template Checklist
PR Template Checklist
The template ensures you include:
- Associated issue: Link using
Fixes #issue-numberorRelates to #issue-number - Description of changes: What was changed and why
- Testing instructions: How reviewers can verify the changes
- Visual evidence: Screenshots or videos for UI changes
Draft vs Ready
- Draft PR
- Ready PR
Use draft PRs when:
- Work is still in progress
- You want early feedback
- Tests are not yet passing
PR Review Process
What to Expect
Once you submit your PR:Automated Checks
CI/CD pipelines run automatically:
- Build verification
- Test execution
- Code analysis
- Layering checks
Team Review
VS Code team members will review your PR:
- Code quality
- Design decisions
- Test coverage
- Documentation
Feedback & Iteration
Address review feedback:
- Make requested changes
- Respond to questions
- Push new commits
Don’t force-push after review starts - it makes it harder to see what changed.
Response Time
You can help speed up the process by:- Keeping PRs focused and reasonably sized
- Providing clear descriptions and test instructions
- Responding promptly to review comments
- Following coding guidelines
Responding to Feedback
Making Changes
When reviewers request changes:- Make the requested changes in your local branch
- Commit the changes with clear commit messages
- Push to your fork - the PR updates automatically
Discussing Feedback
If you disagree with feedback or need clarification:- Ask questions: Use PR comments to discuss
- Explain your reasoning: Share why you made certain choices
- Be open to learning: Maintainers know the codebase well
- Stay professional: Keep discussions respectful and constructive
Example Discussion
Example Discussion
Reviewer: “Consider using a Map instead of an object here for better performance.”You: “Thanks for the suggestion! I chose an object because:
- The keys are always strings in this case
- The data set is small (< 10 items)
- An object is more ergonomic for this use case
- Considered the feedback
- Explained your reasoning
- Remained open to changing
Common Issues
Build Failures
If CI builds fail:TypeScript Compilation Errors
TypeScript Compilation Errors
Test Failures
Test Failures
Layering Violations
Layering Violations
Merge Conflicts
Merge Conflicts
PR Not Getting Attention
If your PR hasn’t received a review:Best Practices
Keep PRs Focused
Write Clear Commit Messages
Commit messages should explain the “why” not just the “what”:- Good Commit Messages
- Poor Commit Messages
Document Breaking Changes
Breaking changes should:- Be discussed in the related issue first
- Include migration guidance
- Be clearly marked in the PR description
Test Thoroughly
Before submitting:- Manual testing: Actually use the feature you built
- Automated tests: Run the full test suite
- Edge cases: Test unusual scenarios
- Performance: Ensure no performance regressions
Testing Checklist
Testing Checklist
- Feature works as expected
- Existing features still work
- All unit tests pass
- All integration tests pass
- No console errors or warnings
- Works across different operating systems (if applicable)
- Performance is acceptable
After Your PR is Merged
Cleanup
Once merged, you can:Track Your Contribution
Your changes will:- Appear in the next VS Code release
- Be included in the release notes (for significant changes)
- Be attributed to you in the git history
Additional Resources
How to Contribute
Getting started guide
Coding Guidelines
Code style standards
Issue Triaging
Understanding issue workflow
Wiki
Comprehensive documentation
Questions?
If you have questions about the PR process:- Review the How to Contribute wiki
- Ask on Stack Overflow
- Comment on the related issue
- Join the VS Code Dev Community
Thank you for contributing to VS Code! Every contribution, large or small, helps make VS Code better for everyone.