📖 Scenario: You are building a simple website with Next.js. You want to organize your routes using route groups to keep your URL paths clean and easy to understand.
🎯 Goal: Create a Next.js app with route groups using (groupName) folders to organize pages without affecting the URL structure.
📋 What You'll Learn
Create a route group folder named (dashboard) inside the app directory
Inside (dashboard), create a page called page.tsx that renders a heading
Create a route group folder named (profile) inside the app directory
Inside (profile), create a page called page.tsx that renders a heading
Use the route groups so that the URLs are /dashboard and /profile without the group folder names in the URL
💡 Why This Matters
🌍 Real World
Route groups help developers organize large Next.js apps by grouping related pages together without adding extra URL segments. This keeps URLs clean and user-friendly.
💼 Career
Understanding route groups is important for Next.js developers to build scalable and maintainable web applications with clear folder structures and accessible layouts.
Progress0 / 4 steps
1
Create the (dashboard) route group folder and page
Inside the app directory, create a folder named (dashboard). Then create a file named page.tsx inside (dashboard) with a React component that returns an <h1> heading with the text Dashboard Page.
NextJS
Hint
Remember to use parentheses around the folder name to create a route group: (dashboard).
2
Create the (profile) route group folder and page
Inside the app directory, create a folder named (profile). Then create a file named page.tsx inside (profile) with a React component that returns an <h1> heading with the text Profile Page.
NextJS
Hint
Use parentheses around the folder name (profile) to create the route group.
3
Add a layout file inside (dashboard) to wrap its pages
Inside the (dashboard) folder, create a file named layout.tsx. This layout should be a React component that accepts children and returns a <section> element with an aria-label of Dashboard Section wrapping the children.
NextJS
Hint
The layout component wraps its children and adds semantic HTML with aria-label for accessibility.
4
Add a layout file inside (profile) to wrap its pages
Inside the (profile) folder, create a file named layout.tsx. This layout should be a React component that accepts children and returns a <section> element with an aria-label of Profile Section wrapping the children.
NextJS
Hint
Use the same pattern as the dashboard layout but change the aria-label to Profile Section.
Practice
(1/5)
1. What is the main purpose of using route groups with (groupName) in Next.js?
easy
A. To organize routes in folders without changing the URL structure
B. To change the URL path to include the group name
C. To create dynamic routes with parameters
D. To add middleware to specific routes
Solution
Step 1: Understand route groups concept
Route groups use parentheses in folder names to group routes logically without affecting the URL path.
Step 2: Compare URL effect
Since the URL does not include the group name, the main purpose is organization, not URL change.
Final Answer:
To organize routes in folders without changing the URL structure -> Option A
Quick Check:
Route groups = organize without URL change [OK]
Hint: Parentheses folders group routes but keep URLs clean [OK]
Common Mistakes:
Thinking group name appears in URL
Confusing with dynamic route parameters
Assuming it adds middleware automatically
2. Which of the following folder names correctly creates a route group named admin in Next.js?
easy
A. admin
B. (admin)
C. [admin]
D. {admin}
Solution
Step 1: Identify route group syntax
Route groups use parentheses around the folder name, like (groupName).
Step 2: Match folder name
The folder named (admin) correctly creates a route group called admin.
Final Answer:
(admin) -> Option B
Quick Check:
Parentheses folder = route group [OK]
Hint: Use parentheses for route groups, not brackets or braces [OK]
Common Mistakes:
Using square brackets which are for dynamic routes
Using curly braces which are invalid
Omitting parentheses and creating normal folders
3. Given this folder structure in Next.js app router:
Folders with parentheses group routes but do not add to URL path.
Step 2: Map folder names to URLs
The (dashboard) group is invisible in URL, so app/(dashboard)/page.tsx maps to / because the page.tsx inside is the root of that group. Similarly, app/(dashboard)/settings/page.tsx maps to /settings. The app/profile/page.tsx maps to /profile.
Final Answer:
/, /settings, /profile -> Option D
Quick Check:
Route groups hide folder name but keep nested paths [OK]
Hint: Route groups hide folder name but keep nested routes [OK]
Common Mistakes:
Including parentheses folder name in URL
Ignoring nested folder names inside groups
Assuming root group maps to root URL
4. You created a folder named (admin) inside app but your routes under it are not working. What is the most likely mistake?
medium
A. You forgot to add a page.tsx file inside the (admin) folder
B. You used square brackets instead of parentheses for the folder name
C. You named the folder admin without parentheses
D. You placed the (admin) folder outside the app directory
Solution
Step 1: Check route group folder requirements
Route groups require a page.tsx or similar file inside to define the route component.
Step 2: Identify missing page file issue
If routes inside (admin) don't work, missing page.tsx is the most common cause.
Final Answer:
You forgot to add a page.tsx file inside the (admin) folder -> Option A
Quick Check:
Missing page.tsx = no route rendered [OK]
Hint: Always add page.tsx inside route group folders [OK]
Common Mistakes:
Confusing folder naming syntax
Placing folders outside app directory
Assuming route groups auto-create pages
5. You want to create two separate route groups (marketing) and (sales) inside app with pages home.tsx and contact.tsx each. How should you organize folders so URLs are /home and /contact without group names in URL?
hard
A. app/(marketing)/home.tsx and app/(sales)/contact/page.tsx
B. app/(marketing)/home.tsx and app/(marketing)/(sales)/contact.tsx
C. app/(marketing)/home.tsx and app/(sales)/contact.tsx
D. app/home.tsx and app/contact.tsx
Solution
Step 1: Use route groups to hide folder names
Folders named with parentheses group routes without adding to URL path.
Step 2: Place pages inside separate route groups
Placing home.tsx inside (marketing) and contact.tsx inside (sales) keeps URLs as /home and /contact.
Final Answer:
app/(marketing)/home.tsx and app/(sales)/contact.tsx -> Option C
Quick Check:
Separate groups hide folder names, URLs stay clean [OK]
Hint: Put pages inside separate parentheses folders for clean URLs [OK]
Common Mistakes:
Nesting groups causing longer URLs
Placing pages outside groups losing organization
Using page.tsx inconsistently inside groups
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.