Bird
Raised Fist0
NextJSframework~10 mins

Multiple root layouts with route groups in NextJS - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Multiple root layouts with route groups
Start: User visits URL
↓
Match route group folder
↓
Load root layout for group
↓
Render nested layouts/pages
↓
Display final page with correct layout
↓
End
When a user visits a URL, Next.js finds the matching route group folder, loads its root layout, then renders nested layouts and pages inside it, showing the final page with the correct layout.
Execution Sample
NextJS
app/
  (admin)/
    layout.tsx
    dashboard/page.tsx
  (marketing)/
    layout.tsx
    home/page.tsx
This folder structure shows two route groups, each with its own root layout and pages.
Execution Table
StepURL VisitedRoute Group MatchedLayout LoadedPage RenderedOutput
1/dashboard(admin)app/(admin)/layout.tsxapp/(admin)/dashboard/page.tsxAdmin dashboard page with admin layout
2/home(marketing)app/(marketing)/layout.tsxapp/(marketing)/home/page.tsxMarketing home page with marketing layout
3/No matching groupapp/layout.tsx (root)app/page.tsx (root)Default root layout and page
4End---No more routes to match
💡 Execution stops after rendering the matched page with its route group layout or default root layout if no group matches.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
URL-/dashboard/home/-
Route Group-(admin)(marketing)none-
Layout Loaded-app/(admin)/layout.tsxapp/(marketing)/layout.tsxapp/layout.tsx-
Page Rendered-app/(admin)/dashboard/page.tsxapp/(marketing)/home/page.tsxapp/page.tsx-
Key Moments - 2 Insights
Why does Next.js load a different layout for /dashboard and /home?
Because each URL matches a different route group folder ((admin) vs (marketing)), Next.js loads the root layout inside that group folder as shown in execution_table steps 1 and 2.
What happens if the URL does not match any route group?
Next.js falls back to the default root layout at app/layout.tsx and renders the root page, as shown in execution_table step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table. Which layout is loaded when visiting /home?
Aapp/layout.tsx
Bapp/(admin)/layout.tsx
Capp/(marketing)/layout.tsx
DNo layout is loaded
💡 Hint
Check the 'Layout Loaded' column for step 2 in the execution_table.
At which step does Next.js use the default root layout?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the 'Route Group Matched' and 'Layout Loaded' columns in execution_table.
If a new route group (blog) is added, how would the execution_table change for /post?
AA new row with route group (blog) and its layout loaded
BIt would use the (admin) layout
CIt would use the default root layout
DNo change, /post won't render
💡 Hint
Route groups map URLs to layouts as shown in steps 1 and 2.
Concept Snapshot
Multiple root layouts let you group routes visually.
Create folders with parentheses like (admin) or (marketing).
Each group folder has its own layout.tsx.
Next.js loads the layout matching the URL's group.
If no group matches, default root layout is used.
This helps organize big apps with different page styles.
Full Transcript
When a user visits a URL in a Next.js app using multiple root layouts with route groups, the framework first checks which route group folder matches the URL. Each route group is a folder named with parentheses, like (admin) or (marketing). Next.js then loads the root layout file inside that group folder, for example app/(admin)/layout.tsx. After loading the layout, it renders the nested pages inside that group, such as app/(admin)/dashboard/page.tsx. If the URL does not match any route group, Next.js falls back to the default root layout at app/layout.tsx and renders the root page. This system helps organize large apps by grouping routes and layouts logically. The execution table shows how different URLs load different layouts and pages step-by-step. Variables like URL, route group, layout loaded, and page rendered change as the app processes each request. Understanding this flow helps beginners see how Next.js picks the right layout for each route group.

Practice

(1/5)
1. What is the main purpose of using multiple root layouts in a Next.js app?
easy
A. To load all pages with the same layout
B. To change the URL structure automatically
C. To have different main designs for different parts of the app
D. To disable routing in some parts of the app

Solution

  1. Step 1: Understand root layouts

    Root layouts define the main design or structure for pages in a Next.js app.
  2. Step 2: Purpose of multiple root layouts

    Using multiple root layouts allows different parts of the app to have their own main design, improving organization and user experience.
  3. Final Answer:

    To have different main designs for different parts of the app -> Option C
  4. Quick Check:

    Multiple root layouts = different main designs [OK]
Hint: Multiple root layouts mean different main designs [OK]
Common Mistakes:
  • Thinking multiple root layouts change URLs
  • Assuming all pages share one layout
  • Believing layouts disable routing
2. Which folder name correctly creates a route group without changing the URL in Next.js?
easy
A. dashboard/(admin)/settings
B. dashboard/admin/settings
C. dashboard/[admin]/settings
D. dashboard/{admin}/settings

Solution

  1. Step 1: Identify route group syntax

    Route groups use parentheses in folder names to group routes without affecting URLs.
  2. Step 2: Check options

    Only dashboard/(admin)/settings uses parentheses correctly: (admin). Other options use brackets or braces which are for dynamic routes or invalid.
  3. Final Answer:

    dashboard/(admin)/settings -> Option A
  4. Quick Check:

    Route groups use parentheses ( ) [OK]
Hint: Route groups use ( ) in folder names [OK]
Common Mistakes:
  • Using square brackets [] for route groups
  • Using curly braces {} which are invalid
  • Confusing dynamic routes with route groups
3. Given this folder structure:
app/
  (marketing)/
    layout.js
    page.js
  (dashboard)/
    layout.js
    dashboard/page.js
What layout will the page at URL / use?
medium
A. Both layouts will be combined
B. The layout from (dashboard) folder
C. No layout will be applied
D. The layout from (marketing) folder

Solution

  1. Step 1: Understand route groups and root layouts

    Route groups like (marketing) and (dashboard) separate parts of the app with their own layouts.
  2. Step 2: Determine which route group matches URL '/'

    The root URL '/' matches the (marketing) group because it is the default or main group for the homepage.
  3. Final Answer:

    The layout from (marketing) folder -> Option D
  4. Quick Check:

    URL '/' uses (marketing) layout [OK]
Hint: Root URL uses main route group's layout [OK]
Common Mistakes:
  • Assuming dashboard layout applies to '/'
  • Thinking layouts combine automatically
  • Believing no layout applies by default
4. You created a route group folder named (admin) but your app shows a 404 error when visiting /admin. What is the likely mistake?
medium
A. You forgot to restart the Next.js server
B. Route group folders do not change URLs, so /admin URL does not exist
C. You must add a dynamic route file inside (admin) folder
D. Parentheses in folder names are invalid syntax

Solution

  1. Step 1: Understand route groups and URLs

    Route groups using parentheses group routes but do not add to the URL path.
  2. Step 2: Check URL vs folder name

    The folder (admin) does not create /admin URL. To have /admin URL, folder must be named 'admin' without parentheses.
  3. Final Answer:

    Route group folders do not change URLs, so /admin URL does not exist -> Option B
  4. Quick Check:

    Route groups don't add URL segments [OK]
Hint: Route groups don't add URL parts [OK]
Common Mistakes:
  • Thinking (admin) folder creates /admin URL
  • Believing parentheses are invalid
  • Assuming dynamic routes are needed here
5. You want to create two separate main layouts: one for public pages and one for user dashboard pages. You also want URLs like /login and /dashboard/profile. How should you organize your folders using multiple root layouts and route groups?
hard
A. Create app/(public)/layout.js and app/(dashboard)/layout.js, put pages inside each, and use route groups to keep URLs clean
B. Create app/public/layout.js and app/dashboard/layout.js folders without parentheses
C. Put all pages in app/layout.js and use conditional rendering inside layout
D. Use dynamic routes like app/[section]/layout.js to switch layouts

Solution

  1. Step 1: Use route groups for separate layouts

    Route groups with parentheses let you organize folders without affecting URLs, perfect for multiple root layouts.
  2. Step 2: Organize folders for public and dashboard

    Creating (public) and (dashboard) folders with their own layouts keeps code clean and URLs like /login and /dashboard/profile work as expected.
  3. Final Answer:

    Create app/(public)/layout.js and app/(dashboard)/layout.js, put pages inside each, and use route groups to keep URLs clean -> Option A
  4. Quick Check:

    Route groups + multiple root layouts = clean URLs and separate designs [OK]
Hint: Use ( ) folders for layouts without changing URLs [OK]
Common Mistakes:
  • Not using parentheses, causing URL changes
  • Putting all pages under one layout losing separation
  • Using dynamic routes incorrectly for layouts
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard