Terms

Glossary

The words in the explanations and the response, each with a short definition and a link to where it is used.

Settings

TermMeaning
Age gateThe minimum age of a version, minAgeDays. Younger versions are not candidates. See why wait.
StepHow far a version may move from the one in your file, maxBump: patch, minor or major. Measured from the lower bound of your range. See step size.
FocusThe packages you name for one run. Only they move, together with the neighbours they need. See focus.
ripedeps entryThe object in package.json that keeps minAgeDays and maxBump. See Configuration.

Versions

TermMeaning
RootA package listed in dependencies, devDependencies or optionalDependencies of your file.
FloorThe lower bound of a range: 1.2.0 in ^1.2.0.
BaselineWhat your project resolves to today: the highest stable version that satisfies your range. It always stays a candidate, so nothing moves backwards.
CandidateA version that may be chosen: stable, not deprecated, within the step, old enough, and compatible with your engines.node. See candidate versions.
Best versionbestVersion: the best candidate of a package. When it differs from the chosen version, the explanation says what stood in the way.
LagHow far a chosen version is behind the best candidate. A major gap counts 10000, a minor gap 100 and a differing patch 1. See ranking.
An open book showing a typeface specimen page

Rules between packages

TermMeaning
ConstraintA rule between two of your packages that holds when the chosen version of one satisfies the range another asks for. See constraints.
PeerA constraint from a peerDependencies entry, for example a framework asking for react ^19.
Aligned dependencyA constraint from a dependencies entry that points to another root of yours, so the same package does not end up in two versions.
Movable setThe packages allowed to move in a run: all of them, or with a focus, the focused ones and the neighbours their candidates refer to.
Exactmeta.exact: true when the solver proved its answer is the best one. When its search budget ran out, it is false and the best answer found is returned. See the solver.

Statuses

The decision for each package, the status in the response. See decisions.

StatusMeaning
upgradeThe range moves up to the chosen version.
heldA newer version exists but is not taken: too young, too big a step, needs a newer Node, or it would break a peer or an aligned dependency.
currentAlready the newest version that qualifies.
outside-focusNot part of the focus, left as it is.
skippedNot processable. skipReason says why: non-semver-specifier, open-ended, complex-range, unsupported-range, prerelease, invalid-value, unknown-package or lookup-failed.

Reasons

Why a better version was not taken, reasons[].kind in the response.

KindMeaning
age-gateThe newest stable version is younger than the gate. Its age is given.
enginesThe version needs a newer Node than your engines.node allows, or, for @types/node, it follows engines.node.
level-limitA higher version exists, but your step excludes it.
peerThe version would break a peer constraint.
dependencyThe version would break an aligned dependency.
pulled-inThe package can move because a focused package needs it.

In the response

FieldMeaning
diffA unified diff of package.json that patch -p1 applies.
updatedPackageJsonThe complete new file.
explanationOne sentence per package: what happened and why. Built from templates, never by a model. See explanations.
warningsThings you should know: duplicates, unavoidable constraint violations with a hint, unknown keys in the ripedeps entry.
notesChanges to the output that are not upgrades, for example that the entry was added.
metaThe settings used and where each came from, the input, exact and stale.
stalemeta.stale: expired package data was served because the registry was briefly unavailable.

The full reference with an example of every field is on the API page. More questions? See the FAQ.