Skip to content

A freshly scaffolded project still reports 4 unmet @better-auth/utils peers on its first install — the skew is not in the scaffold's peerDependencyRules #10931

Description

@os-elon

Found while measuring #10497 (the pnpm floor for the scaffolded package.json). Unrelated cause, so filed rather than ridden.

What happens

renderPnpmWorkspaceYaml() in packages/cli/src/commands/init.ts emits a peerDependencyRules.allowedVersions block whose stated purpose is that a brand-new project's first pnpm install does not open with a peer-skew report. From SCAFFOLD_ALLOWED_PEER_VERSIONS:

Both are reported by pnpm install on a brand-new scaffold, and neither is a real incompatibility. They are declared here because that report is the first thing a newcomer sees, on the one screen where they are deciding whether this project is solid, and there is nothing they did to cause it.

Two skews are declared (better-auth>better-sqlite3, @better-auth/scim>better-call). A third one is not, and it still shows. Scaffolded with the real CLI at 17.1.0 (objectstack init my-app -t app --no-install), then pnpm@10.15.0 install --lockfile-only:

 WARN Issues with peer dependencies found
.
├─┬ @better-auth/core 1.7.1
│ └── ✕ unmet peer @better-auth/utils@0.4.2: found 0.5.0
...
└─┬ @objectstack/runtime 17.1.0
└─┬ @objectstack/plugin-auth 17.1.0
├─┬ @better-auth/scim 1.7.0-rc.1
│ └── ✕ unmet peer @better-auth/utils@0.4.2: found 0.5.0
├─┬ @better-auth/oauth-provider 1.7.1
│ └── ✕ unmet peer @better-auth/utils@0.4.2: found 0.5.0
└─┬ @better-auth/sso 1.7.1
└── ✕ unmet peer @better-auth/utils@0.4.2: found 0.5.0

Four declaring packages (@better-auth/core, @better-auth/scim, @better-auth/oauth-provider, @better-auth/sso) each peer an exact @better-auth/utils@0.4.2, while the tree resolves 0.5.0. Install still exits 0 — this is report noise, not a resolution failure.

Why it is a finding and not a fix

Whether to widen is a judgement I did not make, and the existing entries were each justified by measuring the configuration the stale range actually governs, not by silencing the line. Two things need deciding:

  1. Whether 0.5.0 really is compatible for these four consumers, measured the way the better-sqlite3 entry was — otherwise the right move is a resolution change, not an allowedVersions widening.
  2. Whether the rule should be spelled per declaring package (four scoped entries, matching the existing convention that each rule widens exactly one declaration) or whether the shared @better-auth/* origin makes that repetitive.

Note @better-auth/scim appears in both this list and the existing better-call entry, and it is held at an rc deliberately — so anything done here should be checked against the note that the scim entry retires with that pin.

Severity is low: warnings only, install succeeds. Filing it because the scaffolder has an explicit, implemented intent to keep that first screen clean, and this defeats it for four of six lines.

Filed unassigned, not graded or routed.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions