V2 Version Packages (beta) - #8723
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
changeset-release/build/v2
branch
14 times, most recently
from
June 19, 2026 19:14
2b60593 to
6a5aa8c
Compare
github-actions
Bot
force-pushed
the
changeset-release/build/v2
branch
14 times, most recently
from
June 25, 2026 08:40
f4d81eb to
58c09b7
Compare
github-actions
Bot
force-pushed
the
changeset-release/build/v2
branch
6 times, most recently
from
July 6, 2026 10:44
8b712fd to
c750430
Compare
github-actions
Bot
force-pushed
the
changeset-release/build/v2
branch
20 times, most recently
from
July 14, 2026 13:26
294131e to
256bf94
Compare
github-actions
Bot
force-pushed
the
changeset-release/build/v2
branch
3 times, most recently
from
July 15, 2026 19:13
7524ae1 to
3dc3736
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to build/v2, this PR will be updated.
build/v2is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonbuild/v2.Releases
@qwik.dev/core@2.0.0-beta.38
Major Changes
✨ relocate built assets with output.assetFileNames; remove build.assetsDir handling (by @maiieul in #8817)
🐞🩹 sync computed$ errors also go in
.errorand also rethrow on.valueread (by @wmertens in #8807)Minor Changes
✨
useComputed$accepts async functions and provides a compute context withtrack();useAsync$,createAsync$, andAsyncSignalare deprecated in favor of it (by @wmertens in #8807)✨ improve client resume responsiveness by splitting startup DOM processing into smaller tasks (by @Varixo in #8575)
✨ improve client resume responsiveness by splitting state processing into smaller tasks (by @Varixo in #8579)
✨ Add experimental
Showcontrol-flow component withwhen$,then$, and optionalelse$branches. (by @Varixo in #8624)Patch Changes
🐞🩹 preserve deferred attribute values during server rendering (by @Varixo in #8839)
🐞🩹 preserve camelcase html attributes after client resume (by @Varixo in #8838)
🐞🩹 validate element names during server rendering (by @Varixo in #8839)
🐞🩹 preserve element keys during server rendering (by @Varixo in #8839)
🐞🩹 clientOnly async signals now resume on pages without other serialized state (by @wmertens in #8807)
🐞🩹 clientOnly option on useComputed$ now skips SSR computation (by @wmertens in #8807)
🐞🩹 dedupe the ssr already-streamed-chore dev warning to once per host (by @maiieul in #8808)
🐞🩹 the built-in dev-time eslint linter now targets es2022 (by @maiieul in #8810)
Dev-mode QRL segments now resolve even when their parent module was never loaded in the requesting Vite server (e.g. Vitest browser mode or SSR rendered in a separate server). The dev server transforms the parent on demand instead of erroring with "module does not exist in the build graph". (by @maiieul in #8816)
Fix SSR in-order streaming not flushing before awaiting a component-body promise. (by @AmariahAK in #8820)
🐞🩹 release pending store state after failed deserialization (by @Varixo in #8839)
🐞🩹 duplicate projected element children when a component throws a promise on first render (by @maiieul in #8715)
🐞🩹 resume multiple SSR containers on the same page (by @maiieul in #8799)
🐞🩹 validate serialized object data before restoration (by @Varixo in #8839)
🐞🩹 reject malformed byte arrays before allocating deserialized data (by @Varixo in #8839)
🐞🩹 filter callable properties while restoring errors (by @Varixo in #8839)
🐞🩹 preserve slot names during server rendering (by @Varixo in #8839)
🐞🩹 resuming component props when statePrewarm option is enabled (by @Varixo in #8784)
🐞🩹 ssg build no longer overwrites the deployed server entry with a broken re-export (by @wmertens in #8806)
🐞🩹 reject invalid serialized Promise dependencies (by @Varixo in #8839)
🐞🩹 reduce component rerender when props are the same (by @Varixo in #8735)
🐞🩹 surface a failed container resume — report it and unblock
whenContainerDataReadywaiters — instead of swallowing the error into a silent hang. (by @maiieul in #8772)🐞🩹 surface a failed vnode-data resume — report it and unblock the
whenVNodeDataReadywaiters — instead of swallowing the error into a silent hang. (by @maiieul in #8773)🐞🩹 prevent large updates that span multiple frames from restarting incorrectly and missing pending UI changes (by @Varixo in #8743)
@qwik.dev/router@2.0.0-beta.38
Major Changes
BREAKING: 404.tsx and error.tsx now render inside their layouts (with
@layout/!modifiers), a route miss resolves the nearest 404.tsx, and the 404 page is prerendered for static hosts. Rename404.tsxto404!.tsxif you do not want to add the layout. (by @briancarbone in #8762)BREAKING: SPA view transitions are now opt-in; set
viewTransition={true}onQwikRouterProviderto re-enable them. (by @maiieul in #8778)✨ relocate built assets with output.assetFileNames; remove build.assetsDir handling (by @maiieul in #8817)
✨ rename the
LinkprefetchBundleprop toprefetchBundles(by @maiieul in #8828)Minor Changes
feat(router): automatically omit fully-prerendered, server-free routes from the production SSR route plan so their chunks tree-shake out of size-capped server bundles. (by @briancarbone in #8742)
✨ route loaders gain a
blockSSRoption (defaulttrue); setblockSSR: falseto run a loader in the background without blocking SSR (experimental, requires theblockSSRfeature flag) (by @wmertens in #8793)✨ returning
ev.redirect(),ev.error()orev.rewrite()from a loader, action, request handler or server function now behaves the same as throwing them (by @wmertens in #8775)feat(router): add an
excludeoption torewriteRoutesto skip generating localized routes for matching path patterns. (by @briancarbone in #8751)✨ render SSG in a dedicated Vite build environment, so prerendered route code stays out of the deployed server bundle (by @briancarbone in #8760)
SSG now runs from the
buildAppstep of the Vite builder. The Qwik CLI and adapters already build viacreateBuilder().buildApp(), so they need no change. Code that prerenders by calling Vite's programmaticbuild()directly must switch tobuilder.buildApp(), otherwise the SSG step is silently skipped.✨ add configurable server request body limits (by @Varixo in #8839)
Patch Changes
🐞🩹 render navigation state before loading the next route (by @Varixo in #8821)
🐞🩹 prerendered routes are now correctly excluded from the server route plan (by @briancarbone in #8759)
fix(router): honor the
routeLoader$idoption so loaders created through a shared wrapper (which share one optimizer-assigned QRL hash) get distinct ids instead of all but the first being silently deduped ingetModuleRouteLoaders. A dev-mode warning is now logged when two distinct loaders share an id. (by @maiieul in #8749)🐞🩹 prevent cold dev route loader requests from failing during SPA navigation (by @Varixo in #8787)
🐞🩹 keep expiring loader responses private by default (by @Varixo in #8839)
🐞🩹 action redirects work again (by @wmertens in #8780)
🐞🩹 resolve image jsx imports with extra query parameters. (by @Varixo in #8753)
🐞🩹 avoid prefetching loader data already fetched by route loaders (by @wmertens in #8836)
🐞🩹 keep Azure response collection work proportional to output size (by @Varixo in #8839)
🐞🩹 keep deeply nested form parsing work proportional (by @Varixo in #8839)
🐞🩹 ensure SPA navigation correctly refreshes route loader data for catch-all routes, including when loader data is shared through context (by @Varixo in #8748)
🐞🩹 routeLoader$ fail() now sets the loader value to { failed } instead of throwing an error, as it was before. (by @wmertens in #8756)
🐞🩹 prerendered route loaders no longer 404 when the client and server are built as separate processes (by @briancarbone in #8760)
🐞🩹 route loader no longer resolves to undefined on the first dev SPA navigation (by @briancarbone in #8770)
🐞🩹
routeLoader$not re-running during SPA navigation between URLs that match the same catchall route (by @Varixo in #8730)🐞🩹 prefix dev CSS and HMR URLs with Vite base (by @Varixo in #8837)
🐞🩹 refetch re-exported route loaders after navigation (by @wmertens in #8792)
🐞🩹 route action type allows
invalidatewithout validators (by @wmertens in #8807)🐞🩹 preserve scroll after spa action submits (by @Varixo in #8797)
🐞🩹 hot-reload route-imported CSS in dev without a server restart (by @briancarbone in #8725)
🐞🩹 streaming server$ no longer crashes the Bun server on client disconnect (by @aggyomfg in #8798)
🐞🩹 register aliased server functions used only in client code like visible tasks (by @Varixo in #8818)
🐞🩹 adapter post-build runs with ssg disabled, and the ssg build skips minify/sourcemaps (by @wmertens in #8806)
🐞🩹 the ssg build no longer bundles the unused deploy server entry (by @wmertens in #8806)
🐞🩹 a prerendered route's loader with no static sidecar now falls through to SSR instead of failing as a missing static asset (by @briancarbone in #8760)
🐞🩹 preserve strict loader URL isolation during route resolution (by @wmertens in #8836)
🐞🩹 ensure dev SPA navigation loads route loader data correctly for catch-all and base-prefixed routes (by @Varixo in #8805)
Updated dependencies [
96fe9e1,b0bdbf3,77ae28f,dbdf85f,570aec5,b5a74df,3672ae5,2e2a913,1921d7a,8e75051,e28ae7c,3710734,e9d5d98,12387da,e70b299,9fd1303,bed0127,1da9aa6,f9a0e83,2a47192,3a0df67,ee013ae,d3b6678,885367a,8fc5762,03fae8a,fd9f197,4917019,abaae23,15ea2d8]:@qwik.dev/devtools@0.3.0-beta.2
Minor Changes
✨ customize which tabs appear in the devtools sidebar (by @Aejkatappaja in #8833)
✨ reach hidden devtools tabs from a sidebar More panel (by @Aejkatappaja in #8833)
✨ drag to reorder the visible devtools sidebar tabs (by @Aejkatappaja in #8833)
Patch Changes
refactor(devtools): extract findComponentKey and component-name derivation as runtime utilities (by @Aejkatappaja in #8803)
The component-key lookup and the "name after the last underscore" derivation were inlined inside
the hook runtime installer and duplicated across getComponentDetail, setSignalValue, and
getComponentTreeSnapshot. They are now top-level
__qwik_find_component_key__and__qwik_derive_component_name__functions, emitted by name into the injected runtime bundle andreused by every caller. Being pure, they are also covered by unit tests.
refactor: share the page data source contract between the ui and extension (by @Aejkatappaja in #8804)
refactor(devtools): single source of truth for shared protocol types (by @Aejkatappaja in #8712)
The VNode tree node, component detail entry, and render event shapes were declared
three times: in the browser extension, in the devtools UI, and in the kit client
bridge. They now live once in @qwik.dev/devtools/kit (protocol module) as
DevtoolsVNodeTreeNode, DevtoolsComponentDetailEntry, and DevtoolsRenderEvent, and
every consumer imports them from there.
refactor(devtools): generate the extension VNode bridge from one shared source (by @Aejkatappaja in #8713)
The browser extension's
public/vnode-bridge.jsduplicated the VNode bridge logic(tree building, prop serialization, name normalization, DOM resolution, highlighting,
component tree update posting) that the Vite plugin already owns via
__qwik_install_vnode_runtime__/createVNodeRuntime(). It is now generated fromthat single canonical source by the extension build (alongside
devtools-hook.js)and is no longer committed.
refactor: drive the devtools sidebar from a configurable visible-tabs list (by @Aejkatappaja in #8833)
✨ enhances the devtools package management experience by adding dependency inspection, search, install, update, and feedback flows to the Packages panel. (by @JerryWu1234 in #8768)
@qwik.dev/react@2.0.0-beta.38
Patch Changes
96fe9e1,b0bdbf3,77ae28f,dbdf85f,570aec5,b5a74df,3672ae5,2e2a913,1921d7a,8e75051,e28ae7c,3710734,e9d5d98,12387da,e70b299,9fd1303,bed0127,1da9aa6,f9a0e83,2a47192,3a0df67,ee013ae,d3b6678,885367a,8fc5762,03fae8a,fd9f197,4917019,abaae23,15ea2d8]:create-qwik@2.0.0-beta.38
eslint-plugin-qwik@2.0.0-beta.38