Cómo configurar correctamente Chrome Storage Sync

Objetivo principal y variantes de búsqueda
- Principal: cómo configurar Chrome Storage Sync
- Variantes relacionadas: chrome.storage.sync, chrome.storage.local, limpiar almacenamiento Chrome, depurar sincronización Chrome, permisos storage en extensiones, mejores prácticas privacidad storage
Importante: Esta guía explica conceptos y procedimientos cualitativos. No inventamos estadísticas ni afirmaciones numéricas no verificables. Mantén datos sensibles fuera del almacenamiento del navegador o encriptados antes de guardarlos.
Introducción rápida
Chrome Storage es una API potente para guardar y sincronizar datos asociados a extensiones o aplicaciones Chrome. A diferencia de localStorage (que maneja solo cadenas de texto y es sincrónico), chrome.storage.* trabaja de forma asíncrona y maneja objetos JSON de manera más natural. Además, chrome.storage.sync puede sincronizar datos entre dispositivos del mismo usuario si cumple condiciones (ver más abajo).
¿Cuándo usar chrome.storage.sync?
- Guardar configuraciones de extensiones que el usuario quiere disponibles en varios dispositivos.
- Sincronizar pequeñas cantidades de datos con prioridad en coherencia por usuario.
¿Cuándo NO usar chrome.storage.sync?
- Almacenar grandes blobs de datos o ficheros (sync tiene límites de cuota).
- Datos que cambian con mucha frecuencia en milisegundos (latencia de sincronización puede causar conflictos).
- Información extremadamente sensible sin cifrado adicional.
¿Chrome sincroniza el almacenamiento local?
Sí, pero con condiciones: chrome.storage.sync sólo sincroniza si:
- El usuario ha iniciado sesión en Chrome con una cuenta de Google.
- Chrome está en línea (conectado a Internet).
- La función de sincronización está activada en la cuenta/ajustes del navegador.
Si el navegador está offline, los cambios se guardan localmente y se sincronizan cuando vuelve a haber conexión. Si el usuario desactiva la sincronización, chrome.storage actúa como almacenamiento local (equivalente a chrome.storage.local en comportamiento de no sincronización).
Diferencias clave: chrome.storage.sync vs chrome.storage.local
- Asincronía: Ambos son asíncronos, pero chrome.storage.sync está pensado para sincronización remota y suele usarse con callbacks/Promises para mantener la UI responsiva.
- Alcance: chrome.storage.local almacena datos sólo en la máquina; chrome.storage.sync intenta replicarlos entre dispositivos del mismo usuario.
- Formato: chrome.storage.* opera con objetos JSON (no limitados a strings como localStorage tradicional del DOM).
- Modo incógnito: Chrome Storage Sync permite preservar ciertas configuraciones de extensiones incluso en modo incógnito si la extensión lo autoriza.
Resumen: usa chrome.storage.sync para sincronizar preferencias pequeñas entre dispositivos, y chrome.storage.local para datos locales grandes o temporales.
¿Local storage vs Cookies vs Cache? (comparación rápida)
Item | Uso | Tamaño | Seguridad |
---|---|---|---|
Cookies | Se envían al servidor en cada petición HTTP si no son HttpOnly/Secure; útiles para autenticación basada en cookie | ~4 KB por cookie (limitado) | Pueden ser seguras (HttpOnly, Secure, SameSite) pero aún vulnerables a CSRF/XSS si no se configuran bien |
LocalStorage | Almacenamiento cliente, lectura por scripts; no se envía al servidor automáticamente | Mucho mayor que cookies; adecuado para varios KB/MB dependiendo del navegador | Susceptible a XSS; no adecuado para tokens sensibles sin cifrado |
Cache (HTTP Cache) | Caching de recursos (imágenes, archivos) para acelerar cargas | Maneja bytes y recursos; no pensado para datos de usuario | Vulnerable si scripts maliciosos acceden al recurso; generalmente no se usa para datos sensibles |
Nota: Evita guardar credenciales o tokens sin cifrado en localStorage o chrome.storage.*.
Sintaxis y comandos esenciales (DOM localStorage vs chrome.storage)
- localStorage.getItem(key) — lee una cadena desde localStorage.
- localStorage.setItem(key, value) — guarda una cadena en localStorage.
- localStorage.removeItem(key) — elimina una clave concreta.
- localStorage.clear() — borra todo el localStorage del dominio.
Chrome Storage (extensiones) — ejemplos resumidos:
chrome.storage.local.set({ key: value }, callback)
chrome.storage.local.get([‘key’], callback)
chrome.storage.local.remove(‘key’, callback)
chrome.storage.local.clear(callback)
chrome.storage.sync.set({ key: value }, callback)
chrome.storage.sync.get([‘key’], callback)
Ejemplo de manifiesto mínimo (manifest.json) para usar la API de storage:
{
"manifest_version": 3,
"name": "Mi extensión",
"version": "1.0",
"permissions": ["storage"]
}
Consejo: Declara siempre el permiso “storage” en el manifiesto de la extensión para evitar errores de permiso.
Ejemplos prácticos
A continuación, ejemplos de uso en estilos distintos: callback tradicional y async/await con una envoltura Promise.
Ejemplo (callback) — guardar y leer
// Guardar
chrome.storage.sync.set({ theme: 'dark' }, function() {
if (chrome.runtime.lastError) {
console.error('Error al guardar:', chrome.runtime.lastError);
} else {
console.log('Guardado en sync: theme=dark');
}
});
// Leer
chrome.storage.sync.get(['theme'], function(result) {
if (chrome.runtime.lastError) {
console.error('Error al leer:', chrome.runtime.lastError);
} else {
console.log('theme:', result.theme);
}
});
Ejemplo (Promise / async/await) — envoltura segura
function getSync(keys) {
return new Promise((resolve, reject) => {
chrome.storage.sync.get(keys, (items) => {
if (chrome.runtime.lastError) return reject(chrome.runtime.lastError);
resolve(items);
});
});
}
async function ejemplo() {
try {
await new Promise(r => chrome.storage.sync.set({ lang: 'es' }, r));
const datos = await getSync(['lang']);
console.log('lang:', datos.lang);
} catch (err) {
console.error('Error storage:', err);
}
}
ejemplo();
Dónde almacena Chrome los datos locales
En Windows, los datos de usuario de Chrome suelen residir en la carpeta del perfil de usuario. Ejemplo de ruta típica (Windows):
AppData\Local\Google\Chrome\User Data\Default\Local Storage
No modifiques estos ficheros directamente salvo que sepas exactamente lo que haces; usa la API para interactuar con el almacenamiento.
Cómo gestionar y limpiar Chrome Storage (paso a paso con imágenes)
1) Borrar datos de navegación (todo lo básico)
- Abre Chrome en tu equipo.
- Haz clic en los tres puntos verticales arriba a la derecha (Menú).
- Selecciona “Más herramientas” y luego “Borrar datos de navegación”.
- En la pestaña “Básico”, elige el intervalo de tiempo.
- Marca los tipos de información a eliminar (Historial de navegación, Cookies y otros datos de sitios, Imágenes y archivos en caché).
- Haz clic en “Borrar datos”.
Atajo: Ctrl + Shift + Supr (Windows/Linux) abre directamente el diálogo de borrar datos.
Alternativa: Usa herramientas de limpieza de terceros (Ej: CCleaner) con precaución; revisa siempre qué elementos se borran.
2) Borrar datos por sitio (Storage específico)
- Abre Chrome.
- Menú -> “Configuración”.
- En el panel izquierdo, selecciona “Privacidad y seguridad”.
- Selecciona “Configuración de sitios”.
- Abre “Ver permisos y datos almacenados en los sitios”.
- Pulsa “Borrar todos los datos”.
- Confirma haciendo clic en “Borrar” en la ventana emergente.
Opcional: Ajusta permisos de cookies para borrar automáticamente al cerrar el navegador o para permitir/denegar cookies por sitio.
3) Borrar localStorage desde DevTools (útil para desarrolladores)
- Abre la página de la extensión o el sitio.
- Menú -> Más herramientas -> Herramientas de desarrollador.
- Selecciona la pestaña “Application” (Aplicación).
- En el panel derecho, expande “Local Storage” y selecciona el origen.
- Click derecho sobre el sitio y selecciona “Clear” para vaciarlo.
¿Qué hacer si chrome.storage.sync.set no funciona?
Problemas comunes: valores no se guardan, la función no devuelve datos, o la sincronización está desincronizada. Diagnóstico y pasos de solución:
Permisos en el manifiesto
- Asegúrate que “permissions”: [“storage”] está en manifest.json.
Uso correcto de la API
- Usa el callback o maneja correctamente la Promise/async. Si dependes del valor guardado, encadena la lectura en el callback o en un await.
Revisar chrome.runtime.lastError
- Muchos errores aparecen en chrome.runtime.lastError dentro del callback.
Claves y tipos
- Asegúrate de usar un objeto con claves válidas: chrome.storage.sync.set({ miClave: valor }, …)
- No intentes pasar múltiples claves como parámetros sueltos: pasa un objeto.
Límites y cuotas
- chrome.storage.sync tiene límites por item y totales por cuenta. Si excedes, el set fallará.
Re-sincronizar/Reset Sync
- Si Chrome informa errores de sincronización, prueba a hacer un “Reset sync” desde la configuración de sincronización (Forzar re-sync puede resolver corrupción del estado remoto).
Permisos del SO
- En plataformas como Windows, revisa que la app Chrome tenga permiso para acceder al almacenamiento si el SO restringe accesos de aplicaciones.
Depuración manual
- Prueba a limpiar local y luego reintentar: chrome.storage.sync.clear() y vuelve a setear datos de prueba.
Evita escribir grandes cantidades frecuentemente
- Si tu extensión escribe cada pocos milisegundos grandes objetos, la cola de sincronización puede saturarse.
Guía de depuración rápida (SOP) — Playbook para desarrolladores
- Reproducir el fallo en modo de desarrollo (con DevTools abiertos).
- Añadir console.log en callbacks y chequear chrome.runtime.lastError.
- Verificar permisos en manifest.json.
- Ejecutar chrome.storage.sync.get(null, callback) para listar claves actuales.
- Intentar chrome.storage.sync.set con un objeto pequeño y ver si aparece en la consola.
- Si persiste, prueba con chrome.storage.local para descartar problemas de red/Sync.
- Reinicia Chrome y realiza Reset Sync si procede.
- Documenta el fallo y pasos reproducibles.
Heurística mental: ¿sync o local?
- Si la configuración debe acompañar al usuario en múltiples dispositivos → sync.
- Si el dato es voluminoso o temporal → local.
- Si el dato es sensible → cifrar antes de guardar o usar almacenamiento remoto seguro.
Mini-regla: Preferir sync para pequeñas preferencias, local para datos grandes y temporales.
Seguridad y privacidad (recomendaciones)
- Nunca guardes contraseñas, tokens de larga duración o datos PII sin cifrado.
- Si necesitas guardar datos sensibles, cifra en el cliente con una clave derivada o usa un backend seguro.
- Minimiza la información sincronizada; guarda identificadores o flags, no blobs de usuario.
- Implementa manejo de errores y evita exponer detalles técnicos al usuario final.
Privacy / GDPR notes (aplicable cuando los datos sean personales):
- Evaluar la necesidad de sincronizar datos personales. Si sincronizas datos personales entre dispositivos, el usuario deberá estar informado y, si aplica, dar consentimiento claro.
- Mantén un registro de qué datos se sincronizan y por qué: esto ayuda a cumplir la minimización de datos.
- Ofrece mecanismos para borrar datos sincronizados (opción de “borrar datos de la cuenta”) si la política de privacidad lo exige.
Snippets / Cheat sheet rápido
- Declarar permiso:
"permissions": ["storage"]
- Guardar en sync (callback):
chrome.storage.sync.set({ key: value }, () => { /* comprobar lastError */ });
- Leer varios keys:
chrome.storage.sync.get(['k1', 'k2'], result => { /* result.k1 */ });
- Eliminar:
chrome.storage.sync.remove('k', () => {});
chrome.storage.sync.clear(() => {}); // borrar todo
- Envolver en Promise:
function storageGet(keys) {
return new Promise((resolve, reject) => {
chrome.storage.sync.get(keys, items => {
if (chrome.runtime.lastError) reject(chrome.runtime.lastError);
else resolve(items);
});
});
}
Casos en los que chrome.storage.sync falla (counterexamples)
- Usuario sin sesión de Google en Chrome: no hay sync.
- Sincronización desactivada: el comportamiento será local only.
- Exceso de cuota: chrome.storage.sync rechaza escrituras grandes.
- Conflictos frecuentes por múltiples escrituras simultáneas en distintos dispositivos pueden producir resultados inesperados.
Role-based checklist (Desarrollador / Administrador / Usuario)
Desarrollador:
- Declarar permiso storage en manifest.json
- Manejar chrome.runtime.lastError en callbacks
- Escribir pruebas unitarias para lectura/escritura de storage
- Manejar cuotas y fallos de set
Administrador / IT:
- Revisar políticas de sincronización y cumplimiento de privacidad
- Instruir a usuarios sobre borrado de datos si es necesario
Usuario final:
- Verificar que haya sesión en Chrome y que Sync esté activo
- Revisar y borrar datos de sitio si se desea
Pruebas / Acceptance criteria (test cases)
- Guardar y leer un objeto simple en chrome.storage.sync devuelve el mismo valor en el callback.
- Tras una desconexión y reconexión, los datos escritos en offline se sincronizan correctamente.
- chrome.storage.sync.set falla cuando excede la cuota (debe capturarse el error).
- Al desactivar Sync en el navegador, el almacenamiento pasa a ser local y no aparece en otros dispositivos.
Mecanismos alternativos
- Sincronización propia del servidor: almacenar preferencias del usuario en tu backend permite mayor control y auditoría, y evita las cuotas de chrome.storage.sync. Requiere autenticación y gestión de sessions.
- IndexedDB local: para datos estructurados y voluminosos en el cliente sin sincronización automática.
- Servicios de sincronización externos (Firebase, etc.) para datos complejos con sincronización multi-dispositivo.
Fact box (conceptos clave)
- chrome.storage.sync: sincroniza datos entre dispositivos del mismo usuario cuando Sync está activo.
- chrome.storage.local: almacenamiento persistente local al dispositivo.
- localStorage (DOM): almacenamiento por dominio, solo strings y sincrónico.
- permissions: “storage” es obligatorio en extensiones.
Plantillas / ejemplo de playbook de solución de incidentes (rollback)
- Detectado fallo: reporting automático a través de logs.
- Reproducir en entorno de staging con los mismos pasos del usuario.
- Si la causa es corrupción remota, instruir a soporte para solicitar al usuario: Settings -> Sync -> Reset sync.
- Aplicar fix en la extensión y desplegar parche.
- Monitorear hasta confirmación de resolución con el usuario.
Glosario (1 línea por término)
- Sync: mecanismo de Chrome que replica datos de perfil entre dispositivos.
- Manifest.json: fichero que declara permisos y metadatos de una extensión Chrome.
- callback: función que se ejecuta cuando una operación asíncrona finaliza.
- chrome.runtime.lastError: campo donde Chrome expone errores de APIs en callbacks.
Lecturas relacionadas / recursos
- 3 Ways to Safely Sync Your Chrome Passwords With a Keychain
- How to fix Chrome not syncing [Bookmarks, Passwords, Tabs]
- Fix: Your in Browser Storage for Mega is Full [Chrome]
- 5 Fixes You Must Try When Tabs Won’t Open in Chrome
Conclusión
Chrome Storage Sync es una API útil para sincronizar configuraciones y pequeñas piezas de información entre dispositivos. Para usarla correctamente: declara permisos, maneja la asincronía con callbacks o Promises, respeta cuotas y no almacenes datos sensibles sin cifrado. En caso de problemas, sigue el playbook de depuración y considera alternativas (backend propio o servicios de sincronización) si tus necesidades exceden las limitaciones de chrome.storage.sync.
Resumen final:
- Usa chrome.storage.sync para preferencias por usuario entre dispositivos.
- Usa chrome.storage.local para datos locales, grandes o temporales.
- Maneja errores, revisa permisos y aplica buenas prácticas de seguridad y privacidad.
Materiales similares

Fondos distintos por pantalla en Android

Contadores de rendimiento para Apache Tomcat

Protégete del clickjacking y doble clickjacking

Fondos distintos por pantalla en Android

Eliminar tus datos de data brokers
