CoderJony
HomeBlogAboutContact
CoderJony

Full-stack engineering, cloud architecture, and scalable systems

ankushjain358@gmail.com
© 2026 CoderJony. All rights reserved.
CoderJony
HomeBlogAboutContact
Back to Articles

How Settings Work in Visual Studio Code (Under the Hood)

A
Ankush Jain
February 14, 2026
Developer ToolsVS Code
How Settings Work in Visual Studio Code (Under the Hood)

Most developers use settings in VS Code daily, but very few actually understand how they work internally. In this blog, we will go beyond just toggling options in the UI and explore how the settings system is designed, where they are stored, how they are loaded, and what becomes the source of truth when multiple configurations exist.


1. User Settings vs Workspace Settings

VS Code provides two primary levels of configuration:

User Settings

These apply globally to your editor. Any project you open will use these settings unless overridden.

Examples:

  • Theme

  • Font size

  • Default formatter

  • Tab spacing

These are ideal for personal preferences.


Workspace Settings

These apply only to a specific project (workspace). They override user settings.

Examples:

  • Different formatter for a project

  • Project-specific linting rules

  • Language-specific overrides

Workspace settings help maintain consistency across teams, because they can be committed to version control.


2. Is There Any Global Setting Beyond User Settings?

This is a common confusion.

There is no separate “global” setting layer beyond User settings. User settings are the global settings.

However, internally VS Code also has:

  • Default settings (built into the editor)

  • User settings

  • Workspace settings

  • Folder-level settings (in multi-root workspaces)

So, the full hierarchy is deeper than what most developers realize.


3. Where Are These Settings Stored?

All settings are stored in JSON format.

Windows

User settings:

C:\Users\<username>\AppData\Roaming\Code\User\settings.json

Workspace settings:

<project>/.vscode/settings.json

macOS

User settings:

~/Library/Application Support/Code/User/settings.json

Workspace settings:

<project>/.vscode/settings.json

These files are simple JSON and can be edited directly.


4. Where Does VS Code Look for Settings?

When VS Code starts, it loads settings in this order:

  1. Default settings (built-in)

  2. User settings

  3. Workspace settings

  4. Folder settings (if multi-root)

Each level overrides the previous one.

This means:

  • The editor builds a merged configuration

  • Higher priority layers override lower ones

This merged result is what you see as the effective setting.


5. Effective Settings and Override Behavior

Let’s say:

User settings:

{
  "editor.fontSize": 14
}

Workspace settings:

{
  "editor.fontSize": 16
}

The effective value becomes 16 for that project.

But when you open another project, it returns to 14.

So:

  • Workspace overrides User

  • User overrides Default

This makes VS Code both flexible and predictable.


6. Is There a Single Source of Truth?

Not exactly.

There is no single file that acts as the ultimate source.

Instead:

  • The effective configuration (merged result) becomes the runtime source of truth.

  • Internally, VS Code maintains a computed configuration model.

This design allows:

  • Extensions to contribute new settings

  • Dynamic updates without restarting

  • Language-specific overrides

So, the source of truth is the merged configuration in memory, not a single JSON file.


7. Do JSON Files Contain All Possible Settings?

No.

The JSON files only store customized values.

They do not contain:

  • Default values

  • Extension defaults

  • Language defaults

These come from:

  • VS Code core

  • Installed extensions

  • Built-in language support

This is why your settings file stays small even though the editor supports thousands of options.


8. What Happens When a New Version Introduces New Settings?

This is where the design becomes powerful.

When a new release adds a setting:

  • It gets a default value internally.

  • Your JSON file remains unchanged.

  • Only when you modify it does it appear in your settings.json.

So:

  • No breaking changes

  • No need to update your file

  • Backward compatibility is maintained

This is similar to how modern configuration systems work in distributed systems.


9. Why This Design Matters

This layered configuration model provides:

  • Flexibility for individual developers

  • Consistency for teams

  • Stability across versions

  • Extensibility for the ecosystem

It also makes VS Code highly scalable as a platform.


Conclusion

Understanding how settings work in VS Code helps you:

  • Debug configuration issues faster

  • Set up projects correctly

  • Collaborate better with teams

  • Use extensions more effectively

  • Customize your workflow confidently

Most developers only scratch the surface of settings. But once you understand the internal layering and override model, the editor becomes much more predictable and powerful.

A

About Ankush Jain

Hi, I am Ankush Jain - a software engineer with 13+ years of experience building scalable software systems across backend, frontend, and cloud platforms.

WebsiteTwitterGitHubLinkedIn
CoderJony

Full-stack engineering, cloud architecture, and scalable systems

ankushjain358@gmail.com
© 2026 CoderJony. All rights reserved.