DEV Community

Fabian
Fabian

Posted on

Add router progress bar in Next Js 14

Github Loading Indicator

Get Started

I struggled to implement a loading indicator in my Next.js 13 and Now.js 14 apps. With the Next.js App router, many progress bar packages became ineffective. But after some research, I found a working package that was updated recently and works perfectly in the Next.js 14 app router.

It doesn't matter if you already have a fully functional Next.js app or are creating a new one. First you need to install the nextjs-toploader package.

npm i nextjs-toploader
Enter fullscreen mode Exit fullscreen mode

or

yarn add nextjs-toploader
Enter fullscreen mode Exit fullscreen mode

app/layout.tsx or app/layout.jsx

import NextTopLoader from 'nextjs-toploader';

export default function RootLayout({
  children
}: {
  children: React.ReactNode,
}) {
  return (
    <html lang='en'>
      <body>
        <NextTopLoader /> // Just need to add this line
        {children}
      </body>
    </html>
  );
}

Enter fullscreen mode Exit fullscreen mode

Customizations

To customize your progress bar you can add these props to your NextTopLoader and change the values.

<NextTopLoader
  color="#2299DD"
  initialPosition={0.08}
  crawlSpeed={200}
  height={3}
  crawl={true}
  showSpinner={true}
  easing="ease"
  speed={200}
  shadow="0 0 10px #2299DD,0 0 5px #2299DD"
/>

Enter fullscreen mode Exit fullscreen mode
  • color: to change the default color of TopLoader.
  • initialPosition: to change initial position for the TopLoader in percentage, : 0.08 = 8%.
  • crawlSpeed: increment delay speed in ms.
  • speed: animation speed for the TopLoader in ms
  • easing: animation settings using easing (a CSS easing string).
  • height: height of TopLoader in px.
  • crawl: auto incrementing behavior for the TopLoader.
  • showSpinner: to show spinner or not.
  • shadow: a smooth shadow for the TopLoader. (set to false to disable it)
  • template: to include custom HTML attributes for the TopLoader.
  • zIndex: defines zIndex for the TopLoader.
  • showAtBottom: To show the TopLoader at bottom. (increase height for the TopLoader to ensure it's visibility at the mobile devices)

Happy coding :)

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay