Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>Dependency Update CheckerNew to Visual Studio Code? Get it now.
Dependency Update Checker

Dependency Update Checker

Andrew Koltyakov

|
26 installs
| (1) | Free
Highlights dependencies that have newer versions available, inline in your manifest files.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Fresh Deps

Dependency Update Checker

See available dependency updates directly in your VS Code manifest files.

Fresh Deps adds inline version hints for npm, Go, Python, Rust, Java, .NET, PHP, Dart, Flutter, Ruby, Terraform, OpenTofu, Elixir, Deno, JSR, GitHub Actions, Docker, Helm, Swift, Conan, Scala, Conda, Clojure, Ansible, Bazel, and vcpkg. Compare the newest version your range allows with the latest release, then hover for details and a link to the package registry. Hints are editor decorations, so your files stay untouched.

Install from the Marketplace · Source code · Report an issue

What you get

  • Available versions beside each outdated dependency, aligned within each block.
  • In-range and out-of-range updates shown together, with theme-aware colors for update types.
  • Go major-version discovery, including new /v2, /v3, and gopkg.in import paths.
  • Support for scoped npm registries, Go proxies, and custom Python, Maven, and NuGet sources.
  • Optional registry audits for npm and public PyPI packages, or OSV audits for supported public ecosystems.
  • Optional lockfile baselines and runtime-compatible release information.
  • Release, changelog, and documentation links where metadata identifies them.
  • Per-package update policies and workspace-relative scan exclusions.
  • Read-only Markdown and versioned JSON workspace reports.
  • Cached lookups across window reloads. Typing never triggers a network request.

Get started

  1. Install Fresh Deps from the VS Code Extensions view. Requires VS Code 1.107.0 or later.
  2. Open a supported manifest, such as package.json, go.mod, or pyproject.toml.
  3. Look for version hints at the end of dependency lines. Hover a hint to inspect the update.

Checks run when you open or save a manifest. To force a fresh check, use the refresh button in the editor title bar or run Fresh Deps: Check for Updates from the Command Palette.

Supported files

Ecosystem Manifests Package source
JavaScript, TypeScript package.json, including Volta, packageManager, overrides and resolutions; pnpm catalogs and overrides; Yarn catalogs npm registry
Go go.mod, go.work runtime directives Go module proxy and Go release metadata
Python pyproject.toml, Pipfile, requirements and constraints files, PEP 723 script blocks PyPI or a source-selected custom index
Rust Cargo.toml, including inherited workspace dependencies crates.io or configured HTTPS sparse registries
Java, Kotlin, Android Maven pom.xml; Gradle catalogs, build/settings scripts, and gradle-wrapper.properties Maven repositories and Gradle release metadata
.NET *.csproj, *.fsproj, *.vbproj, Directory.Packages.props, Directory.Build.props, packages.config, dotnet-tools.json, global.json NuGet V3 feed; .NET release metadata for SDKs
PHP, Composer composer.json Packagist or Composer repositories
Dart, Flutter pubspec.yaml, pubspec_overrides.yaml pub.dev or HTTPS hosted registries
Ruby Gemfile, source-resolvable *.gemspec declarations RubyGems-compatible registries
Terraform, OpenTofu *.tf, *.tofu provider and registry module requirements; .tflint.hcl plugins Terraform Registry, OpenTofu Registry, GitHub releases
Elixir mix.exs Hex.pm
Deno, JSR Deno configs, conventional import maps, and referenced local import maps JSR and the configured npm registry
GitHub Actions .github/workflows/*.yml, *.yaml; composite action.yml, action.yaml Public GitHub tags API
Docker, Compose Dockerfiles, Containerfiles, and Compose files, including suffix variants Docker Hub and HTTPS OCI registries
Kubernetes, Helm Chart.yaml dependencies HTTPS chart indexes and OCI registries
Swift Package.swift GitHub, GitLab, Bitbucket, and configured Swift registries
C, C++, Conan conanfile.txt, conanfile.py Configured Conan remotes or Conan Center recipe index
Scala, sbt build.sbt, project/plugins.sbt Configurable Maven repositories
Conda environment.yml, environment.yaml, including nested pip requirements Named channels, labels, HTTPS channels, and defaults
Clojure deps.edn, project.clj Maven Central and Clojars, or declared/configured Maven repositories
Ansible requirements.yml, requirements.yaml collections and roles Ansible Galaxy and explicit compatible collection sources
Bazel, Bzlmod MODULE.bazel, including literal local includes Bazel Central Registry or configured HTTPS registries
C, C++, vcpkg vcpkg.json minimums, overrides, and baseline-selected bare dependencies Builtin database, filesystem registries, and GitHub-hosted Git registries

Inline hints

Version availability

Fresh Deps checks version availability in all supported ecosystems, including Deno's npm and JSR imports and supported runtime declarations. Checks use each ecosystem's version rules and the configured registry, repository, channel, or release manifest.

Hint Meaning
Ahead of latest The selected version exists but is newer than the source's selected latest release. No downgrade is suggested.
Version not found A complete listing or a direct version lookup confirms the pin is absent from the selected source.
No matching version No listed release satisfies the declared range.
Package not found The public npm registry did not return an unscoped package.
Unable to check A lookup failed. Hover for the reason. A missing package response may also mean the package is inaccessible.

Missing-version warnings appear alongside any update suggestion. Prereleases and listed yanked or retracted releases count as existence evidence, even when excluded from update suggestions. A range's lower bound need not exist if another listed release satisfies the range.

Some declarations need additional handling:

  • Go checks the declared module path directly, including pseudo-versions. Discovering a new major module path does not change the source used to validate the current version.
  • Docker keeps tag suffixes and precision separate. Actions checks moving tags and each runtime matrix selector at its declared precision.
  • vcpkg checks the selected baseline or minimum entry and preserves its versioning scheme.
  • Maven-based multi-repository lookups and Bazel check other configured sources before reporting a pin missing from the update source. Scala cross-build checks require matching artifact variants.
  • Conda checks the selected channel and platform metadata. Conan Center checks its recipe index; configured Conan remotes use their recipe listings. Runtime checks use their release manifests.

Incomplete metadata produces an explanation on hover rather than a missing-version warning. The status bar reports version issues and incomplete checks. These checks describe what the selected source lists or serves, rather than whether a version was ever published elsewhere. Status labels stay compact, with details in the tooltip. When no updates need attention, the status bar shows a double-check icon and Fresh Deps, including when update suggestions are suppressed. The tooltip lists ignored dependencies only when a newer version is confirmed, with current and available versions, the matching manifest section, and audit status. This includes ignored major updates even when a same-major update is still suggested. Audit warnings name affected dependencies and advisories, including ignored dependencies. Ignoring updates never hides audit warnings, and an available update is not evidence that its version fixes an advisory.

These examples illustrate the annotations you see in the editor. The comments are visual hints, not text added to your manifest, and the versions are examples rather than a live registry listing.

npm

{
  "dependencies": {
    "lodash": "^4.17.0",     // ↑ 4.18.1
    "@types/node": "^18.0.0" // ↑ 18.19.130 → 26.5.0
  }
}

Go

require (
	github.com/Masterminds/semver v1.5.0 // ↑ v3.5.0 (/v3)
	github.com/stretchr/testify v1.8.0   // ↑ v1.12.1
	gopkg.in/yaml.v2 v2.4.0              // ↑ v3.0.1 (.v3)
)

Python

[project]
dependencies = [
  "requests>=2.20",   # ↑ 2.34.2
  "django>=4.2,<5",   # ↑ 4.2.30 → 6.1.1
]

Reading an update

In ↑ 18.19.130 → 26.5.0, the first version is the newest your declared range allows. The second requires widening the range. For a single-version hint, hover to check compatibility.

Hovers show version details and package links, plus releases, changelogs, and documentation where known. Direct GitHub Go modules checked through the public proxy also get comparisons when both tags are verified. Verification runs only on hover.

Hints appear after trailing commas or comments. Major updates use warning colors, minor updates use info colors, and patches are muted.

Customize the colors through workbench.colorCustomizations using freshDeps.commentForeground, freshDeps.majorForeground, freshDeps.minorForeground, freshDeps.patchForeground, and freshDeps.prereleaseForeground.

Ecosystem details

npm

  • Checks dependencies, devDependencies, peerDependencies, optionalDependencies, packageManager, nested npm/pnpm overrides, and Yarn resolutions. freshDeps.npm.sections applies only to package.json.
  • Volta checks local node, npm, yarn, and pnpm pins against npm; extends is not followed. Add "volta" to customized section lists to enable it, or remove it to disable it.
  • Reads .npmrc scoped registries and tokens. Default/named catalogs and npm aliases in pnpm-workspace.yaml and .yarnrc.yml share npm lookups, cache, and audits; pnpm overrides are also checked.
  • Yarn catalogs honor literal npmRegistryServer and per-scope URLs, overridden by freshDeps.npm.registry; absent Yarn declarations use npm configuration. Yarn credentials and parent configs are not read. Global auth/npmRegistries skip catalogs; scoped credentials skip that scope. Environment-expanded URLs are skipped.
  • github:owner/repo#<SHA> pins accept full SHAs or abbreviations of at least seven characters. Updates require the pin to be an ancestor of the default-branch tip; tip or unrelated commits produce none. Hovers show the full target SHA and comparison link.

Go

  • Reads single-line/block require declarations through GOPROXY or a configured override; skips replaced modules. Indirect modules are hidden unless freshDeps.go.includeIndirect is enabled.
  • Honors GONOPROXY, falling back to GOPRIVATE when unset or empty. Excluded modules are neither proxied nor fetched directly. Process environment takes precedence over Go's persisted environment.
  • Checks go/toolchain directives in go.mod and go.work against official releases; probes newer /vN and gopkg.in .vN major paths and shows the required import path.

Python

  • Reads PEP 621/735, Poetry, tool.uv.dev-dependencies, Pipfile, and PEP 723 script blocks; ignores duplicate/unclosed blocks. Recognizes requirements.txt and -/./_ variants, constraints.txt, *-requirements.txt, and requirements/*.txt.
  • Uses configured/environment/pip indexes, explicit uv/Poetry/Pipfile sources, and --index-url. Skips workspace/path/Git dependencies, unresolved conditional or multi-index sources, and local links.
  • Supports JSON/HTML Simple APIs, requires-python, PEP 440 ordering, and Poetry ^/~ bounds. Updates exclude fully yanked releases. Bare names, !=/<-only constraints, direct references, and -e/-r lines have no comparison baseline and are skipped.

Rust

  • Reads dependency, dev/build, workspace, and target-specific tables using Cargo's implicit caret and comma-separated bounds. Renames use package; inherited requirements resolve through the workspace.
  • Honors HTTPS sparse registries and Cargo source replacement; skips path, Git, unresolved sources, and yanked releases. Hovers show the latest release's minimum Rust version when available.

.NET

  • Reads PackageReference, central PackageVersion, VersionOverride, and packages.config; supports four-part versions, interval/floating ranges, and unconditional same-file MSBuild properties. Honors V3 NuGet.Config sources, disabled feeds, and mappings; tool pins share settings/cache.
  • Checks dotnet-tools.json, .config/dotnet-tools.json, and global.json. SDK rollForward maps patch to feature band, feature to major/minor, minor to major, and major to newer majors, including latest* variants. Default is patch; disable pins exactly.
  • SDK hints show available updates, not installed SDK selection. allowPrerelease: false excludes previews. Tool/SDK manifests require valid JSON; comments and computed versions are skipped.

Java, Kotlin, Android

Maven

  • Reads dependencies/management, parents, build/reporting plugins, plugin management, and extensions in pom.xml. Resolves same-POM properties; skips inherited or unresolved versions.
  • Uses Maven qualifier ordering, including alpha, beta, milestone, rc, snapshot, final, and sp, with interval ranges such as [1.0,2.0) and unions such as (,1.0],[1.2,).

Gradle catalogs

  • Reads libraries/plugins in *.versions.toml: group:artifact:version, module or group/name forms, literal versions, and string [versions] references. Plugin IDs use Maven marker coordinates. Each declaration gets a hint, including shared references.
  • Supports require, strictly, prefer, and rejected versions; skips dynamic versions and bundles. Searches freshDeps.gradle.repositories in order, defaulting to Maven Central, Google Maven, and Gradle Plugin Portal. Build-script repository declarations and authentication are not read.

Gradle build scripts

  • Reads literal Groovy/Kotlin dependency calls in build.gradle{,.kts}, including multiline calls and platform, enforcedPlatform, and testFixtures wrappers. Checks plugin IDs/versions, Kotlin's kotlin("jvm"), and plugins/published catalogs in settings.gradle{,.kts}.
  • Checks gradle-wrapper.properties against Gradle releases. Shares catalog repositories/cache; never executes scripts or reads their repositories/authentication. Variables, interpolation, map-style declarations, dynamic versions, classifier notation, and versionless dependencies are skipped.

PHP, Composer

  • Reads require/require-dev; skips platform requirements such as php and ext-json. Supports numeric pins, comparisons/exclusions, caret, wildcard, hyphen, OR, and Composer tilde: ~1.2 stays below 2.0.0, ~1.2.3 below 1.3.0.
  • Honors stability flags, minimum-stability, prefer-stable, and explicit repositories through packages.json/metadata-url. Unsupported repository types/filters produce skip reasons. Branches, aliases, *, nonzero fourth version components, and patch-level suffixes are skipped.

Dart, Flutter

  • Reads dependencies, dev dependencies, and overrides in pubspec.yaml and pubspec_overrides.yaml; overrides suppress original declarations. Supports exact/comparison/Dart caret bounds: ^0.0.3 stays below 0.1.0. Build suffixes affect ordering; retracted releases are excluded.
  • Uses default or explicit HTTPS hosted registries, including PUB_HOSTED_URL; skips Git, path, SDK, YAML aliases, and any. SDK metadata supports optional runtime-compatibility hints.

Ruby

  • Reads literal gem calls with multiple constraints and gemspec dependencies with one unambiguous source in a sibling Gemfile. Uses RubyGems ordering and operators: ~> 2.1 stays below 3.0, ~> 2.1.4 below 2.2.
  • Literal HTTPS source blocks select RubyGems-compatible APIs. Git, path, dynamic-source, unconstrained, and interpolated dependencies are skipped; Ruby code is never executed.

Terraform, OpenTofu

  • Reads literal provider constraints, module source/version pairs, and runtime required_version. Supports full/implied hashicorp/<local-name> provider addresses, registry modules, comparisons, exclusions, and ~>; hovers retain aliases. Local/Git modules and computed declarations are skipped.
  • Custom services use /.well-known/terraform.json. Two-part sources default to Terraform for .tf, OpenTofu for .tofu; override with freshDeps.terraform.defaultRegistry. Optional provider baselines use .terraform.lock.hcl; no cross-module solving.
  • .tflint.hcl checks GitHub-source plugin pins against stable releases; skips disabled plugins, bundled plugins without source/version, and computed values.

Elixir

  • Reads literal deps tuples in mix.exs, including hex: aliases, exact versions, comparisons, and/or, and Hex ~>. Uses Hex.pm and organization APIs; retired releases remain comparable.
  • Named repositories use FRESH_DEPS_HEX_REPO_<NAME>. Git/GitHub, path, umbrella, computed repositories, and dynamic lists/requirements are skipped; mix.exs is never executed.

Deno, JSR

  • Reads imports/scopes in deno.json{,c}, conventional import_map.json/import-map.json and .jsonc variants, plus referenced local maps with custom names. Checks versioned jsr:/npm: specifiers with scopes, aliases, ranges, and subpaths such as npm:react@^18.0.0/jsx-runtime.
  • Excludes yanked JSR releases; npm shares .npmrc, registry overrides, cache, and optional audits. Skips URLs, local paths, unversioned imports, and dist-tags. Workspace files are checked when opened; source-code imports are not scanned.

GitHub Actions

  • Reads literal uses in workflows, reusable jobs, and composite steps, preserving tag precision and v. Moving-tag patches stay quiet; SHA comments require verified tags. Local/Docker actions, branches, unidentified SHAs, and YAML aliases are skipped for action-version checks.
  • Checks actions/setup-node, setup-python, and setup-go runtime inputs, exact actions/setup-dotnet SDK pins, and hashicorp/setup-terraform. Preserves numeric precision, including quoted/unquoted 3.10, even on branch/SHA-pinned actions. Supports literal matrices/local version files; skips other expressions, multiline lists, ranges, wildcards, and moving aliases.
  • Supports GitHub tokens, conditional requests, rate-limit backoff, and private github.com repositories, not Enterprise hosts. Reaching ten pages of 100 tags fails rather than comparing partial data.

Docker, Compose

  • Reads literal FROM images with platform flags/stages and Compose services.*.image, including dot/hyphen/underscore filename suffixes and Dockerfile/Containerfile prefixes. Multiline hints anchor to the last instruction line; heredocs are skipped.
  • Checks Docker Hub and explicit HTTPS OCI registries, including GHCR/Quay. Preserves numeric tag precision, v, and exact variants, e.g. 20-alpine to 22-alpine. Tag-plus-digest pins detect digest changes; digest-only pins, variables, unversioned images, and moving tags are skipped.
  • Docker Hub uses Distribution listings and anonymous pull tokens. Limits are 100 pages of up to 10,000 names; truncated lists fail. Variant suffixes are not distro upgrades.

Helm

  • Reads literal chart dependencies, semver requirements, and explicit HTTPS/OCI repositories. Hints anchor to versions; hovers retain aliases. HTTPS index.yaml reads are shared per check; OCI uses bearer challenges and Docker-config inline credentials. Repository aliases, local charts, YAML aliases, and HTTPS-index authentication are unsupported.

Swift Package Manager

  • Reads literal .package requirements using from:, exact:, .exact(...), .upToNextMajor, .upToNextMinor, and closed/half-open ranges. Swift next-major bounds apply even to 0.x packages.
  • Checks GitHub/GitLab.com/Bitbucket.org URLs and IDs selected by .swiftpm/configuration/registries.json. Bounded tag reads reject incomplete lists. Branches, revisions, local paths, interpolation, and computed requirements are skipped; Swift code is never executed.

Conan

  • Reads conanfile.txt, literal Python requires assignments, and self.requires, tool_requires, build_requires, and test_requires calls. Supports Conan ordering, alphanumeric releases, comparison ranges, users/channels, and recipe revisions; skips dynamic Python expressions.
  • Uses enabled Conan 2 remotes.json remotes, otherwise Conan Center's recipe index. User/channel recipes require a remote. Results describe recipes, not profile-specific binary availability.

Scala, sbt

  • Reads literal "group" % "artifact" % "version" coordinates in build.sbt and project/plugins.sbt, using Maven ordering and configured repository order. %% uses configured or literal scalaVersion/crossScalaVersions binary versions; releases must exist for every selected suffix.
  • addSbtPlugin requires freshDeps.scala.scalaBinaryVersion and freshDeps.scala.sbtBinaryVersion; typical sbt 1.x values 2.12/1.0 produce _2.12_1.0. Empty settings skip plugins. %%% also requires freshDeps.scala.platformSuffix, e.g. sjs1 or native0.5.
  • Custom cross-version modifiers, interpolation, and computed versions are skipped; builds are not executed.

Conda

  • Reads versioned strings in environment.yml/.yaml: numeric pins, = prefixes, dotted wildcards, comparisons, comma intersections, and | alternatives. Skips build selectors and nonnumeric versions.
  • Explicit named/labelled/HTTPS channels, defaults, and prefixes such as conda-forge::numpy=1.26 use strict declaration-order priority. nodefaults is ignored; implicit/local channels are unsupported. Unsupported channel entries skip unqualified dependencies.
  • Filters to freshDeps.conda.subdir or the extension-host platform, plus noarch, using only the main label. No Python/dependency solving. Nested pip requirements share Python parsing, sources, and audits.

Clojure

  • Reads :mvn/version in :deps, :extra-deps, :override-deps, and :replace-deps, including aliases, plus literal dependency/plugin vectors in project.clj. Uses Maven ordering and Central/Clojars defaults; literal :mvn/repos selects other sources.
  • Skips Git/local dependencies, reader macros, and Leiningen files declaring repositories. User-level deps.edn configuration is not read.

Ansible

  • Reads collections/roles in requirements.yml/.yaml, including legacy role lists. Hints anchor to versions; role src overrides local name. Collections support semver pins and lower-bounded, comma-separated >=, >, <=, <, ==, =, !=; roles use exact semver tags with optional v.
  • Uses separate Galaxy APIs for roles/collections and explicit HTTPS Galaxy-compatible collection sources. Pagination stops at 100 pages; incomplete lists fail. Git/local sources, YAML aliases, templates, and unversioned entries are skipped. Config/authentication are not read; requires_ansible metadata supports optional runtime-compatibility hints.

Bazel, Bzlmod

  • Reads literal bazel_dep calls in MODULE.bazel, including multiline/dev dependencies, with version-field hints. Uses relaxed ordering such as 20240116.2.bcr.1; excludes yanked versions.
  • Expands local literal include() files with cycle/path checks and cross-file overrides; skips computed override names. Starlark is never executed.
  • Honors literal HTTPS --registry flags in .bazelrc common/build entries; defaults to BCR. Hovers can fetch compatibility levels. Generated repositories and graph-wide minimum-version selection are not evaluated.

C, C++, vcpkg

  • Reads version>=, bare/feature dependencies, and exact overrides, which suppress matching hints. Builtin registries require a 40-character baseline commit; bare names resolve against it.
  • Uses microsoft/vcpkg or package-matched filesystem/GitHub Git registries from embedded/sibling configs. Supports numeric version, version-semver, version-date, and port revisions as patch updates; skips version-string and cross-scheme comparisons.
  • Upgrades may require refreshing the baseline/local checkout. No triplet, platform, or transitive solving; overlays, other transports, JSON comments, and computed declarations are unsupported.

Resolved versions and runtime compatibility

Enable freshDeps.useLockfiles for source-matched update/audit baselines satisfying your requirements. Supports npm shrinkwrap/package-lock, pnpm 6/9, Yarn Classic/Berry metadata 4/5/6/8, Bun text formats 0 through 3, Cargo, uv/Poetry, Composer, pub, Swift, Terraform, and Mix. This does not inspect installed packages or solve dependencies.

Ancestor npm/pnpm/Yarn/Bun locks require verified workspace membership; packageManager resolves conflicts. Selections match direct locations, importers, or descriptors. Reads are capped at 4 MiB; invalid or ambiguous entries fall back to declarations. Private sources require evidence. Hovers/reports show provenance, and lockfile changes refresh visible manifests. Cache-duration changes invalidate entries; zero prevents persisted reuse.

Bun bun.lock supports JSONC, aliases, and workspace-local/hoisted selections. Binary bun.lockb is detected but not decoded; migrate it to text to use resolved baselines. Fresh Deps never runs Bun or converts lockfiles.

Set freshDeps.runtimeVersions to show runtime-compatible releases alongside the latest:

{
  "freshDeps.runtimeVersions": {
    "python": "3.11.0",
    "npm": "20.0.0",
    "rust": "1.75.0",
    "dart": "3.4.0",
    "ansible": "2.15.0"
  }
}

Compatibility uses registry metadata, not platform or transitive solving. Missing metadata means unknown compatibility. Unresolved sources are logged; incomplete/empty checks appear in the status bar.

Registry credentials

  • GitHub reads FRESH_DEPS_GITHUB_TOKEN, GH_TOKEN, or GITHUB_TOKEN. Tokens apply only to api.github.com.
  • OCI reads inline auth entries from Docker's config.json, respecting DOCKER_CONFIG. Credential helper programs are not executed.
  • Custom Terraform provider and module services on the registry host can use TF_TOKEN_<HOST> environment variables with Terraform's hostname encoding.
  • Hex organization APIs can use HEX_API_KEY. Custom Hex API URLs use FRESH_DEPS_HEX_REPO_<NAME>.
  • Conan remote bearer tokens can use FRESH_DEPS_CONAN_TOKEN_<REMOTE_NAME>. Names use uppercase letters and underscores.

Security audits

Enable freshDeps.audit.enabled for advisory hovers and status summaries. Defaults use configured npm endpoints or public PyPI; select freshDeps.audit.provider: "osv" for supported public ecosystems. Custom/private sources never go to OSV; unsupported audits do not trigger provider fallback.

Providers receive package names and pins, range baselines, or lockfile selections, not an installed or transitive dependency scan. OSV includes severity, CVSS evidence, and affected ranges; missing severity is unknown, and fixed boundaries are branch-specific. Results are cached without persistence; typing never queries providers. Refresh and Clear Version Cache discard audits.

Fresh Deps: Audit an Update Version checks a selected target under the same restrictions without editing or installing. Auditing must be enabled. "No advisories reported" is not a safety guarantee.

Package policies and exclusions

{
  "freshDeps.exclude": ["**/fixtures/**", "examples/legacy/**"],
  "freshDeps.packageRules": [
    { "ecosystem": "npm", "name": "@types/*", "ignoreUpdates": true },
    { "ecosystem": "npm", "name": "node", "section": "volta", "ignoreMajorUpdates": true },
    { "ecosystem": "python", "name": "django", "prereleasePolicy": "if-current-prerelease" }
  ],
  "freshDeps.prereleasePolicy": "inherit"
}
  • Exclusions skip all checks, including audits. Globs are workspace-relative, or manifest-relative without a workspace. Use / and **; hidden paths match, negation is unsupported. Excluded directory contents are neither scanned nor counted.
  • Rules match canonical names and effective ecosystems, not aliases. JSR uses deno without jsr:. Later rules override specified fields; ignoreUpdates retains availability/security warnings.
  • Optional section globs restrict a rule to manifest sections such as volta or devDependencies. ignoreMajorUpdates works for libraries and runtimes across ecosystems. It keeps suggestions within the current major, so a library on 1.x still receives minor and patch updates, and a Volta Node 24 pin still receives 24.x updates without suggesting Node 25 or later. Availability checks and audits remain enabled.
  • Policies are inherit, never, if-current-prerelease, or always. Inherit keeps existing prerelease/stability settings; conditional mode uses the lockfile/declaration baseline. Source and ecosystem restrictions still apply. Settings can differ per workspace folder.

Commands

Reports scan supported manifests across all workspace folders with fresh lookups and existing settings, even with inline hints disabled. Markdown previews link updates/warnings to declarations; versioned JSON also includes clean entries, summaries, and workspace-relative locations. Both explain baselines, policies, audit states, and incomplete checks.

Scans include hidden manifests, apply package rules and freshDeps.exclude, and skip common dependency/build/cache/version-control directories. Editor search exclusions do not apply. Cancellation is supported. Reports are read-only; save or copy them explicitly. Credentials are redacted, but paths and package names may reveal private details. Review before sharing.

Command Action
Fresh Deps: Check for Updates Drops the cache and re-queries for the current file
Fresh Deps: Generate Outdated Dependencies Report Checks workspace manifests and opens a Markdown report
Fresh Deps: Generate Dependencies JSON Report Checks workspace manifests and opens a read-only JSON report
Fresh Deps: Audit an Update Version Audits a selected exact update target without applying it
Fresh Deps: Toggle Inline Hints Turns the annotations off and on
Fresh Deps: Clear Version Cache Forgets every resolved version

Settings

Setting Default Description
freshDeps.enabled true Show inline hints
freshDeps.audit.enabled false Show security warnings for npm and public PyPI declarations
freshDeps.audit.provider registry Select registry-native audits or optional public-package OSV audits
freshDeps.useLockfiles false Use unambiguous adjacent or verified npm workspace lockfile selections as baselines
freshDeps.exclude [] Workspace-relative globs excluded from all checks, including audits
freshDeps.packageRules [] Ordered package-name rules for update suppression and prerelease policy
freshDeps.prereleasePolicy inherit Preserve legacy behavior, exclude prereleases, allow them conditionally, or always consider them
freshDeps.runtimeVersions {} Concrete interpreter versions for runtime-compatible release hints
freshDeps.cacheDurationMinutes 60 How long resolved versions are reused
freshDeps.concurrency 8 Parallel registry requests
freshDeps.requestTimeoutMs 10000 Per-request timeout
freshDeps.showSatisfyingUpdates true Show the newest same-major update before the latest major, including exact pins, and report in-range updates
freshDeps.includePrerelease false Treat prereleases as updates
freshDeps.npm.enabled true Check package.json, pnpm catalogs, and Yarn catalogs
freshDeps.npm.registry "" Registry override; empty reads .npmrc
freshDeps.npm.sections the four dependency sections, volta, packageManager, overrides, resolutions Which sections to inspect
freshDeps.go.enabled true Check go.mod
freshDeps.go.proxy "" Proxy override; empty reads GOPROXY
freshDeps.go.includeIndirect false Also check // indirect modules
freshDeps.go.checkMajorVersions true Probe for /v2, /v3, …
freshDeps.python.enabled true Check pyproject.toml, Pipfile and requirements files
freshDeps.python.indexUrl "" Index override; empty reads PIP_INDEX_URL, UV_INDEX_URL and pip.conf
freshDeps.python.includeBuildRequires false Also check [build-system] requires
freshDeps.rust.enabled true Check crates in Cargo.toml
freshDeps.java.enabled true Check Maven dependencies in pom.xml
freshDeps.java.repository "" Repository override; empty uses Maven Central
freshDeps.dotnet.enabled true Check NuGet packages, .NET tools, and SDK pins
freshDeps.dotnet.indexUrl "" NuGet V3 service index; empty uses nuget.org
freshDeps.php.enabled true Check composer.json using Packagist
freshDeps.dart.enabled true Check pubspec.yaml using pub.dev
freshDeps.gradle.enabled true Check Gradle catalogs and literal build-script declarations
freshDeps.gradle.repositories Maven Central, Google Maven, Gradle Plugin Portal Ordered Maven repository URLs for Gradle catalogs
freshDeps.ruby.enabled true Check Gemfile using RubyGems.org
freshDeps.terraform.enabled true Check public provider and registry module requirements in *.tf and *.tofu, and GitHub-hosted plugins in .tflint.hcl
freshDeps.terraform.defaultRegistry "" Registry for two-part sources; empty selects one from the file extension
freshDeps.elixir.enabled true Check literal dependencies in mix.exs using Hex.pm
freshDeps.deno.enabled true Check npm and JSR imports in Deno configs and conventional import maps
freshDeps.githubActions.enabled true Check action tags and Node.js, Python and Go setup inputs in workflows and composite actions

Version results are cached for an hour by default and persisted across window reloads. Change freshDeps.cacheDurationMinutes to adjust the duration.

Additional ecosystem settings:

Setting Default Description
freshDeps.docker.enabled true Check Docker Hub image tags in Dockerfiles and Compose
freshDeps.helm.enabled true Check Helm chart dependencies using HTTPS indexes
freshDeps.swift.enabled true Check GitHub-hosted Swift package tags
freshDeps.conan.enabled true Check numeric Conan Center recipe versions
freshDeps.scala.enabled true Check explicit Maven coordinates in sbt files
freshDeps.scala.repositories Maven Central Ordered Maven repositories for sbt
freshDeps.scala.scalaBinaryVersion "" Scala binary suffix for sbt plugins; empty skips plugins
freshDeps.scala.sbtBinaryVersion "" sbt binary suffix for plugins; empty skips plugins
freshDeps.scala.platformSuffix "" Platform suffix for %%%, such as sjs1 or native0.5
freshDeps.conda.enabled true Check numeric Conda dependencies from explicit channels
freshDeps.conda.subdir "" Target platform such as linux-64; empty uses the extension host
freshDeps.clojure.enabled true Check Maven dependencies in deps.edn
freshDeps.clojure.repositories Maven Central, Clojars Ordered Maven repositories for Clojure
freshDeps.ansible.enabled true Check public Galaxy collections and role pins in Ansible requirements YAML
freshDeps.bazel.enabled true Check literal Bzlmod dependencies using the Bazel Central Registry
freshDeps.vcpkg.enabled true Check explicit builtin-registry vcpkg minimums and overrides, including port revisions

Development

Use npm. Volta selects the pinned Node.js and npm versions from package.json. Without Volta, install those versions manually. CI uses the same pins. Direct dependencies use exact versions, and .npmrc keeps future installs exact.

npm ci
npm run check   # typecheck source and tests
npm run lint    # lint with automatic fixes
npm run fmt     # format source, tests, and tooling
npm test        # compile and run unit tests
npm run watch   # then F5 in VS Code to launch the extension host
npm run package # build a .vsix

Before submitting changes, run npm run check, npm run lint:check, npm run fmt:check, and npm test. VS Code recommends the Oxc extension for formatting on save. Workspace package rules keep @types/vscode aligned with the minimum supported VS Code version and suppress Node major updates in Volta.

To try the packaged build in your own editor, npm run vscode:install builds the .vsix and installs it with code --install-extension --force; reload the window afterwards. Set FRESH_DEPS_VSCODE_CLI to target another CLI (code-insiders, cursor, an absolute path).

Registry lookups are network-dependent, so the test suite covers the pure parts: manifest parsing, position anchoring, version comparison, Cargo, Maven, Composer, Dart, RubyGems, Terraform, Hex, and PEP 440 requirement matching, .npmrc and pip.conf resolution, Go path handling, and registry response handling.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft