Skip to content

feat(browser): Vue Router and Nuxt integration entries - #1131

Open
JeremyFunk wants to merge 3 commits into
feat/browser-server-nextjsfrom
feat/browser-vue
Open

JeremyFunk wants to merge 3 commits into
feat/browser-server-nextjsfrom
feat/browser-vue

fix(browser): end Vue navigations cancelled without guards, hand erro…

7be71cb
Select commit
Loading
Failed to load commit list.
Maple Review Bot / Maple / review succeeded Sep 29, 2026 in 8m 41s

Confidence 4/5 · No issues found

Confidence 4/5 · likely safe to merge
Guard, redirect, cancellation and error-handoff paths are all exercised by the new browser tests against Vue Router 4 and 5.
quality 100/100 · no findings · tests covered · risk medium · 3/3 new units observable

Adds /vue and /nuxt entries to @maple-dev/browser (router navigation spans, Vue error reporting, Nitro Server-Timing, SSR span naming), with peer deps, exports and knip wiring. Contained to the browser SDK and safe to merge.

  • traceRouter opens one navigation span per Vue Router navigation, named from the route template
  • MapleVue / reportVueError report Vue-caught errors as vue.error, handing them back to Vue
  • nameSsrSpan renames the Nitro request span to ssr <route>
  • mapleNitroPlugin appends a traceparent Server-Timing entry to rendered pages
What was checked
  • traceRouter idempotence and the origin-identity redirect tracking (vue/index.ts:32, :22, tests at vue/index.browser.test.ts:166, :176)
  • MapleVue rethrow matches Vue's callWithErrorHandling(appErrorHandler…) path, so an unhandled error still reaches Vue's default handling
  • nameSsrSpan/mapleNitroPlugin leave an unmatched URL and a response with no active span unchanged (nuxt/index.test.ts:71, :101)
Observability coverage: 3 of 3 changes observable
Change Kind Observable Evidence
traceRouter navigation spans (vue/index.ts) client navigation yes startNavigation/endNavigation on Maple's tracer; guard errors recorded via captureException as vue_router.error
MapleVue / reportVueError (vue/index.ts) client error capture yes captureException(error, { name: "vue.error", attributes: { "vue.error.info": info } })
mapleNitroPlugin / nameSsrSpan (nuxt/index.ts) server render hook yes serverTiming() on render:response; trace.getActiveSpan()?.updateName("ssr <route>")

7be71cb · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple to ask about one.