🧩 Essential Extensions for Web Development
VS Code out of the box is a fast, capable text editor. Extensions are what turn it into a full IDE tuned to your stack — catching bugs as you type, formatting on save, reloading the browser for you, and revealing the story behind every line of code. This lesson picks the extensions that actually earn their place and shows you how to manage them without bogging your editor down.
🎯 Learning Objectives
By the end of this lesson, you will be able to:
- Explain what an extension is and how it changes VS Code's behavior
- Install and configure a core toolkit — ESLint, Prettier, Live Server, GitLens — across JavaScript, Python, and PHP work
- Wire up format-on-save and pick the right default formatter so your team never argues about style again
- Share a consistent setup with a project's .vscode/extensions.json and Settings Sync
- Audit extensions for performance and security, keeping only what pays for itself
Estimated Time: 30–40 minutes • Difficulty: Beginner
Hands-on: Build a project-specific extension recommendation file and turn on format-on-save.
In This Lesson
What Extensions Actually Do
An extension is a small package that plugs into VS Code and adds a capability the core editor doesn't ship with — a new language's IntelliSense, a formatter, a Git overlay, a browser preview. If VS Code is a smartphone, extensions are the apps: the phone is useful on its own, but the apps make it yours.
💡 Why not just an "all-in-one" IDE? VS Code stays fast precisely because it ships lean and lets you add only what you need. A Python data scientist and a WordPress developer both start from the same editor and end up with very different — but equally lightweight — setups.
Extensions live in the Marketplace. You install them from the Extensions view (Ctrl+Shift+X) or from the command line. Every extension in this lesson can be installed by opening the Quick Open bar (Ctrl+P) and pasting its ext install command, or by searching its name in the Extensions view.
📖 Key Terms
Marketplace: Microsoft's registry of publicly available VS Code extensions.
Extension ID: the unique publisher.name string (e.g. esbenp.prettier-vscode) used to install one precisely.
Linter: a tool that analyzes code for errors and style problems without running it.
Formatter: a tool that rewrites your code's whitespace and layout to a consistent style.
The Five Categories
It helps to think about extensions by the job they do rather than as a long shopping list. Almost everything worth installing falls into one of five buckets:
Pick one or two from each category and you have a complete environment. The rest of this lesson walks through the highest-value picks and how to configure them.
The Core Toolkit
These are the extensions worth installing on day one, no matter which stack you work in. Each row lists the extension ID so you can install it precisely.
Language support
| Extension | Extension ID | Why it earns its place |
|---|---|---|
| ESLint | dbaeumer.vscode-eslint | Flags JavaScript/TypeScript bugs and style issues inline as you type, and can auto-fix many of them. |
| Python | ms-python.python | IntelliSense, debugging, and environment selection; pairs with ms-python.vscode-pylance for fast type-aware completion. |
| PHP Intelephense | bmewburn.vscode-intelephense-client | Fast, accurate PHP completion, go-to-definition, and diagnostics. |
Web & workflow
| Extension | Extension ID | Why it earns its place |
|---|---|---|
| Prettier | esbenp.prettier-vscode | Opinionated formatter for JS, CSS, HTML, JSON, Markdown and more — ends every style debate. |
| Live Server | ritwickdey.LiveServer | Serves a local page with automatic reload on every save — the fastest static-file feedback loop. |
| Auto Rename Tag | formulahendry.auto-rename-tag | Renames the matching HTML/JSX tag when you edit its pair, so tags never drift out of sync. |
| GitLens | eamodio.gitlens | Inline blame, history, and authorship so you can answer "who changed this and why?" instantly. |
| Path IntelliSense | christian-kohler.path-intellisense | Autocompletes file paths in imports and src attributes, eliminating a whole class of typos. |
| Todo Tree | Gruntfuggly.todo-tree | Collects every TODO/FIXME comment into a browsable tree in the sidebar. |
⚠️ Some old favorites are now built in
You'll see older tutorials recommend Bracket Pair Colorizer and Indent Rainbow for readability. VS Code now colors matching brackets natively — no extension needed. Turn it on in settings:
{
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": "active"
}
Installing the extension version on top of the built-in feature just wastes memory.
Formatting on Save
The single highest-leverage configuration you can make is format-on-save. Once it's on, you stop thinking about indentation and quotes entirely — the file snaps into a consistent shape every time you hit Ctrl+S. Here's a settings block that sets Prettier as the default formatter and formats on save:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"editor.tabSize": 2,
"prettier.singleQuote": true,
"prettier.semi": true
}
📖 Prettier vs. ESLint — do I need both?
Yes, and they do different jobs. Prettier handles formatting (how the code looks: spacing, line breaks, quotes). ESLint handles code quality (unused variables, likely bugs, banned patterns). Run Prettier for layout and let ESLint catch mistakes. The source.fixAll.eslint action above lets ESLint auto-fix what it safely can, every time you save.
You can scope a formatter per language too. For example, keep Prettier for web files but let the Python extension format Python:
{
"[python]": {
"editor.defaultFormatter": "ms-python.python",
"editor.formatOnSave": true
}
}
✅ The payoff
With format-on-save enabled team-wide, diffs stay clean, code reviews focus on logic instead of style nits, and every file in the repo looks like one person wrote it.
Framework-Specific Tools
Once you commit to a frontend framework, one or two dedicated extensions dramatically speed up your work. Add these on top of the core toolkit — not instead of it.
⚠️ Vue tooling has moved on
Older guides recommend Vetur for Vue. For Vue 3, the current tooling is Vue - Official (formerly Volar), extension ID Vue.volar. Don't run Vetur and Volar at the same time — they conflict.
A typical React snippet in action: the ES7+ React/Redux snippets extension expands rafce into a complete arrow-function component with an export:
const ComponentName = () => {
return <div>ComponentName</div>;
};
export default ComponentName;
Performance & Security Hygiene
Every active extension consumes memory and can slow startup. Extensions also run with access to your code and, in some cases, your file system — so a little discipline pays off.
✅ Do
- Install only what you use. If you haven't opened an extension's feature in a month, remove it.
- Check the publisher and stats. Prefer extensions with many installs, recent updates, and a verified or well-known publisher.
- Use the built-in profiler. Run Developer: Show Running Extensions from the Command Palette to see which extensions are slow to activate.
- Disable per-workspace. You can disable a heavy extension in projects that don't need it while keeping it globally.
❌ Don't
- Don't install duplicates of built-in features (bracket colorizing, basic Git).
- Don't grant workspace trust blindly. Some extensions run code from the folder you open; only trust folders you know.
- Don't hoard. Ten focused extensions beat forty half-used ones.
⚠️ Security reminder: An extension can read every file in your workspace. Treat installing one like adding a dependency to your project — from an unknown publisher, that's a real supply-chain risk.
Hands-on Exercise
🏋️ Build a Shareable Web Dev Environment
Objective: Create a project that recommends a consistent toolset and formats itself on save.
Instructions:
- Create an empty folder and open it in VS Code.
- Add a
.vscode/extensions.jsonrecommending ESLint, Prettier, Live Server, and Auto Rename Tag. - Add a
.vscode/settings.jsonthat enableseditor.formatOnSaveand sets Prettier as the default formatter. - Install the recommended extensions when VS Code prompts you.
- Create a messy
index.html(inconsistent indentation, mixed quotes), save it, and watch Prettier clean it up. - Right-click
index.html→ Open with Live Server and edit the page; confirm the browser reloads on save.
💡 Hint
Both files go inside a folder literally named .vscode at the project root. If format-on-save doesn't fire, open the Command Palette and run Format Document With… to confirm Prettier is the selected formatter, then check for a conflicting editor.defaultFormatter.
✅ Example solution
.vscode/extensions.json:
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ritwickdey.LiveServer",
"formulahendry.auto-rename-tag"
]
}
.vscode/settings.json:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"prettier.singleQuote": true
}
Saving a badly-indented HTML file should now instantly re-indent it and normalize the quotes.
🎯 Quick Quiz
Question 1: What is the difference between Prettier and ESLint?
Question 2: You want every teammate opening a repo to be prompted to install the same extensions. Which file do you add?
Question 3: Which of these should you not install as a separate extension in current VS Code?
Summary & Quiz
🎉 Key Takeaways
- Extensions turn a lean editor into a stack-specific IDE — install by category, not by hoarding.
- A universal core toolkit (ESLint, Prettier, Live Server, GitLens) serves JavaScript, Python, and PHP work alike.
- Format-on-save with a clear default formatter is the single highest-leverage setting you can enable.
- Share setups with
.vscode/extensions.jsonfor teams and Settings Sync for yourself. - Audit regularly: remove unused extensions, prefer trusted publishers, and let built-in features replace old add-ons.
📚 Further Reading
- VS Code — Extension Marketplace docs
- VS Code — User and Workspace Settings
- Prettier — Getting started
🚀 What's Next?
Now that your editor is fully equipped, the next lesson makes you fast inside it — the keyboard shortcuts and multi-cursor techniques that let you edit at the speed of thought.
🎉 Well done!
Your VS Code is now a real web development IDE. Let's learn to fly around it.