Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Next.js Tutorial
  • Next.js Components
  • Next.js Functions
  • Next.js Deployment
  • Next.js Projects
  • Next.js Routing
  • Next.js Styles
  • Next.js Server-Side Rendering
  • Next.js Environment Variables
  • Next.js Middleware
  • Next.js Typescript
  • Next.js Image Optimization
  • Next.js Data Fetching
Open In App
Next Article:
Functions in Next JS
Next article icon

Functions in Next JS

Last Updated : 26 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Next.js provides a suite of functions and hooks that enhance server-side rendering, static generation, routing, and more. These functions are essential for managing data fetching, handling requests, and optimizing performance in Next.js applications.

Next.js Functions

Next.js functions simplify server-side rendering and static site generation, crucial for optimizing performance. Key functions include getInitialProps, getServerSideProps, getStaticPaths, and getStaticProps, which manage data fetching and page rendering. Hooks like useRouter and useAmp aid in navigation and AMP page detection, respectively. These functions enhance flexibility and efficiency in Next.js applications.

These functions are given below in details.

Table of Content

  • getInitialProps
  • getServerSideProps
  • getStaticPaths
  • getStaticProps
  • NextRequest
  • NextResponse
  • useAmp
  • useReportWebVitals
  • useRouter
  • userAgent

getInitialProps

Next.js getInitialProps fetches initial data for server-side rendering in custom pages and components, used for pre-rendering data on the server before sending it to the client.

MyPage.getInitialProps = async (context) => {     const res = await fetch('https://api.example.com/data');     const data = await res.json();     return { data }; };

getServerSideProps

Next.js getServerSideProps fetches data on each request for server-side rendering, allowing dynamic content generation for each request.

export async function getServerSideProps(context) {     const res = await fetch('https://api.example.com/data');     const data = await res.json();   return { props: { data } }; }

getStaticPaths

Next.js getStaticPaths defines dynamic routes to be pre-rendered at build time, used with getStaticProps for static generation of dynamic pages.

export async function getStaticPaths() {     const paths = [{ params: { id: '1' } }, { params: { id: '2' } }];     return { paths, fallback: false }; }

getStaticProps

Next.js getStaticProps fetches data at build time for static generation, enabling static site generation with pre-rendered data.

export async function getStaticProps(context) {     const res = await fetch('https://api.example.com/data');     const data = await res.json();     return { props: { data } }; }

NextRequest

NextRequest provides a typed response object for handling API routes and middleware. Extends the native Response interface with Next.js-specific properties.

export default function handler(req, res) {     res.status(200).json({ message: 'Hello, world!' }); }

NextResponse

NextResponse provides a typed response object for API routes and middleware, extending the native Response interface with Next.js-specific properties.

export default function handler(req, res) {     res.status(200).json({ message: 'Hello, world!' }); }

useAmp

Next.js useAmp determines if the current page is being rendered in AMP mode, facilitating AMP-specific rendering logic.

import { useAmp } from 'next/amp';  function MyComponent() {     const isAmp = useAmp();     return <div>{isAmp ? 'AMP Mode' : 'Non-AMP Mode'}</div>; }

useReportWebVitals

Next.js useReportWebVitals reports web vitals metrics for performance monitoring, aiding in the measurement of web performance metrics.

import { useReportWebVitals } from 'next/reportWebVitals';  useReportWebVitals(metric => {     console.log(metric); });

useRouter

Next.js useRouter provides access to the Next.js router object, enabling navigation and access to route parameters in components

import { useRouter } from 'next/router';  function MyComponent() {   const router = useRouter();   return <button onClick={() => router.push('/about')}>Go to About</button>; }

userAgent

Next.js userAgent retrieves the user agent string for the current request, useful for server-side device detection and handling.

export default function handler(req, res) {   const userAgent = req.headers['user-agent'];   res.status(200).json({ userAgent }); }

Steps to Create the NextJS Application

Step 1: To create a NextJS project we require NodeJS installed on our system. You can install it from the official website of NodeJS

Step 2: To create a project run the following script in the terminal.

npx create-next-app demo

Step 3: Navigate to the root directory of your project.

cd demo

Project Structure:

Screenshot-2024-02-07-110956
Project Structure

The updated dependencies in package.json file will look like:

"dependencies": {     "react": "^18",     "react-dom": "^18",     "next": "14.1.0" }

Example: Below is the example next.js getStaticProps function. It is used to pre-fetch Pokémon data from an API at build time and pass it to the Home component for rendering as a static, pre-rendered page.

JavaScript
// Filename - pages/index.js  // Page Component, receiving allPokemons // from getStaticProps export default function Home({ allPokemons }) { 	return ( 		<ul> 			{ /* mapping all the data inside  			an unordered list */} 			{allPokemons.map((poke) => ( 				<li key={poke.url}>{poke.name}</li> 			))} 		</ul> 	); }  export async function getStaticProps() {  	// Call the fetch method and passing  	// the pokeAPI link 	const response = await fetch( 		'https://pokeapi.co/api/v2/pokemon/');  	// Parse the JSON 	const data = await response.json();  	// Finally we return the result 	// inside props as allPokemons 	return { 		props: { allPokemons: data.results }, 	}; } 

Start your application using the following command.

npm run dev

Output:

Conclusion

Next.js functions and hooks provide essential tools for optimizing server-side rendering, static generation, routing, and performance. By leveraging these functions, developers can build robust and high-performance web applications.


Next Article
Functions in Next JS

P

pritamfulari27
Improve
Article Tags :
  • Web Technologies
  • ReactJS
  • Next.js

Similar Reads

    Next.js Function Fetch
    Next.js is a React framework that enhances UI development with built-in features like server-side rendering and static site generation. It supports data fetching both on the server and client sides, enabling developers to load and manage data efficiently. By utilizing functions like fetch, Next.js a
    6 min read
    Server Actions in Next.js
    Server actions in Next.js refer to the functionalities and processes that occur on the server side of a Next.js application. It enables efficient, secure handling of server-side operations like data fetching, form processing, and database interactions, enhancing application security and performance
    4 min read
    Functions in JavaScript
    Functions in JavaScript are reusable blocks of code designed to perform specific tasks. They allow you to organize, reuse, and modularize code. It can take inputs, perform actions, and return outputs.JavaScriptfunction sum(x, y) { return x + y; } console.log(sum(6, 9));Output15 Function Syntax and W
    5 min read
    Next.js Functions: redirect
    Next.js is a React framework that is used to build full-stack web applications. It is used both for front-end as well as back-end. It comes with a powerful set of features to simplify the development of React applications. One of its features is redirect Function. In this article, we will learn abou
    2 min read
    Next.js Functions: notFound
    Next.js is a React framework that is used to build full-stack web applications. It is used both for front-end and back-end development, simplifying React development with powerful features. In this article, we will explore the notFound function, which is used to handle cases where a requested resour
    3 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences