Blog>
Snippets

Custom Error Page Implementation

Create a custom error page in Next.js by extending the default error page, to handle errors globally and display a friendly message to the user.
// pages/_error.js
import React from 'react';
import Link from 'next/link';

class Error extends React.Component {
    static getInitialProps({ res, err }) {
        const statusCode = res ? res.statusCode : err ? err.statusCode : null;
        return { statusCode };
    }

    render() {
        return (
            <div>
                <h1>{this.props.statusCode 
                    ? `An error ${this.props.statusCode} occurred on server`
                    : 'An error occurred on client'}</h1>
                <Link href="/">
                    <a>Go back home</a>
                </Link>
            </div>
        );
    }
}

export default Error;
This is a custom _error.js page for Next.js. It extends the default error page, capturing both server and client-side errors, and displays a friendly error message alongside a link to navigate back to the home page.
/* styles/global.css */

body {
    font-family: 'Arial', sans-serif;
    background: #f7f7f7;
    color: #333;
    margin: 0;
    padding: 20px;
}

div {
    width: 100%;
    max-width: 600px;
    margin: 100px auto 0;
    text-align: center;
}

h1 {
    font-size: 24px;
    margin-bottom: 20px;
}

a {
    color: #0070f3;
    text-decoration: none;
    font-size: 16px;
}
This is the CSS to style the custom error page defined in _error.js file. It includes basic styles for the body, div container, heading, and link to make the error page look visually appealing.