Custom Not Found & Loading Pages
Custom Not Found & Loading Pages
1. Create a Custom Not Found Page
a. Create the File in the App Folder
Location: In the root
app/
directory, create a file namednot-found.jsx
.Purpose: Next.js automatically uses this file to render a custom 404 page when a route isn’t found.
b. Build the React Component
Start the Component:
Open
not-found.jsx
and set up a functional React component.Example:
Copy and Adapt the Markup:
Open your provided
not-found.html
file and copy the section below the navigation that includes the not-found message, icon, and home button.Paste this markup into your component’s return statement.
Important: Replace all HTML attributes with JSX equivalents:
Change
class
toclassName
.Change any self-closing tags as needed.
Integrate React Icons:
Instead of using an
<i>
tag from a CDN, import the icon fromreact-icons
.For example, if you want to use an exclamation triangle icon:
Replace the existing
<i>
tag with:
Use Next.js Link for Navigation:
Import the Link component from Next.js:
Change the "Go Home" anchor tag to a
<Link>
component that routes to the home page:
Final NotFound Component Example:
2. Create a Custom Loading Page
a. Create the File in the App Folder
Location: In the
app/
directory, create a file namedloading.jsx
.Purpose: Next.js uses this file to render a loading indicator during page transitions or data fetching.
b. Build the React Component
Mark the Component as Client-Side:
Since you’ll use client-side hooks or components (like a spinner), add
"use client";
at the top.
Install React Spinners:
Open your terminal and install the
react-spinners
package:
Import and Use a Spinner:
Import a spinner component (e.g.,
ClipLoader
) fromreact-spinners
:In your component, return the spinner. Optionally, you can customize its color, size, and CSS override.
3. Testing and Verification
a. Run the Application
Start your development server:
b. Test the Custom Pages
Not Found Page: Navigate to a non-existent route (e.g.,
http://localhost:3000/test
). You should see your custom 404 page.Loading Page: Navigate between pages (for example, from Home to Properties). If the transition takes a moment, your custom loading spinner should appear.
Recap
Custom Not Found Page:
Create
not-found.jsx
in the app folder.Paste and convert HTML markup from your provided not-found.html.
Replace HTML elements with JSX (e.g.,
className
), integrate React icons, and use Next.js Link for navigation.
Custom Loading Page:
Create
loading.jsx
in the app folder.Mark it as a client component using
"use client";
.Install and import
react-spinners
to display a loading spinner.Return the spinner with custom styling for a seamless loading experience.
Last updated