Next.js

Getting started

This theme uses zero configuration Next.js framework which is based on React, Webpack and Babel. It allows you to make blazing fast web applications with possibility of server side rendering.

Biggest advantages
  • Pre-Rendering - Statically generated and server-rendered React applications have never been easier.
  • Static Exporting - Exporting a static site with Next.js is as easy as a single command.
  • Zero Configuration - Automatic code splitting, filesystem based routing, hot code reloading and universal rendering.
  • Fully Extensible - Complete control over Babel and Webpack. Customizable server, routing and next-plugins.
  • Optimized & Ready for Production - Optimized for a smaller build size, faster dev compilation and dozens of other improvements.

Find out more about Next.js at its website.


To use this theme, all you need to do is to install Node, theme's dependencies, and you're good to go.

1. Install Node

If you don't have Node installed on your machine, head to its official site and choose an appropriate installation for your system.

2. Install project's dependencies

This will install dependencies from theme's package.json file.

$ npm install
3. Run development enviroment

This will run a development task for Next.js. You're all set.

$ npm run dev
Development

Running npm run dev in the theme's folder will start a local server instance on port 3000 to serve and refresh your pages as you edit.

Static Export

Running npm run export in the theme's folder makes /out folder with a static export of your website. Read more about Static HTML exports here.

To setup your project for static export, following configuration is needed.

next.config.js

{
  images: {
    deviceSizes: [320, 480, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],
    // loader: "imgix", // Uncoment this line
    // path: "", // Uncoment this line
  },
  env: {
    production_type: "server", // Change variable to "static"
  },
  // trailingSlash: true, // Uncoment this line
},

Deployment

The easiest way to deploy your Next.js project is using Vercel platform. More about deploying Next.js and other hosting options here.

Production build

Running npm run build in the theme's folder makes /.next folder with optimized production build. Read more about production build here.

Data + Data Fetching

Theme uses static JSON files to feed data to the pages and components. You can fetch your own data from headless CMS or API. You can also simply edit sample JSON files located at /src/data folder for easy content editing.

Find out more about data fetching here.

Routing
File-system Based Router

Next.js has a file-system based router built on the concept of pages.

When a file is added to the pages directory it's automatically available as a route.

The files inside the pages directory can be used to define most common patterns.

Dynamic Routing

Defining routes by using predefined paths is not always enough for complex applications. In Next.js you can add brackets to a page ([param]) to create a dynamic route (a.k.a. url slugs, pretty urls, and others).

We demonstrate this concept in blog/[slug].js, see it live here.

Based on a blog.json file containing data about all our blog posts (simulating access to API), we create all blog post URLs, and their content during the build time. The main functions to achieve this behavior are getStaticPaths (docs) and getStaticProps (docs). More about Dynamic Routes here.

Built-In CSS Support

Next.js allows you to import CSS files from a JavaScript file. This is possible because Next.js extends the concept of import beyond JavaScript.

Find out more about working with CSS in Next.js here.