
Product
Introducing Socket Firewall Enterprise: Flexible, Configurable Protection for Modern Package Ecosystems
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.
nextjs-toploader
Advanced tools
A Next.js Top Loading Bar component made using nprogress, works with Next.js 14 and React.
Next Js TopLoaderusing npm:
npm install nextjs-toploader
using yarn:
yarn add nextjs-toploader
import using:
import NextTopLoader from 'nextjs-toploader';
app/layout.js for app folder structureFor rendering add <NextTopLoader /> to your return() inside the <body></body> of RootLayout():
import NextTopLoader from 'nextjs-toploader';
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<NextTopLoader />
{children}
</body>
</html>
);
}
pages/_app.js for pages folder structureFor rendering add <PagesTopLoader /> to your return() in MyApp() (Recommended):
import { PagesTopLoader } from 'nextjs-toploader/pages';
export default function MyApp({ Component, pageProps }) {
return (
<>
<PagesTopLoader />
<Component {...pageProps} />;
</>
);
}
You can also use <NextTopLoader /> in pages router, but it's recommended to use <PagesTopLoader /> for useRouter hook support from nextjs-toploader version 2.6.12 onwards
useRouter hookuseRouter hook usage with app/layout.js for app folder structureFor triggering TopLoader when using useRouter hook (app router):
// Import the useRouter hook from nextjs-toploader to trigger the TopLoader
import { useRouter } from 'nextjs-toploader/app';
Then simply use it in your code for example:
const router = useRouter();
router.push('/some-page');
useRouter hook usage with pages/_app.js for pages folder structureFor triggering TopLoader when using useRouter add <PagesTopLoader /> to your return() in MyApp() :
import { PagesTopLoader } from 'nextjs-toploader/pages';
export default function MyApp({ Component, pageProps }) {
return (
<>
<PagesTopLoader />
<Component {...pageProps} />;
</>
);
}
For rendering add <NextTopLoader /> to your return() inside the component in App() in your App.js:
import NextTopLoader from 'nextjs-toploader';
const App = () => {
return (
<div>
<Router>
<NextTopLoader />
<Routes>{/* Your Routes Here */}</Routes>
</Router>
</div>
);
};
export default App;
If no props are passed to <NextTopLoader />, below is the default configuration applied.
<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"
template='<div class="bar" role="bar"><div class="peg"></div></div>
<div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
zIndex={1600}
showAtBottom={false}
/>
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 mseasing: 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)NextTopLoaderProps (props passed to the TopLoader)| Name | Type | Default Value |
|---|---|---|
color | string | "#29d" |
initialPosition | number | 0.08 |
crawlSpeed | number | 200 |
height | number | 3 |
crawl | boolean | true |
showSpinner | boolean | true |
easing | string | "ease" |
speed | number | 200 |
shadow | string | false | "0 0 10px ${color}, 0 0 5px ${color}" |
template | string | "<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>" |
zIndex | number | 1600 |
showAtBottom | boolean | false |
This project was made possible thanks to the contributions of its code contributors.
We extend a huge thanks to our financial contributor for helping us sustain this community
Support this project with your organization. Your logo will show up here with a link to your website. You can Support this project on Open Collective or Equivalent Method from the below
UPI ID: thesgj@upi (International UPI ID)
v3.6.12
Added new import for PagesTopLoader
Added new import for custom useRouter hook
NProgress is a popular package for creating a progress bar at the top of the page. It is not specific to Next.js and can be used in any JavaScript application. Compared to nextjs-toploader, NProgress offers more customization options and is widely used, but requires more setup to integrate with Next.js.
React Top Loading Bar is a React component for displaying a loading bar at the top of the page. It is similar to nextjs-toploader in terms of functionality but is designed for use in any React application, not just Next.js. It provides a simple API for controlling the loading bar programmatically.
FAQs
A Next.js Top Loading Bar component made using nprogress, works with Next.js 15 and Next.js 14 and React.
The npm package nextjs-toploader receives a total of 284,266 weekly downloads. As such, nextjs-toploader popularity was classified as popular.
We found that nextjs-toploader demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.