Skip to content

RSC Frameworks

This page is for v4 of the legacy react-awesome-reveal package. Read the Awesome Reveal docs for the new @awesome-reveal/* packages, and the migration guide to move from v4.

Starting from version 4.3.1, React Awesome Reveal provides out-of-the-box support for React Server Components frameworks like Next.js, making it even easier to use animations in your RSC-powered applications.

It’s worth noting that React Awesome Reveal has always been compatible with React Server Components, but prior to version 4.3.1, it required manual client-side component wrapping. This was because the animation primitives needed access to browser APIs that are only available on the client.

With version 4.3.1 and above, you can use animation primitives directly in your RSC components without any additional setup. Simply import and use them:

app/features.tsx
import { Slide } from "react-awesome-reveal";
async function getFeatures() {
// ...
}
export default async function Features() {
const features = await getFeatures();
return (
<div>
<h2>Our Features</h2>
<Slide direction="up" cascade triggerOnce>
{features.map((feature) => (
<div key={feature.id} className="feature-card">
{feature.content}
</div>
))}
</Slide>
</div>
);
}

Before version 4.3.1, you needed to create client-side wrapper components for each animation primitive you wanted to use. This involved:

  1. Creating a separate component file
  2. Adding the "use client" directive
  3. Re-exporting the animation primitive

Here’s how it looked:

components/Slide.tsx
"use client";
import { Slide as SlidePrimitive, type SlideProps } from "react-awesome-reveal";
function Slide(props: SlideProps) {
return <SlidePrimitive {...props} />;
}
export default Slide;

Then using it in your components:

app/features.tsx
import Slide from "./components/Slide";
export default async function Features() {
return (
<div>
<h2>Our Features</h2>
<Slide direction="up" cascade triggerOnce>
{features.map((feature) => (
<div key={feature.id} className="feature-card">
{feature.content}
</div>
))}
</Slide>
</div>
);
}

The new version eliminates this boilerplate while maintaining full compatibility with React Server Components. We recommend upgrading to version 4.3.1 or later to take advantage of this simplified usage.