Design+Code logo

Quick links

Suggested search

Install NodeJS

The only requirement you need before you use NextJS is Node.js, version 10.13 or later, installed on your computer. To check if you have the right Node version, simply type node -v in the Terminal.

Screen Shot 2021-04-28 at 2.40.10 PM

If you don't have Node, you can install it with the following command:

brew install node

Create your app

Next, we'll need to create our React project. We will use the Create React App method, then configure it manually in order to use NextJS.

In the Terminal, run the following command to create your React application. The last part of this command is the name you want to give to your project. In this case, we're naming it my-nextjs-app.

npx create-react-app my-nextjs-app

Then, navigate into your project folder.

cd my-nextjs-app

Install Next in your project

We'll need to manually add Next to our React project. Run the following command in the terminal. This will install Next, React and React-DOM to your project.

npm install next react react-dom

Add scripts

Open your project in your code editor. Since I'm using Visual Studio Code, I can type code . in the terminal and it'll open the project in VSCode for me. If you run into a Command not found error, you can set up the code . option by following the easy steps in this tutorial.

Screen Shot 2021-04-28 at 2.55.09 PM

Once your project is open, open the package.json file, which is in the root folder of your project.

Screen Shot 2021-04-28 at 2.55.58 PM

In package.json, search for scripts. In my project, the scripts object is located on lines 15 to 20. Replace them by the following scripts:

"scripts": {
  "dev": "next dev",
  "build": "next build",
  "start": "next start"
},

Screen Shot 2021-04-28 at 2.58.11 PM

This tells our React application to use the NextJS framework when building for development (with the dev script), production usage (with the build script) and production server (with the start script).

Create pages

In the root folder, create a new folder called pages. Similar to Gatsby, every file that you create in this folder will automatically create a new page in your application for you. For example, if you create a file called about.js in the pages folder and export a component, you can navigate to the /about page in your application. This allows fast development since you don't need to create a router and add each page in the router.

Screen Shot 2021-04-28 at 3.06.58 PM

Once your pages folder is created, create a new file inside called index.js. This will be our home page. Paste the following component in there:

// ./pages/index.js

function HomePage() {
    return <div>Welcome to Next.js!</div>
}

export default HomePage

Note: the src folder can be safely deleted if you plan on using NextJS for your React project, since this folder is meant for Create React App and not NextJS.

The good thing with NextJS is that you don't need to import React at the top of your file, if you just want to use JSX in that file. NextJS automatically imports React when it finds JSX in the file. However, if you plan to use other features of React, like the useState hook, you'll need to import it:

import { useState } from "react"

Run the server

Now, it's time to run your server! In the Terminal, run the following command to start your development server:

next dev

Screen Shot 2021-04-28 at 3.11.00 PM

Note: You can stop your server by doing Control + C on your keyboard.

Your application will be available at http://localhost:3000/. If everything is good, you should see the following page on your browser. It's a blank page with a simple Welcome to Next.js! text.

Screen Shot 2021-04-28 at 3.12.26 PM

Now, you can go ahead and develop your first NextJS application!

Learn with videos and source files. Available to Pro subscribers only.

Purchase includes access to 50+ courses, 320+ premium tutorials, 300+ hours of videos, source files and certificates.

BACK TO

Gatsby and React

READ NEXT

React TypeScript Part 1

Templates and source code

Download source files

Download the videos and assets to refer and learn offline without interuption.

check

Design template

check

Source code for all sections

check

Video files, ePub and subtitles

react-hooks-handbook-nextjs-and-react

1

Intro to React Hooks

An overview of React Hooks and the frameworks you can use to build your React application blazingly fast

3:39

2

Create your first React app

Create your first React project from the Terminal and save it on your local computer

4:23

3

React Component

Create your first JSX component using React

2:54

4

Styling in React

How to style your React components using inline styling, separate stylesheets or styled-components

5:06

5

Styles and Props

Render different styles depending on different properties passed to your component

2:22

6

Understanding Hooks

Learn about the basics of React Hooks, which introduced at React Conf 2018

3:21

7

useState Hook

Use the useState hook to manage local state in your React component

2:54

8

useEffect Hook

Manage with your component's lifecycle with the useEffect hook

3:41

9

useRef Hook

Learn about the useRef hook, which replaces the JavaScript getElementById way

3:00

10

Props

Learn about props in React to pass data from parent to child components

3:11

11

Conditional Rendering

Render different UIs depending on different conditions and states

4:21

12

Load Local Data

Load local JSON data into your React application

4:04

13

Fetch Data from an API

Learn the basics of asynchronous functions and promises by fetching data from an API using fetch, useEffect and useState

5:40

14

Toggle a state

Learn how to toggle a state from true to false and back again

4:05

15

useInput Hook

Create a hook to get the value and the onChange event of input fields

6:04

16

Gatsby and React

Create a static content-oriented website using React on Gatsby

6:44

17

NextJS and React

Create your first NextJS React application

5:24

18

React TypeScript Part 1

Learn how to create a React TypeScript application using the Create React App, Gatsby and NextJS methods

8:19

19

React TypeScript Part 2

Learn the basics of TypeScript and how to use TypeScript in a React component

7:35

20

useScrollPosition Hook

Create a custom hook to listen to the current window position of the user

4:26

21

useOnScreen hook

Create a custom hook to listen to when an element is visible on screen

8:08

22

useContext Hook

Manage global states throughout the entire application

8:32

23

Fragments

Group multiple children together with React Fragments

2:43

24

Lazy Loading

Lazy Load heavy components to improve performance

4:05

25

React Suspense

Wait for data with React Suspense and React.lazy

3:13

26

Environment Variables

Make environment variables secret with a .env file

4:43

27

Reach Router

Create a multiple-pages React application with Reach Router

5:31

28

URL Params

Create unique URL with URL Params

4:04

29

SEO and Metadata

Optimize a React application for search engines with React Helmet

6:47

30

Favicon

Add an icon to a React website

3:03

31

Dynamic Favicon

Change the favicon's fill color depending on the user's system appearance

2:14

32

PropTypes

Implement props type-checking with PropTypes

3:54

33

Custom PropTypes

Create a custom PropType using a validator function

3:58

34

useMemo Hook

Prevent unnecessary re-renders when the component stays the same

4:05

35

forwardRef Hook

Forward a ref to a child component

3:28

36

Handling Events

How to handle events in React

5:44

37

Spread attributes

Learn how to make use of the spread operator

3:35

38

useMousePosition Hook

Detect the user's mouse position on a bound element

4:55

39

useReducer with useContext Part 1

Create a reducer to be used in a context

7:33

40

useReducer with useContext Part 2

Incorporate useReducer with useContext

6:48

41

useReducer with useContext Part 3

Connect the context and reducer with the frontend

5:43

42

Netlify

Deploy to production using Netlify

5:08

43

Gatsby Cloud

Deploy to production using Gatsby Cloud

6:19

44

Gatsby Plugin Image

Use gatsby-plugin-image for automatic image resizing, formatting, and higher performance

8:11

45

useOnClickOutside Hook

Toggle a modal visibility with a useOnClickOutside hook

6:32

46

useWindowSize Hook

Create a hook to determine the width and height of the window

4:14

47

usePageBottom hook

Detect if the user scrolled to the bottom of the page

4:48

48

useLocalStorage Hook

Store an item in a browser's local storage

5:27

49

Three.js in React Part 1

Bring your website to life with beautiful 3D objects

17:33

50

Three.js in React Part 2

Bring your website to life with beautiful 3D objects

11:18