Skip to content

Warlock.js 5.37.1

Choose a tag to compare

@hassanzohdy hassanzohdy released this 24 Oct 16:10
· 203 commits to main since this release

Released 2026-10-24.

All 33 packages (@warlock.js/* and create-warlock) move to 5.37.1 together;
keep every family package on the same version. No breaking changes. Upgrade notes
below are optional clean-ups.


1. Multi-site pages in development and tests (web)

  • Pages no longer answer 500 in multi-site apps under the development server and
    the HTTP test server. The browser route table is read from Core's router, never
    from a site's registration facade. With web.namedApiRoutes: false the table is
    not computed at all, and a failure while building it is logged with its own phase.

2. Every 5xx page failure is logged (web, core)

  • One error record per failed request, at error level, with the error message,
    the source-mapped stack, the phase (translations, module load, middleware, session,
    loader, metadata, render, stream, deferred data, error page), the page file, route,
    site and request id. 4xx outcomes stay out of the error log.
  • Development and test error pages show the same details in a panel; production
    stays generic. error.page.tsx receives them as props.debug outside production.
  • Translation lookups that ran before the handler's error handling now report as the
    translations phase instead of a bare 500. log is exported from @warlock.js/core.

3. Upgrading the family with npm (core)

  • warlock update on npm removes the family's (and Vite, Vitest, @vitest/*,
    @vitejs/*) lock entries and re-resolves them in one install, so an existing
    package-lock.json can step to the new version. npm 11.6.2 or newer is required for
    that step; older npm gets a warning naming the minimum. Family packages keep their
    exact pins on each other.
  • WL8010: warlock check reports installed @warlock.js/* packages whose
    versions differ.
  • warlock upgrade no longer rewrites packages that are already newer than
    --to, and its install hints name the package manager the project actually uses
    (the packageManager field, then a workspace file, then the newest lockfile).

4. Tests

  • Vitest 5 duplicate-plugin warning fixed. A config that lists
    lowerStage3Decorators() in the root and again in inline projects no longer warns.
    The vitest-inline-project-plugins upgrade codemod lists repeated calls for review.
  • Worker lifetime for HTTP and database suites. tests.resetDatabase truncates
    tables or collections before each file in worker lifetime (keeping the migration
    ledger); resetTestDatabase(), workerDatabaseName() and testWorkerId() come from
    @warlock.js/core/tests; test HTTP servers a file leaves open are closed at the
    next file. warlock add test writes a projects layout where
    WARLOCK_TEST_LIFETIME=worker turns worker lifetime, database reset and
    isolate: false on together, and the setup profiler recommends worker lifetime when
    setup takes at least half of a run.

5. Development server (web)

  • The HMR websocket attaches through Vite 8's server.ws, so the
    server.hmr.* deprecation warning is gone.
  • The client-bundle security check no longer reports the app's own index.html
    entry as an unjudged import.

6. Verification

The publish run repeats the full family gate (typecheck, tests, build, pack,
local-registry install and the blog app) before anything reaches npm, and checks the
blog against npm after publishing. Format, lint, public text, spec coverage, MDX,
shipped-docs and skill reference checks ran clean locally.