All systems nominal · edge p95 12ms v0.1.0 GDPR · CCPA 🇬🇧 EN
Cookie consent · rebuilt for performance

Your consent banner costs saves you 400ms of LCP.

Swift wraps your existing CMP — Cookiebot, OneTrust, Iubenda, Didomi — with a 1.8KB edge-rendered layer that eliminates banner-induced Core Web Vitals regressions. Same compliance. 150× lighter runtime. 15-minute install.

Install in 15 minutes See live demo bun add swift-consent · no credit card
LIVE LIGHTHOUSE / acme.com MEASURING
LCP before 3.2s
LCP after 1.4s
JS before 284kb
JS after 1.8kb
PAGE.LOAD / LCP ↓56% faster
Works with your existing CMP

OneTrust vs. OneTrust + Swift.

Before · vanilla CMP POOR
  • LCP 3.2s
  • CLS 0.18
  • JS payload (consent) 284 KB
  • Main-thread blocking 180 ms
  • Lighthouse perf 62
After · + Swift wrapper EXCELLENT
  • LCP 1.4s
  • CLS 0.00
  • JS payload (consent) 1.8 KB
  • Main-thread blocking <2 ms
  • Lighthouse perf 96

A banner that was already there when the page arrived.

Swift renders the banner inline on the edge, before a single byte reaches the browser's parser. No flash. No layout shift. No hydration waterfall.

  • Server-rendered · 0ms client-side layout cost
  • 1.8KB hydration script, deferred
  • Geo-aware from the first byte (EU / US / UK logic)
  • Matches your brand — not ours
acme.com/pricing
LCP · 1.4s

Simple pricing. No surprises.

Choose a plan that fits your team. Upgrade or downgrade at any time.

Three pieces. None of them block your page.

01

Edge rendering

A Cloudflare Worker sits between your users and origin. It reads geo, checks the consent cookie, and injects banner HTML inline. No client JS required to display.

02

1.8kb hydration

A tiny vanilla-JS runtime attaches click handlers to the pre-rendered banner. No framework, no polyfills. Loads with defer, never blocks render, never shifts layout.

03

Your CMP, wrapped

Consent decisions relay back to your CMP's audit log via its API. Cookiebot, OneTrust, Iubenda, Didomi supported. Compliance stays with them. Performance is on us.

Gate your scripts. Ship in one line.

your-site.js COPY →
// Gate analytics on consent. Fires immediately if already granted.
Swift.onConsent('analytics', () => {
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
});

// Check current consent state.
if (Swift.hasConsent('marketing')) { loadMetaPixel(); }

// Open preference center from a footer link.
Swift.openPreferences();

Fair pricing for a wrapper.

Starter
$0
per month, forever
  • 1 domain
  • Up to 25k monthly visitors
  • GDPR + CCPA
  • Community support
  • Bring your own CMP
Get started
Scale
$99
per month, per domain
  • Up to 2M monthly visitors
  • SSO + role-based access
  • Priority support (1h)
  • DPA provided
  • SLA: 99.99% uptime
Contact sales

The honest answers.

Still have questions? Email hi@swiftconsent.dev and a founder replies within 24h.

Do I still need OneTrust / Cookiebot / Iubenda?

Yes. Swift is a performance wrapper, not a compliance replacement. Your existing CMP handles regulatory rules, audit trails, vendor lists, and legal disclosures. Swift handles rendering, performance, and developer experience. Your legal team's review of your CMP is unchanged.

Is this legally compliant?

Compliance comes from your underlying CMP, which Swift wraps. If your current CMP setup is compliant, wrapping it with Swift does not change that. Swift never modifies consent categories, audit records, or legal disclosures — it just renders them faster.

Which CMPs do you support?

At launch: Cookiebot, OneTrust, Iubenda, Didomi. If you use something else, we'll build an adapter for any CMP with a public API — typically 2–3 days of work on our side at no extra cost.

How does edge rendering actually work?

A Cloudflare Worker sits in front of your site (via DNS proxy or workers.dev domain). It intercepts HTML responses, checks the visitor's geo and existing consent cookie, and injects the banner markup inline before sending to the browser. No client JS is needed to display the banner — the hydration script only attaches click handlers to elements already in the DOM.

What about CLS?

Zero. The banner is rendered in the initial HTML at a fixed position (bottom-right corner), so nothing shifts when it appears. The preference center modal is also in the initial HTML but hidden via display: none until opened.

Does this work with Next.js, Astro, SvelteKit, etc?

Yes. Swift operates at the edge, below your framework. It doesn't matter what renders your HTML — Next SSR, Astro static, SvelteKit streaming, WordPress, Rails — the worker injects the banner into the response regardless.

What if I don't want to use Cloudflare?

Vercel Edge Middleware and Netlify Edge Functions are on the roadmap. For now, Cloudflare Workers is the supported runtime — it's free up to 100k requests/day.

Ship faster consent today.

15 minutes from signup to production. Wraps your existing CMP. Cancel any time.