Skip to content

Redirects

Problem

Implement redirects 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.

Permanent and temporary URL redirects:

ts
const router = createRouter();

// Redirect old paths to new canonical ones (replaces history entry by default)
router.redirect('/old-about', '/about');
router.redirect('/legacy/users/:id', '/users/:id');

// Temporary redirect — push a new history entry
router.redirect('/beta', '/dashboard', { replace: false });

router
  .on('/about', renderAbout)
  .on('/users/:id', ({ params }) => renderUser(params.id))
  .on('/dashboard', renderDashboard)
  .start();

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.