Nitro v3.0.260603-beta: Custom Framework Commands and Default Preset Config

Nitro v3.0.260603-beta: Custom Framework Commands and Default Preset Config

lschvn

Nitro's v3 beta train keeps rolling. Build 3.0.260603-beta, the date-stamped versioning means June 3, 2026, is a small release, but two of its changes matter to anyone building a framework on top of Nitro, which since the v3 beta announcement includes TanStack Start and the upcoming Nuxt major.

Frameworks can now own preview and deploy

Nitro has always handled the build; what happens after was left to the platform. This release lets framework plugins register their own preview and deploy commands, so a framework can wire platform-specific tooling into the same pipeline its users already run.

Concretely: if your framework targets, say, Cloudflare with a custom workflow, it can now expose that as the canonical preview/deploy path rather than documenting a separate CLI. Less "run our other tool after the build", more one pipeline that does the right thing per platform.

defaultPreset: control the fallback

When no deployment preset is configured and none is detected, Nitro used to fall back to a hardcoded default. A new defaultPreset config option makes that fallback explicit:

export default defineNitroConfig({
  defaultPreset: "cloudflare_module",
});

This is most useful in monorepos and framework presets where "no preset specified" should mean something specific to your setup, not whatever Nitro happens to default to.

A type-stripping edge case, fixed

The release also fixes a subtle module-resolution bug: when resolution retries a path with added TypeScript extensions (.ts, .tsx), Nitro now only strips the extensions it actually retried, instead of all possible ones. Edge case, but the kind that produces a baffling "module not found" in exactly one file of a large project.

Should you update?

If you're on the v3 beta already, yes, it's a safe incremental update via npm i nitro@beta. If you're a framework author, the custom command hooks are the headline: they're the first piece of v3's "bring your own framework" story that extends past the build step into deployment. For everyone else, this is a good reminder that v3 is iterating fast, weekly date-stamped betas, ahead of Nuxt 5 shipping on Nitro v3 and H3 v2.

Frequently Asked Questions

Related articles

More coverage with overlapping topics and tags.

React Router v8 Graduates Its Future Flags to Defaults, Goes ESM-Only, and Drops `react-router-dom`
frameworks

React Router v8 Graduates Its Future Flags to Defaults, Goes ESM-Only, and Drops `react-router-dom`

React Router v8.0.0 (June 17, 2026) is the first major release under the project's Open Governance model and the first on a planned yearly cadence. Every `future.v8_*` flag from v7 is now the default (always-on middleware, pass-through requests, the Vite Environment API, route-module splitting), the baseline moves to Node 22.22+, React 19.2.7+, and Vite 7+, all packages ship ESM-only with an ES2022 target, `react-router-dom` is removed, and the node adapters switch to a Remix-maintained fetch server while `create-react-router` drops its fetch polyfill for native `fetch`.
Deno Lands `deno desktop` Subcommand: WEF-Backed Self-Contained Desktop Apps with Deno.BrowserWindow, Unified DevTools, and Cross-Compile to macOS, Windows, and Linux
runtimes

Deno Lands `deno desktop` Subcommand: WEF-Backed Self-Contained Desktop Apps with Deno.BrowserWindow, Unified DevTools, and Cross-Compile to macOS, Windows, and Linux

Deno merged `deno desktop` on June 16, 2026 (PR #33441), a new subcommand that turns a Deno project into a self-contained desktop application. The feature ships the WEF backend (CEF by default, plus WebView and raw winit), the Deno.BrowserWindow API for window lifecycle and native events, framework auto-detection for Next, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start, and Vite SSR, a CDP multiplexer that exposes both V8 isolates in a single DevTools session, an auto-updater with bsdiff patches, and cross-compiled .app/.dmg/.exe/.AppImage outputs. Three smaller Deno PRs landed the same morning: `deno link`/`unlink`, `deno test --shard`, and a fetch `request_builder_hook` for `x-deno-fetch-token`/`cdn-loop` headers.
Fresh 2.3: Zero JS by Default, View Transitions, and WebSocket Support
runtimes

Fresh 2.3: Zero JS by Default, View Transitions, and WebSocket Support

Fresh 2.3 makes the 'zero JavaScript by default' promise a hard reality, adds native View Transitions, introduces built-in WebSocket handlers, CSP nonce injection, and Temporal API support for islands.

Comments

Log in Log in to join the conversation.

No comments yet. Be the first to share your thoughts.