Consentimiento de cookies para SvelteKit
La etiqueta va en src/app.html, antes de %sveltekit.head%, para que sea la primera del <head> en todas las páginas, renderizadas en servidor o no. SvelteKit lee la clave de una variable de entorno pública al renderizar.
Configúralo con tu agente de IA
Conecta el servidor MCP de Croombit a tu editor o agente de código y pega esto. Crea el sitio, las categorías de cookies y el banner, y edita tu código.
Con Croombit: crea un sitio para este proyecto y mantén las categorías de cookies que trae. Escribe el texto del banner y publícalo. Crea una clave publicable de TEST para localhost:3000. Es una app SvelteKit: añade cmp.js a src/app.html antes de %sveltekit.head%, con la clave de %sveltekit.env.PUBLIC_CROOMBIT_KEY%, y arranca nuestro SDK de analítica solo cuando el evento croombit:consent conceda ANALYTICS.El agente trabaja en TEST. Pasar a LIVE son dos pasos en la consola: verificar tu dominio y cambiar a una clave LIVE; consulta pasar a LIVE.
O a mano
1. Añade la etiqueta a app.html
Pon la clave en .env como PUBLIC_CROOMBIT_KEY. %sveltekit.env.PUBLIC_…% se sustituye al renderizar la página.
<!-- src/app.html -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="https://croombit.com/cmp.js"
data-tc-api-key="%sveltekit.env.PUBLIC_CROOMBIT_KEY%"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>2. Retén los rastreadores
Etiquetas en app.html o en <svelte:head>: type="text/plain" más data-tc-consent. Las que tu código inserta en tiempo de ejecución desde hosts conocidos se retienen solas.
<script type="text/plain" data-tc-consent="analytics" async
src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
<script type="text/plain" data-tc-consent="analytics">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXX');
</script>3. Arranca los SDK de npm tras el consentimiento
Un SDK de analítica o de grabación de sesiones que importas no es una etiqueta script, así que arráncalo cuando se acepte su categoría:
<!-- src/routes/+layout.svelte -->
<script>
import { onMount } from 'svelte';
// Start an SDK you install from npm only once its category is granted.
onMount(() => {
const on = (e) => {
if (e.detail?.categories?.ANALYTICS) startAnalytics();
};
window.addEventListener('croombit:consent', on);
return () => window.removeEventListener('croombit:consent', on);
});
</script>
<slot />4. Un enlace "Configurar cookies"
<a href="#" data-tc-open-preferences>Configurar cookies</a>Preguntas
¿La navegación en cliente vuelve a mostrar el banner?
No. La decisión se guarda una vez y vale para todas las rutas; SvelteKit nunca sustituye el elemento donde vive el banner.
¿Funciona con adapter-static?
Sí. Al prerenderizar, %sveltekit.env.PUBLIC_…% se rellena en el build, así que compila con la clave que vas a desplegar.
Relacionado
- Consentimiento de cookies para cualquier web
- Consentimiento de cookies para Next.js
- Consentimiento de cookies para React
- Consentimiento de cookies para Vue y Nuxt
- Consentimiento de cookies para Astro
- Consentimiento de cookies para React Router y Remix
- Consentimiento de cookies para Laravel
- Consentimiento de cookies para Django
- Consentimiento de cookies para Ruby on Rails
- Consentimiento de cookies para WordPress
- Consentimiento de cookies para Webflow
- Consentimiento de cookies para Framer
- Consentimiento de cookies para Hugo y Jekyll
- Guía: banner de cookies
- Consola: Cookies (escáner)
- TCF, Consent Mode y GPP
- Google Consent Mode v2: modo básico frente a avanzado