Skip to main content

Dependency Update Checker: npm, pip & Outdated Package Guide

Outdated dependencies are one of the leading sources of security vulnerabilities and compatibility issues in production software. This guide covers how to audit outdated packages across npm, pip, and other ecosystems — and how to automate the update process with Dependabot and Renovate so staying current requires no manual effort.

✓ npm outdated & update commands ✓ pip-review & pip-audit ✓ Dependabot setup guide ✓ Renovate Bot configuration ✓ Major vs minor update risk table
Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →

Checking Outdated npm Packages

npm outdated gives you a clear picture of what is behind. Use npm-check-updates to automatically update your package.json to the latest compatible versions.

# Check outdated packages
npm outdated
# Output:
# Package         Current  Wanted  Latest  Location
# react           17.0.2   17.0.2  18.2.0  my-app
# typescript       4.9.5    4.9.5   5.3.2  my-app
# eslint           7.32.0   7.32.0  8.55.0  my-app

# Update to semver-compatible versions (respects ^ and ~ in package.json)
npm update

# Check what npm-check-updates would change (dry run)
npx npm-check-updates

# Apply all updates to package.json (then npm install to apply)
npx npm-check-updates -u && npm install

# Update only patch and minor (skip major version bumps)
npx npm-check-updates --target minor -u && npm install

# Check for security vulnerabilities separately
npm audit
npm audit fix             # auto-fix low-risk vulnerabilities
npm audit fix --force     # also fix breaking-change security fixes

Python Dependency Auditing

For Python projects, combine pip list --outdated for a quick overview with pip-audit for security scanning. Poetry and pip-tools users have dedicated commands that maintain lockfile integrity.

# Check outdated packages
pip list --outdated

# Interactive update tool (prompts for each package)
pip install pip-review
pip-review --interactive    # review each update
pip-review --auto           # update everything automatically

# Security-focused: check for known CVEs
pip install pip-audit
pip-audit                   # scan for vulnerabilities
pip-audit --fix             # auto-upgrade vulnerable packages

# Poetry users
poetry show --outdated
poetry update               # update to latest within constraints
poetry update requests      # update specific package

# pip-tools: regenerate lockfile from high-level requirements
pip install pip-tools
pip-compile requirements.in  # produces requirements.txt with pinned versions
pip-sync requirements.txt    # sync venv to exactly match lockfile

Dependabot & Renovate Configuration

Automate dependency updates entirely. Dependabot is the zero-config choice for GitHub. Renovate gives you fine-grained control — grouping packages, automerge rules, and custom schedules.

# .github/dependabot.yml — Dependabot configuration
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
    groups:
      eslint:
        patterns: ["eslint*", "@typescript-eslint/*"]
    ignore:
      - dependency-name: "some-legacy-package"
        versions: [">=2.0.0"]

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "monthly"

# renovate.json — Renovate Bot configuration (more powerful)
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:base"],
  "automerge": true,
  "automergeType": "pr",
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "automerge": true
    },
    {
      "matchUpdateTypes": ["major"],
      "automerge": false,
      "labels": ["breaking-change"]
    },
    {
      "matchPackagePatterns": ["^react"],
      "groupName": "React packages"
    }
  ]
}

Major vs Minor Update Risk Assessment

Update Type Example Risk Level Recommended Approach
Patch (x.x.N) 1.2.3 → 1.2.4 Low Automerge if CI passes
Minor (x.N.0) 1.2.3 → 1.3.0 Medium Automerge with full CI; review if large
Major (N.0.0) 1.2.3 → 2.0.0 High Read migration guide; manual review
Security patch Any version with CVE Critical Apply immediately; same-day if critical CVE
Pre-release 2.0.0-beta.1 Very High Never automerge; use only for testing

Frequently Asked Questions

How do I check which npm packages are outdated?▼

Run npm outdated in your project directory. It outputs a table showing current version, the version your package.json range allows (Wanted), and the Latest published version. To update to wanted versions automatically: npm update. To update to latest (potentially breaking) versions: npx npm-check-updates -u && npm install. Always read the changelog before accepting a major version bump.

What is the difference between Dependabot and Renovate?▼

Dependabot is GitHub's built-in dependency update bot — simple to enable (one .github/dependabot.yml file), free, and integrated into GitHub's security dashboard. Renovate (Mend) is more configurable: it supports grouping related packages into a single PR, custom schedules, automerge for patch/minor, monorepo support, and over 60 package managers. For straightforward npm/pip projects, Dependabot is sufficient. For large codebases or complex update strategies, Renovate's additional flexibility is worth the setup cost.

Should I always update to the latest version?▼

No. Patch updates (1.2.3 → 1.2.4) are generally safe to accept without review — they are bug fixes. Minor updates (1.2.3 → 1.3.0) should be tested but rarely break things if you follow semver. Major updates (1.x.x → 2.0.0) require reading the migration guide — they contain intentional breaking changes. Automate minor/patch updates via Renovate's automerge after your CI passes. Always manually review major updates.

How do I check outdated Python packages?▼

Run pip list --outdated to see all packages with available updates. For interactive updating, use pip-review: pip install pip-review && pip-review --interactive. For automated CI updates, pip-audit combines outdated detection with vulnerability scanning. In poetry projects, use poetry show --outdated. For requirements.txt pinning, pip-compile (from pip-tools) regenerates the pinned lockfile from your high-level requirements.in file.

What does a semver range like ^1.2.3 or ~1.2.3 mean?▼

The ^ (caret) prefix allows updates to any non-breaking version: ^1.2.3 matches >=1.2.3 <2.0.0. It is npm's default and is appropriate for most dependencies. The ~ (tilde) prefix is more conservative: ~1.2.3 matches >=1.2.3 <1.3.0 — only patch updates. Use ~ for dependencies with a history of minor breaking changes. Use exact versions (no prefix) for critical infrastructure dependencies where you want explicit control over every update.

How do I set up Dependabot for automated security updates?▼

Create .github/dependabot.yml in your repository. Set package-ecosystem (npm, pip, docker, github-actions), directory ('/'), and schedule (daily, weekly, monthly). Dependabot automatically opens PRs for security vulnerabilities (free on all plans) and version updates (requires configuration). For security-only mode without version update noise, use Security updates in GitHub Settings → Code security and analysis without a dependabot.yml file.