Back to blog

June 2, 2026

Routes as product structure

Routes as product structure

Nested routes are not only a technical choice. They describe the shape of the product. When the URL, navigation, and page layout agree, the app becomes easier to remember.

Parent routes hold context

The parent route should establish the area: account, projects, billing, or whatever the user is working inside.

  1. The parent route names the workspace.
  2. The child route names the task.
  3. The tab list makes the relationship visible.

Child routes hold specific jobs

Tabs backed by child routes give each view a URL, history behavior, and a clear place in the app.

RouteMeaningComponent role
/app/projectsProject listIndex page
/app/projects/:idProject overviewParent + child index
/app/projects/:id/settingsProject settingsChild route
/app/projects/:id/statisticsProject statisticsChild route
<RouteTabs :tabs="tabs" fallback-value="overview" />
If a tab is important enough to share, refresh, or revisit, it probably deserves a route.

The payoff

When navigation, layout, and URL structure agree with each other, the app feels simpler than the amount of functionality it contains.

Route design questions

  • Does this view need a URL?
  • Would browser back/forward feel natural here?
  • Can the parent route explain the context without reading the child content?
  • Is there a sensible default child route?