Skip to main content

One consent engine for every framework.

c15t v3 is a rebuild. Eight frameworks and a script tag, the banner in the first HTML, and policy rules for every region. Your visitors keep the choices they made in v2.

Or follow the upgrade guide for Next.js, React or JavaScript.

Eight frameworks and a script tag.

Every adapter runs on the same consent engine and passes the same conformance suite, so a policy behaves the same in Nuxt as it does in Next.js.

The banner arrives with the page.

Your server decides consent before the page leaves it, and less of c15t reaches the browser.

  • Measure

    Next.js 16 · backend +150 ms

    1. Consent manifest
      Banner on screen 28 ms
    2. /init on every request
      Banner on screen 180 ms

    Banner on screen in 28 ms

    Your server keeps a cached consent manifest and decides each visitor's policy itself. Asking the backend's /init on every request takes 180 ms. Both are v3.

  • 8.8 KBdown from 10.3 KB in v2

    Less render-blocking CSS

    Dialog styles load with the dialog. gzip, in a Next.js 16 build.

  • 0 KBdown from 1.9 KB in v2

    Themes built on the server

    ConsentTheme renders theme CSS on the server. v2 sent the generator to every visitor.

  • 10×

    2down from 20 in v2

    Renders only what changed

    Each component re-renders when the value it reads changes. 10 components, 5 categories, one change.

  • 130×

    6.6 KBdown from 860 KB in v2

    Lighter IAB pages

    The server sends a reference to the vendor list instead of all 1,211 vendors.

  • 4×

    3.3 msdown from 11.9 ms in v2

    Faster self-hosted reads

    Joins and new indexes on Effect SQL. Median, PGlite, 1,000 subjects among 20,000 rows.

From the 3.0.0 release notes. The render race is a Next.js 16 production build with a local backend that adds 150 ms to each request, medians of 10 runs.

Consent, rebuilt.

New controls for visitors, new rules for regions and new ways to show the banner.

  • Policy rules by region

    Policy rules replace policy packs. 34 presets instead of 6, notice-only prompts, and Global Privacy Control read live.

  • Marketing
    • Meta Pixel
    • TikTok Pixel
    • OpenAI Pixel

    Consent per vendor

    Visitors can switch off one vendor inside a category they allowed, without IAB.

    • floating
    • bar
    • widget
    • wall

    Four banner presentations

    Pick a floating card, a bar, a widget or a wall, with its position and its actions.

  • Privacy Settings

    • Measure advertising performance
    • Measure content performance
    • Develop and improve services

    IAB TCF and GPP

    GPP 1.1 with 16 US state sections, and publisher restrictions in the TC string. IAB now works in every framework.

  • @c15t/scripts@c15t/integrations

    • Cloudflare ZarazNew
    • KlaviyoNew
    • OpenAI PixelNew

    New integrations

    Cloudflare Zaraz, Klaviyo and the OpenAI pixel join. All 38 v2 helpers carry over with the same names.

What changes in your code.

Install c15t to get v3.

  1. One c15t package

    c15t replaces @c15t/nextjs and @c15t/react. Import the entry point for your framework, such as c15t/next or c15t/astro.

  2. 10 frameworks instead of 3

    New guides cover TanStack Start, Nuxt, Vue, Astro, Svelte, SvelteKit and HTML.

  3. Consent resolves on the server

    Your server can read the visitor's policy and stored choice. Scripts that wait for consent can then start right after hydration.

  4. Policy rules

    Policy rules replace policy packs. A rule picks the consent model, the categories and the prompt for a visitor.

  5. A new integrations package

    Vendor helpers move from @c15t/scripts to @c15t/integrations, with the same names.

Upgrading from v2? A codemod rewrites most useConsentManager() calls. v3 reads the v2 cookie, so visitors keep their choices. Read the upgrade guide

Upgrade from v2.

Each v2 package has a guide from start to finish. Each one opens with a prompt for your coding agent.

Run your own backend or the Node.js SDK? The migration overview covers both.

Visitors keep their choices
v3 reads the cookie and storage key v2 wrote. A v2 denial keeps blocking its category, and a v2 grant applies until it expires.
Codemods do most of the work
They migrate the provider, hooks, callbacks, presets and styles. Where a change needs a decision, they leave a TODO(c15t v3) comment that fails the build.
Upgrade clients and backend together
A v3 client cannot read a v2 backend. Inth-hosted URLs already work with v3 clients.

Read every change in the 3.0.0 release notes, or every release in the changelog.