releases.shpreview

Monorepo subdirectory builds now auto-anchor to root

vercel@54.21.0

July 6, 2026Vercel CLIView original ↗
3 features4 enhancements3 fixesThis release3 featuresNew capabilities4 enhancementsImprovements to existing features3 fixesBug fixesAI-tallied from the release notes

Minor Changes

  • cc74129: Enable monorepo subdirectory build fixes by default (previously gated behind VERCEL_RESOLVE_ROOT_DIRECTORY=1), scoped to directories the workspace actually claims.

    When a project is linked in place (apps/api/.vercel/project.json) and vc build is run from that directory, the build now re-anchors to the workspace root and expresses the project as its path relative to that root — so builders trace correctly, hoisted dependencies are packaged, and --standalone output preserves package-manager symlinks so dependencies resolve at runtime.

    Re-anchoring only happens when an ancestor workspace manifest (pnpm-workspace.yaml or package.json#workspaces) actually declares the linked directory as a member package. Membership is decided by matching the directory's path against the manifest's declared patterns (including negations like !apps/legacy) plus a package.json existence check — pure string matching with no filesystem traversal, so large repositories and recursive patterns like ** cost nothing. A project that merely sits inside an unrelated repository — a vendored folder, a fixture, a scratch project in a company monorepo, or a plain git repo with no workspace — is left untouched and builds from its own directory exactly as before.

    The rootDirectory setting is interpreted relative to the link's location and honored when it points at a folder that exists; otherwise (e.g. a redundant apps/api setting on a link at apps/api, which previously crashed with ENOENT .../apps/api/apps/api/...) it is ignored in favor of the link's own location and a warning is emitted.

    To restore the previous behavior, pin an earlier CLI version.

Patch Changes

  • 001a879: Do not duplicate global flags (e.g. --scope) in agent-output next[] command suggestions when the command template already carries the flag
  • d15f17c: Resolve projects for domains inspect and domains rm from the domain's project-domains instead of scanning every project in the account
  • 3190211: Show list help instead of transfer-in help for vercel domains ls --help
  • 85c897e: Run framework detection during vc build (opt-in via VERCEL_FRAMEWORK_DETECTION=1): detect the framework on a project's first deployment (VERCEL_FIRST_DEPLOYMENT=1) when none is configured and record it as detectedFramework in builds.json, cross-check the configured framework against the source code in the background without slowing the build, and validate the build output after it is written. Adds a detectionConfidence annotation to framework definitions for detections that are commonly incidental (e.g. Storybook as a devDependency) so they are never suggested as a framework override.
  • 3f3ca56: [cli] integration add now installs a product's declared agent skills after provisioning. It reads the product's agentSkills (public GitHub SKILL.md links) and runs npx skills add for each — prompting first in an interactive terminal (default yes), or auto-installing for non-interactive callers (agents, CI). --format=json stays read-only: it surfaces a skills array instead of installing. Non-GitHub or unparseable links are skipped.
  • 3aa331b: Emit structured agent-output JSON (project_not_found with runnable next suggestions) when vercel list <project> does not resolve in non-interactive mode
  • 24b012c: Update the CLI's sandbox dependency from 3.1.2 to 3.4.0.
  • d8307a7: Add a project update command for changing framework and build settings.
  • Updated dependencies [6dbc280]
  • Updated dependencies [4097a62]
    • @vercel/next@4.20.3
    • @vercel/python@6.48.0
    • @vercel/static-build@2.11.4

Fetched July 6, 2026

Monorepo subdirectory builds now auto-anchor to root… — releases.sh