Routing in Nextjs: A Complete Guide with Step-by-Step Examples

Spread the love


Routing in NextJS” is a cornerstone feature of Next.js, a leading React framework known for its efficiency and developer-friendly approach. This guide dives into how Next.js simplifies the traditional complexities of web routing through a file-system-based approach, allowing developers to create new routes by simply adding files to the pages directory. Such ease and efficiency are what make Next.js a preferred choice for modern web development.

Beyond just simplifying routing, Next.js enhances the scalability and maintainability of applications. This introduction to routing in Next.js will prepare you to fully leverage the framework’s routing capabilities, covering everything from basic static routes to more sophisticated dynamic and nested routing configurations. Whether you’re new to Next.js or looking to deepen your understanding of its routing system, this article provides step-by-step examples and insights that will help you build seamless navigational structures in your web applications.

By mastering “Routing in Next,” developers can ensure that their applications are not only functional but also intuitive and responsive to user interactions. Let’s begin by exploring the fundamental concepts of routing in Next.js, laying the groundwork for the advanced techniques discussed throughout this guide.

Also, Read: Complete Next.js Tutorial: Mastering Full Stack Development

Basics of Routing in NextJS

Unlike many traditional web frameworks that rely on configuration-based routing, Next.js uses a file-system-based routing approach. This method is straightforward: each file in the pages directory corresponds to a route based on its filename.

Example: Basic Static Routing

To create a simple static route:

  1. Create a file in the pages directory. For example, creating about.js will automatically create the route /about.
  2. Add content to about.js:
function About() {
  return <div>About us</div>;

export default About;

When you navigate to /about in your browser, you will see the content “About us“. This demonstrates how “Routing in NextJS” simplifies the process of setting up routes.

Also, Read: How to Use Dynamic Import in Nextjs

Setting Up Your Next.js Project

Ensure you have Node.js installed on your computer. Then, setting up a Next.js project is quick and straightforward, providing a robust foundation for exploring more complex routing scenarios.

Step-by-Step Project Setup

  1. Create a new Next.js project:
npx create-next-app my-next-project

2. Navigate into your project directory:

cd my-next-project

3. Start the development server:

npm run dev

This will serve your new Next.js application on http://localhost:3000, where you can start experimenting with “Routing in NextJS“.

Also, Read: Next.js Dynamic Route Segments: A step by step with Examples

Dynamic Routing in NextJS

Dynamic routing allows you to handle routes that require parameters, such as a unique identifier for a blog post.

Example: Creating a Dynamic Route for Blog Posts

  1. Create a dynamic page:
    Inside the pages directory, create a new file named [slug].js which will handle individual blog posts.
  2. Code your dynamic page:
import { useRouter } from 'next/router';

const Post = () => {
  const router = useRouter();
  const { slug } = router.query;

  return <div>Post: {slug}</div>;

export default Post;

3. Test your dynamic route:
Navigate to http://localhost:3000/posts/your-post-title and see the router display the slug dynamically.

Nested Routes and Layouts in Next.js

For more complex applications, you might need nested routes, which Next.js handles gracefully with its file-based routing.

Also, Read: How to Enable Fast Refresh in Nextjs

Example: Implementing Nested Routes

Suppose you want to have a blog with a main index page and individual blog posts.

  1. Create a blog directory:
    In the pages directory, make a new folder named blog.
  2. Add an index page and a dynamic post page:
    • Inside blog, create index.js for the blog listing.
    • Create [id].js in the same directory for individual posts.
  3. Structure your blog:
// pages/blog/index.js
function Blog() {
  return <div>Welcome to the Blog</div>;

export default Blog;

// pages/blog/[id].js
import { useRouter } from 'next/router';

const Post = () => {
  const router = useRouter();
  const { id } = router.query;

  return <div>Blog Post {id}</div>;

export default Post;

When a user visits /blog, they see the blog listing, and when visiting /blog/1, they see “Blog Post 1“.


Routing in NextJS” provides a powerful and intuitive way to manage web application routes. By leveraging the capabilities of Next.js, you can build applications that are both scalable and easy to maintain. Experimenting with different routing patterns will help you fully harness the power of Next.js for your projects.

By following the expanded examples and detailed steps provided, you’ll gain a thorough understanding of routing in Next.js, empowering you to build more dynamic and complex web applications.

Leave a Comment