Skip to content

Wildcard Routes

Problem

Implement wildcard routes in a production-friendly way with @vielzeug/routeit while keeping setup and cleanup explicit.

Runnable Example

The snippet below is copy-paste runnable in a TypeScript project with @vielzeug/routeit installed.

Capture the rest of a path as a named param:

ts
const router = createRouter();

// Named wildcard — ctx.params.rest = 'guide/getting-started'
router.on(
  '/docs/:rest*',
  ({ params }) => {
    renderDoc(params.rest);
  },
  { name: 'doc' },
);

// Catch-all 404
router.on('*', () => render404());

router.start();

// URL builder works with named wildcard params
router.url('doc', { rest: 'api/createrouter' }); // → '/docs/api/createrouter'

Expected Output

  • The example runs without type errors in a standard TypeScript setup.
  • The main flow produces the behavior described in the recipe title.

Common Pitfalls

  • Forgetting cleanup/dispose calls can leak listeners or stale state.
  • Skipping explicit typing can hide integration issues until runtime.
  • Not handling error branches makes examples harder to adapt safely.