#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
4 min read
•Question 23 of 47medium

What are Intercepting Routes in Next.js?

Intercepting routes for modals.

What You'll Learn

  • Intercepting route convention
  • Modal patterns
  • Soft navigation

Convention

code.jsJavaScript
(.)  - Same level
(..) - One level up
(..)(..) - Two levels up
(...) - From root

Modal Example

code.jsJavaScript
app/
ā”œā”€ā”€ @modal/
│   ā”œā”€ā”€ default.tsx
│   └── (.)photo/[id]/
│       └── page.tsx      ← Intercepted (modal)
ā”œā”€ā”€ photo/[id]/
│   └── page.tsx          ← Full page
└── layout.tsx

Layout

code.txtTSX
// app/layout.tsx
export default function Layout({
  children,
  modal,
}: {
  children: React.ReactNode;
  modal: React.ReactNode;
}) {
  return (
    <>
      {children}
      {modal}
    </>
  );
}

Modal Component

code.txtTSX
// app/@modal/(.)photo/[id]/page.tsx
'use client';

import { useRouter } from 'next/navigation';

export default function PhotoModal({ params }) {
  const router = useRouter();

  return (
    <div className="modal-overlay" onClick={() => router.back()}>
      <div className="modal">
        <img src={`/photos/${params.id}`} />
      </div>
    </div>
  );
}

Default (Empty)

code.txtTSX
// app/@modal/default.tsx
export default function Default() {
  return null;
}