Extensions can transform VS Code or bury it under bloat. The trick is installing a small, deliberate set that solves real friction rather than collecting every shiny plugin.
The dependable core
These cover formatting, linting, and version-control context — the things you touch on almost every project.
ESLint Inline lint feedback as you type
Prettier Consistent formatting on save
GitLens Blame, history, and authorship inline
EditorConfig Enforce shared whitespace rules
Error Lens Surfaces diagnostics right on the lineFormat on save
Most formatting extensions do nothing until you tell the editor to use them. Wire it up in settings so it's automatic.
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
}
}Share the set with your team
A .vscode/extensions.json file recommends extensions to anyone who opens the
repo, so onboarding is one click.
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"eamodio.gitlens",
"usernamehw.errorlens"
]
}Takeaways
- Install a deliberate core, not everything that looks interesting.
- Configure format-on-save so tooling runs without thinking about it.
- Commit
extensions.jsonso the team shares one recommended set.
Audit your extensions occasionally — each one adds startup time, and abandoned plugins are a security and performance liability.