@bprogress/next
Version:
NProgress bar like for Next.js compatible with new app directory
161 lines (119 loc) • 3.23 kB
Markdown
BProgress integration on Next.js compatible with **/app** and **/pages** directory.
**Next NProgress Bar and NProgress V2 become BProgress!**
If you are using `next-nprogress-bar`, you can migrate to `@bprogress/next` by following the [migration guide](https://bprogress.vercel.app/docs/next/migration).
To install BProgress, run the following command:
```bash
npm install @bprogress/next
```
Import into your `/app/layout(.js/.jsx/.ts/.tsx)` folder.
```tsx
import { ProgressProvider } from '@bprogress/next/app';
```
Import into your `/pages/_app(.js/.jsx/.ts/.tsx)` folder.
```tsx
import { ProgressProvider } from '@bprogress/next/pages';
```
```tsx
<ProgressProvider>...</ProgressProvider>
```
First approach in a use client layout.
```tsx
// In /app/layout.tsx
'use client';
import { ProgressProvider } from '@bprogress/next/app';
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>
<ProgressProvider
height="4px"
color="#fffd00"
options={{ showSpinner: false }}
shallowRouting
>
{children}
</ProgressProvider>
</body>
</html>
);
}
```
Second approach wrap in a use client Providers component. (Recommended)
Create a Providers component to wrap your application with all the components requiring 'use client', such as BProgress or your different contexts...
```tsx
// In /app/providers.tsx
'use client';
import { ProgressProvider } from '@bprogress/next/app';
const Providers = ({ children }: { children: React.ReactNode }) => {
return (
<ProgressProvider
height="4px"
color="#fffd00"
options={{ showSpinner: false }}
shallowRouting
>
{children}
</ProgressProvider>
);
};
export default Providers;
```
Then wrap your application with the Providers component.
```tsx
// In /app/layout.tsx
import Providers from './providers';
export const metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>
<Providers>{children}</Providers>
</body>
</html>
);
}
```
```tsx
// In /pages/_app.tsx
import type { AppProps } from 'next/app';
import { ProgressProvider } from '@bprogress/next/pages';
export default function App({ Component, pageProps }: AppProps) {
return (
<ProgressProvider
height="4px"
color="#fffd00"
options={{ showSpinner: false }}
shallowRouting
>
<Component {...pageProps} />
</ProgressProvider>
);
}
```
Go to the [documentation](https://bprogress.vercel.app/docs/next/installation) to learn more about BProgress.
If you encounter any problems, do not hesitate to [open an issue](https://github.com/imskyleen/bprogress/issues) or make a PR [here](https://github.com/imskyleen/bprogress).
MIT