Skip to main content

🧩 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:

flowchart TD A[VS Code Core] --> B[Language Support] A --> C[Formatting & Linting] A --> D[Web & Markup Tools] A --> E[Version Control] A --> F[Productivity] B --> B1[IntelliSense · debugging] C --> C1[ESLint · Prettier] D --> D1[Live Server · Auto Rename Tag] E --> E1[GitLens · Git History] F --> F1[Path IntelliSense · Todo Tree]

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

ExtensionExtension IDWhy it earns its place
ESLintdbaeumer.vscode-eslintFlags JavaScript/TypeScript bugs and style issues inline as you type, and can auto-fix many of them.
Pythonms-python.pythonIntelliSense, debugging, and environment selection; pairs with ms-python.vscode-pylance for fast type-aware completion.
PHP Intelephensebmewburn.vscode-intelephense-clientFast, accurate PHP completion, go-to-definition, and diagnostics.

Web & workflow

ExtensionExtension IDWhy it earns its place
Prettieresbenp.prettier-vscodeOpinionated formatter for JS, CSS, HTML, JSON, Markdown and more — ends every style debate.
Live Serverritwickdey.LiveServerServes a local page with automatic reload on every save — the fastest static-file feedback loop.
Auto Rename Tagformulahendry.auto-rename-tagRenames the matching HTML/JSX tag when you edit its pair, so tags never drift out of sync.
GitLenseamodio.gitlensInline blame, history, and authorship so you can answer "who changed this and why?" instantly.
Path IntelliSensechristian-kohler.path-intellisenseAutocompletes file paths in imports and src attributes, eliminating a whole class of typos.
Todo TreeGruntfuggly.todo-treeCollects 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.

Recommended extensions per frontend framework Three columns — React, Vue, and Angular — each listing the key VS Code extensions to install for that framework. React ES7+ React Snippets ESLint (React rules) Prettier Auto Rename Tag type "rafce" → component Vue Vue - Official (Volar) Vue VSCode Snippets ESLint + Prettier TypeScript Vue Plugin Volar replaces old Vetur Angular Angular Language Service Angular Snippets ESLint + Prettier Debugger (built-in) template type-checking
Figure 1 — A starting extension set for each major frontend framework. Notice ESLint and Prettier appear in all three — the fundamentals travel with you.

⚠️ 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;

Sharing & Syncing a Setup

Two mechanisms keep your carefully-built environment from being a one-machine snowflake.

1. Per-project recommendations

Drop a .vscode/extensions.json file into a repo and every teammate who opens it gets a prompt: "This workspace recommends installing these extensions." It's the friendliest way to onboard a new contributor.

{
  "recommendations": [
    "dbaeumer.vscode-eslint",
    "esbenp.prettier-vscode",
    "ritwickdey.LiveServer",
    "formulahendry.auto-rename-tag",
    "eamodio.gitlens"
  ]
}

2. Settings Sync (across your own machines)

Settings Sync is built into VS Code. It carries your extensions, settings, keybindings, and themes between your office desktop, laptop, and any machine you sign into:

  1. Click the gear icon (bottom-left) → Turn on Settings Sync…
  2. Choose what to sync (extensions, settings, keybindings, snippets, UI state).
  3. Sign in with a GitHub or Microsoft account.

💡 Two tools, two purposes

extensions.json shares a setup with a team on a project. Settings Sync carries your personal setup between your devices. Use both.

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:

  1. Create an empty folder and open it in VS Code.
  2. Add a .vscode/extensions.json recommending ESLint, Prettier, Live Server, and Auto Rename Tag.
  3. Add a .vscode/settings.json that enables editor.formatOnSave and sets Prettier as the default formatter.
  4. Install the recommended extensions when VS Code prompts you.
  5. Create a messy index.html (inconsistent indentation, mixed quotes), save it, and watch Prettier clean it up.
  6. Right-click index.htmlOpen 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.json for 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

🚀 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.