Skip to content

Hard-Pin Nuxt to 3.21.0 Until vite-node IPC Regression is Fixed ​

Context ​

Nuxt 3.21.5 (and the subsequent 3.21.x patches available at the time of pinning) introduced a regression in the vite-node IPC channel that the dev-mode of packages/web/swiss_ai_hub_web relies on. The symptom is a hang during pnpm dev and intermittent module-resolution errors against the parent Nuxt layer in .app/. The fix is not yet upstreamed — see commit b0ec13721 ("chore(ui): Pin nuxt to 3.21.0 to restore vite-node IPC").

package.json is the only place to express this constraint, and JSON does not support inline comments, so the constraint sits in package.json without context. A reviewer or dependency-update bot looking at the line "nuxt": "3.21.0" (no caret) cannot tell whether the pin is intentional or accidental, and therefore cannot tell when it is safe to lift.

Decision Drivers ​

  • Avoid silent dependency drift
    A hard pin with no recorded reason becomes forgotten tech debt.
  • Enable safe future upgrades
    Someone bumping Nuxt must know what to retest before relaxing the pin.
  • Block patch security updates only where necessary
    ^3.21.0 would normally let patches in; the pin blocks that, which is acceptable only as long as the regression is unfixed upstream.

Decision ​

Hard-pin nuxt to 3.21.0 in packages/web/swiss_ai_hub_web/package.json (no ^ or ~ range prefix) until the vite-node IPC regression is fixed upstream. This ADR is the canonical record of why the caret is missing.

Consequences ​

  • Dependabot and manual pnpm up runs will not bump Nuxt within the 3.21.x line — security patches that ship in 3.21.6+ have to be evaluated and lifted manually.
  • Any developer attempting to upgrade Nuxt must:
    1. Reproduce or verify the vite-node IPC regression on the new candidate version.
    2. If the regression is gone, remove the pin (restore ^ prefix) and update this ADR's status to "Superseded".
    3. If the regression persists, leave the pin in place and update the "Context" section with the new evidence.

Exit Criterion ​

Remove the hard pin once a Nuxt 3.21.x (or later) release ships with the vite-node IPC fix and pnpm dev works reliably against the .app/ layer. Track upstream Nuxt releases for the relevant fix commit; re-run pnpm dev on a clean install to verify before relaxing the constraint.

Built with ❤️ in Switzerland 🇨🇭