Bird
Raised Fist0
NextJSframework~8 mins

Nested routes with folders in NextJS - Performance & Optimization

Choose your learning style10 modes available
Performance: Nested routes with folders
MEDIUM IMPACT
This affects the page load speed and initial rendering by organizing routes into folders, which impacts how Next.js bundles and serves pages.
Organizing routes for a multi-level page structure
NextJS
app/
  about/
    page.js
    team/page.js
    careers/page.js
Nested folders enable Next.js to split code per route segment, loading only needed code.
📈 Performance GainSmaller initial bundles; faster LCP due to route-based code splitting
Organizing routes for a multi-level page structure
NextJS
pages/
  about.js
  about-team.js
  about-careers.js
All routes are flat, leading to duplicated code and larger page bundles.
📉 Performance CostLarger page bundles due to duplication block rendering longer; delays LCP
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Flat routes in single folderLow (few nodes)Low (few reflows)High (larger bundles delay paint)[X] Bad
Nested routes with foldersLow (few nodes)Low (few reflows)Low (smaller bundles speed paint)[OK] Good
Rendering Pipeline
Next.js uses nested folders to create route segments that map to separate bundles. When a user navigates, only the relevant bundles load, reducing work in Style Calculation, Layout, and Paint.
→Network
→Style Calculation
→Layout
→Paint
⚠️ BottleneckNetwork and Style Calculation due to larger bundles if routes are flat
Core Web Vital Affected
LCP
This affects the page load speed and initial rendering by organizing routes into folders, which impacts how Next.js bundles and serves pages.
Optimization Tips
1Use nested folders to enable route-based code splitting in Next.js.
2Avoid flat route structures that lead to duplicated code and larger bundles.
3Check bundle sizes in DevTools Network tab to verify code splitting.
Performance Quiz - 3 Questions
Test your performance knowledge
How does using nested folders for routes in Next.js affect page load?
AIt increases DOM nodes causing more reflows.
BIt combines all code into one large bundle, slowing down load.
CIt enables code splitting, reducing initial bundle size and improving LCP.
DIt disables lazy loading of components.
DevTools: Network
How to check: Open DevTools > Network tab, filter by JS files, then navigate between nested routes to see which bundles load and their sizes.
What to look for: Look for smaller JS chunks loading per route and faster page load times indicating good code splitting.

Practice

(1/5)
1. In Next.js 14 with the App Router, what does placing a page.tsx file inside a nested folder under app/ do?
easy
A. Bundles all pages into a single route regardless of folder structure.
B. Overrides the root page.tsx and disables routing.
C. Creates a nested route matching the folder path in the URL.
D. Automatically generates API endpoints instead of pages.

Solution

  1. Step 1: Understand folder structure in Next.js App Router

    Each folder inside app/ represents a route segment in the URL.
  2. Step 2: Role of page.tsx in nested folders

    A page.tsx inside a nested folder creates a page for that nested route path.
  3. Final Answer:

    Creates a nested route matching the folder path in the URL. -> Option C
  4. Quick Check:

    Nested folder + page.tsx = nested route [OK]
Hint: Remember: folder path + page.tsx = nested URL route [OK]
Common Mistakes:
  • Thinking nested folders disable routing
  • Confusing API routes with page routes
  • Assuming all pages merge into one route
2. Which of the following is the correct folder and file structure to create a nested route /dashboard/settings in Next.js App Router?
easy
A. app/dashboard/settings/page.tsx
B. app/dashboard-settings/page.tsx
C. app/dashboard/page.tsx/settings.tsx
D. app/page.tsx/dashboard/settings.tsx

Solution

  1. Step 1: Identify folder nesting for nested routes

    Nested routes require nested folders matching the URL segments.
  2. Step 2: Match file placement for the nested page

    The page.tsx file must be inside the deepest folder representing the route.
  3. Final Answer:

    app/dashboard/settings/page.tsx -> Option A
  4. Quick Check:

    Nested folders + page.tsx file = nested route [OK]
Hint: Use nested folders named after URL segments with page.tsx inside [OK]
Common Mistakes:
  • Placing page.tsx outside the nested folder
  • Using hyphens instead of folders for nested routes
  • Misplacing files inside page.tsx instead of folders
3. Given this folder structure inside app/:
app/
  blog/
    [slug]/
      page.tsx
  page.tsx
What URL will render the page inside app/blog/[slug]/page.tsx?
medium
A. /blog/[slug]
B. /blog/*
C. /blog/{slug}
D. /blog/:slug

Solution

  1. Step 1: Understand dynamic route syntax in Next.js

    Folders with square brackets like [slug] represent dynamic route segments.
  2. Step 2: Translate dynamic folder to URL pattern

    The dynamic segment is represented as :slug in URL patterns, meaning any value matches.
  3. Final Answer:

    /blog/:slug -> Option D
  4. Quick Check:

    Dynamic folder [slug] = URL param :slug [OK]
Hint: Dynamic folders [name] map to :name in URLs [OK]
Common Mistakes:
  • Using literal [slug] in URL
  • Confusing dynamic segment syntax
  • Assuming wildcard * matches dynamic segments
4. You have this folder structure:
app/
  products/
    page.tsx
  details/
    page.tsx
But navigating to /products/details shows a 404 error. What is the likely cause?
medium
A. The details/page.tsx file is misplaced; it should be inside products/details/page.tsx.
B. The details folder should be named [details] for dynamic routing.
C. The products folder must not have its own page.tsx when nested routes exist.
D. Missing page.tsx inside details folder.

Solution

  1. Step 1: Verify folder and file placement

    The details/page.tsx must be inside products/details/ folder to match the route /products/details.
  2. Step 2: Check the given structure

    The structure shows details/page.tsx inside app/ root, not nested under products/.
  3. Final Answer:

    The details/page.tsx file is misplaced; it should be inside products/details/page.tsx. -> Option A
  4. Quick Check:

    Nested route files must be inside matching nested folders [OK]
Hint: Check file location matches nested folder path exactly [OK]
Common Mistakes:
  • Misplacing nested page.tsx outside correct folder
  • Confusing dynamic and static folder names
  • Removing parent page.tsx unnecessarily
5. You want to create a nested route /profile/settings/privacy in Next.js App Router. You also want to share a layout between /profile/settings and /profile/settings/privacy. How should you organize your folders and files inside app/?
hard
A. app/profile/settings/privacy/page.tsx only; layouts are not needed for nested routes
B. app/profile/settings/layout.tsx, app/profile/settings/page.tsx, app/profile/settings/privacy/page.tsx
C. app/profile/layout.tsx, app/profile/settings/page.tsx, app/profile/settings/privacy/page.tsx
D. app/profile/settings/page.tsx, app/profile/settings/privacy/layout.tsx, app/profile/settings/privacy/page.tsx

Solution

  1. Step 1: Understand layout sharing in nested routes

    Layouts placed in a folder apply to all nested routes inside that folder.
  2. Step 2: Organize folders for shared layout

    To share layout between /profile/settings and /profile/settings/privacy, place layout.tsx inside settings/ folder.
  3. Step 3: Place page.tsx files correctly

    Put page.tsx inside settings/ and inside settings/privacy/ for those pages.
  4. Final Answer:

    app/profile/settings/layout.tsx, app/profile/settings/page.tsx, app/profile/settings/privacy/page.tsx -> Option B
  5. Quick Check:

    Layout in parent folder shares UI with nested pages [OK]
Hint: Put layout.tsx in parent folder to share with nested routes [OK]
Common Mistakes:
  • Placing layout.tsx too deep to share with sibling routes
  • Omitting layout.tsx and expecting shared UI
  • Misplacing page.tsx files outside correct folders
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