$ the-wire · showcase
DevTools fixes v9 app scoping and Chrome worker restart detection
By RepoJournal · Filed · About Vue.js · Composed from the cited sources · methodology
Two v9 regressions in vuejs/devtools get fixed, while the experimental router rebuilds type-safe route props and strips build-time definePage metadata.
fix(kit): scope plugin hooks per app vuejs/devtools
The kit kept one adapter per plugin id and overwrote its descriptor.app with the latest app, so app scoping rejected hook payloads for every other app. Multi-app pages lost custom inspectors: only the last app to register Pinia showed stores in the Pinia tab, a v9 regression from v8.2.1 where each setupDevtoolsPlugin call got its own API bound to its own descriptor.
fix(chrome): recover detection after worker restart vuejs/devtools
The background service worker holds per-tab detection state only in memory and Chrome stops an idle worker after about 30 seconds, while frames stop publishing detection once they find Vue. If Chrome DevTools opened more than ~30s after page load, no Vue tab appeared until a reload, and the failure was certain when Vue ran only inside an iframe.
feat(experimental): support type safe route record props vuejs/router
Experimental route records can pass URL params, including query and hash params, to page components as props, type checked against typed route params and each view component's props in normalizeRouteRecord() and definePage() via the Volar plugin. The corresponding Volar change and an HMR e2e test checking a real Vite server back it up.
perf: strip build-time definePage properties vuejs/router
The ?definePage module no longer exports name, path, alias, and params; they are extracted at build time, or ignored with a warning when invalid. _mergeRouteRecordViews gets smaller and the unused experimental mergeRouteRecord is removed.
refactor(volar): only import the page component when definePage has props vuejs/router
definePage({ props }) is now the sole opt-in for prop checking, since the self import was only needed to check props: the typedDefineProps option is gone and _RoutePropsForFilePath reads params from the RouteMap. The create-vue desk was quiet, just Renovate bumps of aligned oxlint packages to ~1.88.0, oxfmt to ^0.73.0, vite packages, and @playwright/test to ^1.64.0.