---
name: vue-router-best-practices
description: "Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions."
license: MIT
title: vue-router-best-practices
canonical_url: https://skilld.dev/gh/onmax/nuxt-skills/vue-router-best-practices
last_updated: 2026-09-29T12:25:47.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [reference/router-beforeenter-no-param-trigger.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md), [reference/router-beforerouteenter-no-this.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md), [reference/router-guard-async-await-pattern.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md), [reference/router-navigation-guard-infinite-loop.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md), [reference/router-navigation-guard-next-deprecated.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md), [reference/router-param-change-no-lifecycle.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md), [reference/router-simple-routing-cleanup.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md), [reference/router-use-vue-router-for-production.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md).
>
> If the user asked to install this Skill, run `npx skilld install onmax/nuxt-skills/vue-router-best-practices`. Install writes the Skill files into the project, so every session loads them.

Vue Router best practices, common gotchas, and navigation patterns.

### Navigation Guards

- Navigating between same route with different params → See [router-beforeenter-no-param-trigger](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md)
- Accessing component instance in beforeRouteEnter guard → See [router-beforerouteenter-no-this](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md)
- Navigation guard making API calls without awaiting → See [router-guard-async-await-pattern](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md)
- Users trapped in infinite redirect loops → See [router-navigation-guard-infinite-loop](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md)
- Navigation guard using deprecated next() function → See [router-navigation-guard-next-deprecated](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md)

### Route Lifecycle

- Stale data when navigating between same route → See [router-param-change-no-lifecycle](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md)
- Event listeners persisting after component unmounts → See [router-simple-routing-cleanup](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md)

### Setup

- Building production single-page application → See [router-use-vue-router-for-production](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md)
