All skills
skilld-dev avatar

/tanstack-vue-router-skilld

@b9c39cb

Use when writing, debugging, or refactoring code that imports @tanstack/vue-router (TanStack Router for Vue). Covers setup, file-based and code-based routes, composables returning Ref, Link, loaders, search params, SSR, and v1.170.x deprecations.

Use this Skill: https://skilld.dev/gh/skilld-dev/vue-ecosystem-skills/tanstack-vue-router-skilld

This session only. Nothing lands on disk.

referencesssr.md

≈723 tokens on demand. Your agent reads this file only when SKILL.md points to it.

SSR

Guide: https://tanstack.com/router/latest/docs/framework/vue/guide/ssr

Entry points

  • @tanstack/vue-router/ssr/server: RouterServer (http handler component), renderRouterToString(router), renderRouterToStream(router), defaultRenderHandler, defaultStreamHandler, plus dehydrateRouter/router-core server utilities (src/ssr/server.ts:1-6)
  • @tanstack/vue-router/ssr/client: RouterClient (src/ssr/client.ts:1)

Server

import { createRouter } from '@tanstack/vue-router'
import { renderRouterToString } from '@tanstack/vue-router/ssr/server'

const router = createRouter({ routeTree, ssr: true })
// per request:
router.update({ context: { auth } })
const html = await renderRouterToString(router)

Streaming uses renderRouterToStream with deferred loader values (see references/data-loading.md); defaultStreamHandler/defaultRenderHandler wire common Node http shapes. Handlers accept { req, res, router }.

Document shell components

Root route component for SSR apps:

import { Html, HeadContent, Body, Outlet, Scripts } from '@tanstack/vue-router'

function RootComponent() {
  return (
    <Html>
      <head>
        <HeadContent />
      </head>
      <Body>
        <Outlet />
        <Scripts />
      </Body>
    </Html>
  )
}
  • <Html>, <Body> — html/body tags with hydration-safe attributes
  • <HeadContent> — renders route head() output: meta, links, styles (src/HeadContent.tsx)
  • <Scripts>, <ScriptOnce> — script injection; ScriptOnce for one-shot inline scripts
  • <Asset> — preload/preload-module/link tags for build assets (streaming SSR)
  • <ClientOnly> — renders fallback until mounted; use for browser-only widgets, or set ssr: false on a route (src/Match.tsx:67-80)
  • headers route option sets HTTP response headers; scripts() injects script tags

Head guide: https://tanstack.com/router/latest/docs/framework/vue/guide/document-head-management

Client hydration

import { createRouter } from '@tanstack/vue-router'
import { RouterClient } from '@tanstack/vue-router/ssr/client'
import { routeTree } from './routeTree.gen'

const router = createRouter({ routeTree })
const client = new RouterClient(router)
// then mount <RouterProvider :router="router" />; hydration reuses dehydrated loader data

Behavior notes

  • Server render is single-pass: hooks skip store subscriptions during SSR (src/useRouterState.tsx:39-51, src/useMatch.tsx:79-97); do not expect watcher-driven updates on the server.
  • Routes with ssr: false render the pending component until hydration; 'data-only' skips rendering HTML but ships loader data.
  • isbot is a runtime dependency of the package for bot detection in handlers (package.json:65).
  • History on the server: pass createMemoryHistory({ initialEntries: [url] }) when constructing the request router.

Source: SKILL.md on GitHub

1 warning9d3 checks · Risk SAFE
  • Gen Agent Trust Hub9d

    The skill is a comprehensive collection of documentation, API references, and guides for the TanStack Router library. It provides technical information and best practices for implementing routing in web applications. No malicious code, prompt injections, or data exfiltration patterns were detected.

  • Socket9d

    No alerts

  • Snyk9d

    Risk: MEDIUM · 1 issue

Signed by skilld at b9c39cb. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated last week

README badge

README badge for skilld-dev/vue-ecosystem-skills/tanstack-vue-router-skilld