Most of VS Code's power comes from extensions; choosing and managing them well keeps it fast and consistent.
Open the Extensions view with Ctrl+Shift+X. Each extension has an ID in the form publisher.name, such as ms-python.python or dbaeumer.vscode-eslint. Prefer verified publishers and widely used extensions; an extension runs code with your user's permissions.
What to install typically:
- Language support: VS Code has basic support for many languages built in, but rich IntelliSense, debugging and testing come from extensions (Python, Go, Rust Analyzer, C#, Java...). They usually run a language server in the background.
- Linters and formatters: ESLint, Prettier, Ruff...
- Tools: Docker, remote development, GitLens, REST clients.
Managing them:
- Disable an extension for a workspace when a project does not need it; fewer active extensions means faster startup.
- The command line works too:
code --install-extension ms-python.python,code --list-extensions. .vscode/extensions.jsonwith a"recommendations"list makes VS Code prompt teammates to install the project's extensions, a lightweight way to standardise tooling.
Extensions contribute commands (search "ExtensionName:" in the palette), settings (filter the Settings UI by @ext:publisher.name) and keybindings. If something misbehaves, "Help: Start Extension Bisect" finds the culprit by disabling half of the extensions at a time.
Example
code --install-extension ms-python.python
code --install-extension dbaeumer.vscode-eslint
code --list-extensions --show-versions | head -3
# dbaeumer.vscode-eslint@<version>
# ms-python.python@<version>
# ...
# .vscode/extensions.json (prompt teammates to install these)
cat > .vscode/extensions.json <<'EOF'
{
"recommendations": ["ms-python.python", "charliermarsh.ruff"],
"unwantedRecommendations": ["ms-python.autopep8"]
}
EOFRemember
- Extension IDs are publisher.name; install from the view or with code --install-extension
- .vscode/extensions.json recommends extensions to the team
- Disable per workspace; Extension Bisect finds a misbehaving one
Watch out for
- Installing dozens of overlapping extensions (several formatters for one language) that fight each other.