Skip to content

Nested catch-all routes flattened instead of grouped as children after upgrading from Nuxt 3.15.4 to 3.17.5 #32365

@vsergiu93

Description

@vsergiu93

Environment

  • Operating System: Linux
  • Node Version: v22.13.1
  • Nuxt Version: 3.17.4
  • CLI Version: 3.25.1
  • Nitro Version: 2.11.12
  • Package Manager: npm@10.9.2
  • Builder: -
  • User Config: devtools, colorMode, compatibilityDate, experimental, routeRules, app, icon, modules, fonts, image, tailwindcss, gtm, router, components, srcDir, schemaOrg, runtimeConfig, build, nitro, vite, headlessui, imports, $production
  • Runtime Modules: ./src/modules/logger/module, ./src/modules/error-pages/module, floating-vue/nuxt@5.2.2, @nuxtjs/eslint-module@4.1.0, nuxt-headlessui@1.1.4, @vueuse/nuxt@10.9.0, nuxt-esi-tags@1.0.8, @nuxt/test-utils/module@3.14.2, radix-vue/nuxt@1.9.14, @nuxt/ui@2.21.0, nuxt-auth-utils@0.5.15, @zadigetvoltaire/nuxt-gtm@0.0.13, @nuxt/image@1.8.0, nuxt-schema-org@3.5.0, @nuxt/fonts@0.10.3
  • Build Modules: -

Reproduction

https://stackblitz.com/edit/github-9xvsdsz9?file=pages%2F%5B...layout%5D%2Fpage-%5Bpage%5D.vue

I think it can be easily reproduced by having the following folder structure in /app/pages/ :
pages/
├── [...layout].vue
├── [...layout]/
│ ├── index.vue
│ └── page-[page].vue

Describe the bug

TL;DR With this PR a bug was introduced, and nested catch-all routes are no logger properly grouped as children.

After upgrading from Nuxt 3.15.4 to 3.17.5, nested catch-all routes are no longer being grouped as children but are instead being flattened into separate top-level routes, breaking our existing URL structure.

I went in to more details here and here.

Let me know if you need more info.

Additional context

No response

Logs

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions