Guía de tecnologías

Cómo configurar correctamente Chrome Storage Sync

11 min read Desarrollo web Actualizado 14 Sep 2025
Configurar y depurar Chrome Storage Sync
Configurar y depurar 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)

ItemUsoTamañoSeguridad
CookiesSe 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
LocalStorageAlmacenamiento cliente, lectura por scripts; no se envía al servidor automáticamenteMucho mayor que cookies; adecuado para varios KB/MB dependiendo del navegadorSusceptible a XSS; no adecuado para tokens sensibles sin cifrado
Cache (HTTP Cache)Caching de recursos (imágenes, archivos) para acelerar cargasManeja bytes y recursos; no pensado para datos de usuarioVulnerable 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)

  1. Abre Chrome en tu equipo.
  2. Haz clic en los tres puntos verticales arriba a la derecha (Menú). Icono de menú de Chrome
  3. Selecciona “Más herramientas” y luego “Borrar datos de navegación”. Opción Más herramientas -> Borrar datos de navegación
  4. En la pestaña “Básico”, elige el intervalo de tiempo.
  5. Marca los tipos de información a eliminar (Historial de navegación, Cookies y otros datos de sitios, Imágenes y archivos en caché). Ventana Borrar datos de navegación
  6. 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)

  1. Abre Chrome.
  2. Menú -> “Configuración”. Menú Configuración
  3. En el panel izquierdo, selecciona “Privacidad y seguridad”. Privacidad y seguridad
  4. Selecciona “Configuración de sitios”. Configuración de sitios
  5. Abre “Ver permisos y datos almacenados en los sitios”. Ver permisos y datos almacenados
  6. Pulsa “Borrar todos los datos”. Botón Borrar todos los datos
  7. Confirma haciendo clic en “Borrar” en la ventana emergente. Confirmación Borrar datos

Opcional: Ajusta permisos de cookies para borrar automáticamente al cerrar el navegador o para permitir/denegar cookies por sitio. Ajustes Cookies

3) Borrar localStorage desde DevTools (útil para desarrolladores)

  1. Abre la página de la extensión o el sitio.
  2. Menú -> Más herramientas -> Herramientas de desarrollador. Herramientas de desarrollador
  3. Selecciona la pestaña “Application” (Aplicación). Pestaña Application
  4. En el panel derecho, expande “Local Storage” y selecciona el origen. Local Storage en DevTools
  5. Click derecho sobre el sitio y selecciona “Clear” para vaciarlo. Limpiar localStorage

¿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:

  1. Permisos en el manifiesto

    • Asegúrate que “permissions”: [“storage”] está en manifest.json.
  2. 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.
  3. Revisar chrome.runtime.lastError

    • Muchos errores aparecen en chrome.runtime.lastError dentro del callback.
  4. 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.
  5. Límites y cuotas

    • chrome.storage.sync tiene límites por item y totales por cuenta. Si excedes, el set fallará.
  6. 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).
  7. 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.
  8. Depuración manual

    • Prueba a limpiar local y luego reintentar: chrome.storage.sync.clear() y vuelve a setear datos de prueba.
  9. 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

  1. Reproducir el fallo en modo de desarrollo (con DevTools abiertos).
  2. Añadir console.log en callbacks y chequear chrome.runtime.lastError.
  3. Verificar permisos en manifest.json.
  4. Ejecutar chrome.storage.sync.get(null, callback) para listar claves actuales.
  5. Intentar chrome.storage.sync.set con un objeto pequeño y ver si aparece en la consola.
  6. Si persiste, prueba con chrome.storage.local para descartar problemas de red/Sync.
  7. Reinicia Chrome y realiza Reset Sync si procede.
  8. 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)

  1. Guardar y leer un objeto simple en chrome.storage.sync devuelve el mismo valor en el callback.
  2. Tras una desconexión y reconexión, los datos escritos en offline se sincronizan correctamente.
  3. chrome.storage.sync.set falla cuando excede la cuota (debe capturarse el error).
  4. 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)

  1. Detectado fallo: reporting automático a través de logs.
  2. Reproducir en entorno de staging con los mismos pasos del usuario.
  3. Si la causa es corrupción remota, instruir a soporte para solicitar al usuario: Settings -> Sync -> Reset sync.
  4. Aplicar fix en la extensión y desplegar parche.
  5. 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.
Autor
Edición

Materiales similares

Fondos distintos por pantalla en Android
Android Personalización

Fondos distintos por pantalla en Android

Contadores de rendimiento para Apache Tomcat
Monitorización

Contadores de rendimiento para Apache Tomcat

Protégete del clickjacking y doble clickjacking
Seguridad web

Protégete del clickjacking y doble clickjacking

Fondos distintos por pantalla en Android
Android

Fondos distintos por pantalla en Android

Eliminar tus datos de data brokers
Privacidad

Eliminar tus datos de data brokers

Fondo distinto por cada pantalla en Android
Android

Fondo distinto por cada pantalla en Android