Safeguard
Security Guides•

What should a maintainer check on dependencies before a release?

A short pre-release dependency checklist for open source maintainers: audit, lower bounds, lockfile, workflow pins, and notes. Takes about fifteen minutes.

Safeguard Security Team
4 min read

Before you tag a release, run a dependency audit against runtime packages, confirm your lower bounds still include no known-vulnerable versions, check the lockfile and workflow pins, and write one line in the notes about any dependency security change. Fifteen minutes covers it.

The checklist

Print this, paste it into your release issue template, or keep it as a pull request checklist.

StepWhat to doWhy
1Run an audit on runtime dependenciesKnow what you ship
2Review open dependency pull requestsDo not release with a security bump unmerged
3Check lower bounds in the manifestFloors should not allow versions with known advisories you are affected by
4Frozen install in CIRelease from the tree you tested
5Review workflow action pins and token permissionsThe release job holds your credentials
6Note dependency security changesUsers decide faster

Step by step

1. Audit what users receive. For npm, npm audit --omit=dev leaves out dev dependencies, and --audit-level sets the severity that fails the command. The npm page warns that npm audit fix --force can install semver-major updates and should not be used without a plan.

2. Look at open update pull requests. Dependabot opens up to five version update pull requests at a time by default, and security update pull requests have a separate limit of 10. If one is waiting and it fixes a vulnerability in code you call, merge it before tagging.

3. Check floors. If a dependency had an advisory this cycle, make sure the minimum version in your manifest is at or above the patched version when your code is affected.

4. Release from a frozen install. npm ci installs exactly what the lockfile says, never writes to it, and errors if it disagrees with package.json. That gives you a release built from what CI tested.

5. Check the pipeline itself. GitHub recommends pinning actions to a full-length commit SHA and setting the default token to read-only, raising permissions per job. The release job is the one with publishing power, so review it first.

6. Write the note. One sentence is enough: "Raised the minimum version of parser to 2.3.1 to pick up the fix for an advisory." If you were not affected, you may say so, with a link.

What to skip

Do not try to review every transitive package by hand. Use tools to enumerate them, and spend your attention on direct runtime dependencies and the release workflow. And do not delay a release for a dev-only alert unless the tool touches release credentials.

Make it routine

If you release monthly, put these six steps in the release issue template. If you release rarely, add a calendar reminder. The goal is that the checks happen even when you are tired.

Try it yourself

Click through it at your own pace, or open it full screen. Watch how a check can block a merge until a finding is dealt with.

Quick check

Should a release wait for every dependency update?

No. Wait for security fixes that affect code you call. Other updates can follow in the next cycle.

Is a clean audit proof of safety?

No. It reports known advisories only. New ones appear after you ship, so keep watching.

Safeguard can run policy gates on pull requests and keep scanning after you release, which covers the period after the checklist is done. See the free scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.