Skip to main content
Version: 4.0 Beta

Usage with Next.js

This guide will show you how to set up react-scroll-parallax using the Next 13 App router.

Setting Up the ParallaxProvider​

Next 13 requires client components to be marked with use client, and the ParallaxProvider is a client component. To use the providers in your app, first create a providers.tsx file in the root of the app directory:

next-app
└── app/
└── providers.tsx

In this file, wrap the children in a <ParallaxProvider> and mark it as a client component.

info

You may add any additional providers you need for your app here in the future.

'use client';

import { ParallaxProvider } from 'react-scroll-parallax';

export function Providers({ children }: { children: React.ReactNode }) {
return <ParallaxProvider>{children}</ParallaxProvider>;
}

Add the Providers to the Root Layout​

In the layout.tsx file at the root of the app directory, import the Providers component you just created and wrap it around the children.

next-app
└── app/
├── providers.tsx
└── layout.tsx

Your layout may differ from the one below — it's simplified for this example.

import { Providers } from './Providers';

export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>
<Providers>{children}</Providers>
</body>
</html>
);
}

Create a Parallax Effect​

Next, we can create a simple parallax effect in another client component. Add a test.tsx file and place a parallax effect within it. We must also make this a client component with use client.

next-app
└── app/
├── providers.tsx
├── layout.tsx
├── test.tsx
└── page.tsx
'use client';

import { Parallax } from 'react-scroll-parallax';

export default function Test() {
return (
<Parallax scale={[1, 0]}>
<div className="w-48 h-48 bg-red-500" />
</Parallax>
);
}

Use the Parallax within a Page​

To add parallax effects to a page, create a page.tsx at the route you need. In this example, we'll use the homepage, so the page exists at the root of the app directory.

next-app
└── app/
├── providers.tsx
├── layout.tsx
└── page.tsx

Add the <Test> component and style the page so it scrolls.

import Test from './Test';

export default function Page() {
return (
<main className="flex min-h-[300vh] flex-col items-center justify-between p-24">
<Test />
</main>
);
}

That's it! Now that react-scroll-parallax is working in your Next.js application, you can add your own effects. See more on how it works.