$ the-wire · showcase
Suspense stops leaking pending deps; Pinia HMR keeps renamed keys
By RepoJournal · Filed · About Vue.js · Composed from the cited sources · methodology
A cluster of runtime-core fixes closes the Suspense paths that left parent boundaries stuck on their fallback, and Pinia's hot update no longer deletes a property it just wrote when that property changes kind.
fix(suspense): release parent dep on suspensible unmount vuejs/core
A nested <Suspense suspensible> removed while it and its parent are both pending incremented parentSuspense.deps without a matching release, so the outer boundary stayed on its fallback forever with nothing logged. The fix releases that dependency on unmount. This is a breaking change only in the sense that a boundary previously frozen in fallback will now resolve.
fix(suspense): resolve async deps whose pending cycle was discarded vuejs/core
Async components whose pending cycle was discarded, switched away from or revisited, now resolve into the correct branch, and abandoned async work no longer holds up the active one. Hydration is fixed for the same switch-away-and-back case.
fix(hmr): handle properties that change kind (#3203) vuejs/pinia
Because _hotUpdate applied new state, actions and getters before removing stale keys, a name that changed kind was deleted right after being set: changing <code>const double = computed(() => n.value * 2)</code> to <code>const double = ref(5)</code> left store.double undefined while store.$state.double was 5, until a full reload. Cleanup now runs first, closing vuejs/pinia#3203.
fix(hydration): only update component el when replacing its host node vuejs/core
A nested node mismatch during SSR hydration could redirect a component's vnode.el into its own subtree, after which a dynamic component replacement throws NotFoundError, or inserts content after following siblings inside Suspense. Component and HOC host elements now sync only when parentComponent.vnode.el === node.
fix(kit): keep component tree order in sync after reorders vuejs/devtools
The Components tree kept the old sibling order after a keyed reorder, such as a reversed v-for, because Vue reports component:updated only for the parent. The kit now recomputes children's domOrder and sends the reorder patch the protocol already defined but nothing emitted.
docs: mark the next guard argument as deprecated (#2863) vuejs/router
Also shipped: the router docs now mark the next guard argument as deprecated, devtools resolves vapor component root nodes, and a Dependabot group bumps actions/setup-node to 7.1.0 and actions/upload-artifact.
Action items
- → Migrate router guards off the next argument and return values instead vuejs/router [plan]