Aller au contenu principal

Ajouter ConsentForge à Next.js

Option 1 : Composant Script (recommandé)

Utilisez le composant <Script> de Next.js avec strategy="beforeInteractive" pour vous assurer que ConsentForge se charge avant tout autre script :

// app/layout.tsx (App Router) ou pages/_document.tsx (Pages Router)
import Script from 'next/script'

export default function RootLayout({ children }) {
return (
<html>
<head>
<Script
src="https://cdn.consentforge.com/consentforge.min.js"
data-token={process.env.NEXT_PUBLIC_CONSENTFORGE_TOKEN}
strategy="beforeInteractive"
/>
</head>
<body>{children}</body>
</html>
)
}

Option 2 : _document.tsx (Pages Router)

import { Html, Head, Main, NextScript } from 'next/document'

export default function Document() {
return (
<Html>
<Head>
<script
src="https://cdn.consentforge.com/consentforge.min.js"
data-token={process.env.NEXT_PUBLIC_CONSENTFORGE_TOKEN}
defer
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
)
}

Blocage des scripts tiers

Utilisez strategy="lazyOnload" pour les scripts qui nécessitent un consentement — ils ne se chargeront pas jusqu'à ce que le consentement soit accordé et que ConsentForge les libère :

<Script
src="https://www.googletagmanager.com/gtag/js?id=G-XXXXX"
data-consent-category="analytics"
strategy="lazyOnload"
/>

Variables d'environnement

Ajoutez à .env.local :

NEXT_PUBLIC_CONSENTFORGE_TOKEN=cf_live_your_token_here

TypeScript : Types window ConsentForge

// types/consentforge.d.ts
interface Window {
ConsentForge: {
openPreferenceCenter: () => void;
getConsent: (category: string) => boolean;
on: (event: string, callback: (data: unknown) => void) => void;
}
}