Files
2026-07-22 17:29:08 +05:30

3.1 KiB

Upgrade to WRNexusJS 0.3.0

Before upgrading

Commit the project or create a backup. The updater also creates its own timestamped backup, including the complete app directory.

Use the same Bun baseline used by the framework:

bun --version
# 1.3.0 or newer

Preview the migration

bunx wrnexus update . --to 0.3.0 --dry-run

Review every reported .wrn file. The source migration is intentionally narrow:

  • compact simple props { ... } declarations become multiline
  • simple attribute={expression} becomes attribute='{expression}'
  • nested brace values, ambiguous quotes, and complex expressions are not rewritten

Apply and verify

bunx wrnexus update . --to 0.3.0
bun install
bun run format
bun run check
bun run build
bun run doctor
bun run analyze

The update is not marked verified until project verification succeeds.

Files added by the migration

Runnable applications receive these scripts when missing:

{
  "doctor": "wrnexus doctor .",
  "config:explain": "wrnexus config . --explain",
  "analyze": "wrnexus analyze .",
  "update:preview": "wrnexus update . --dry-run"
}

They also receive direct dependencies on @wrnexus/syntax and @wrnexus/plugin. A report is written to .wrnexus/migrations/0.3.0.json.

New optional configuration

import { defineConfig } from "@wrnexus/styles";

export default defineConfig({
  experimental: {
    partialHydration: true,
    streaming: true,
    typedRpc: true,
    pluginTransforms: true,
  },
  observability: {
    enabled: true,
    serverTiming: true,
    sampleRate: 1,
    exporter: "console",
  },
  tenancy: {
    mode: "subdomain",
    rootDomains: ["example.com"],
    required: true,
  },
  performance: {
    enforcement: "warn",
    analyze: true,
    budgets: {
      routeJsBytes: 80_000,
      routeCssBytes: 50_000,
      imageBytes: 300_000,
    },
  },
  build: {
    sourceMaps: true,
    report: true,
    adapter: "bun",
  },
});

All new sections are optional. Omitting them preserves previous behavior.

Syntax adoption

Existing .wrn files continue working. New declarations can be introduced one at a time:

component AnalyticsChart {
    runtime = "universal"
    hydrate = "visible"

    props {
        points = []
    }

    computed {
        total = points.reduce((sum, point) => sum + point.value, 0)
    }

    view {
        <output>{total}</output>
    }
}

Rollback

Use the updater's backup directory or restore the source-control commit. The migration report contains the exact normalized files. Because the new APIs and metadata are additive, an application that did not adopt new syntax can roll back package versions without source changes.

Release verification for framework maintainers

bun install
bun run verify:0.3
bun run typecheck
bun run lint
bun test packages
bun run format:check
node --test editors/vscode/test/*.test.js
cd editors/vscode && bun run validate && bun run package

Regenerate bun.lock and the VS Code compiler.cjs/VSIX in a Bun-enabled release environment before publishing.