Guida alle tecnologie

Come configurare correttamente Chrome Storage Sync

10 min read Browser Aggiornato 14 Sep 2025
Configura Chrome Storage Sync correttamente
Configura Chrome Storage Sync correttamente

Importante: chrome.storage.sync funziona solo se l’utente è connesso a Chrome con un account Google, Chrome è online e la sincronizzazione è attivata. Quando la sincronizzazione è disattiva o il browser è offline, i dati restano locali e vengono inviati quando la connessione torna.

Perché usare chrome.storage invece di localStorage

  • chrome.storage accetta oggetti complessi. localStorage lavora solo con stringhe.
  • chrome.storage è asincrono. Questo migliora reattività e performance dell’estensione o della pagina.
  • chrome.storage.sync replica dati su altri dispositivi con lo stesso account Google.

Definizione rapida: chrome.storage.sync - API che sincronizza chiavi/valori fra istanze di Chrome dell’utente; chrome.storage.local - storage locale dell’installazione.

Sommario delle differenze (in breve)

  • chrome.storage.sync: asincrono, oggetti, sincronizzazione cloud, limiti di quota e politiche di conflitto.
  • chrome.storage.local: asincrono, oggetti o stringhe (ma meno vincoli di quota), dati confinati alla macchina.
  • localStorage (window.localStorage): sincrono, solo stringhe, uso più semplice ma blocca il thread principale.

Glossario 1 linea

  • Sync: sincronizzazione automatica dei dati fra dispositivi.
  • Manifest: file JSON che descrive un’estensione Chrome e le sue autorizzazioni.
  • Quota: limite di spazio per chrome.storage.sync o chrome.storage.local.

Come settare e usare chrome.storage (esempi pratici)

Esempio minimo in un’estensione Manifest V3 (manifest.json):

{
  "manifest_version": 3,
  "name": "Esempio Storage",
  "version": "1.0",
  "permissions": ["storage"],
  "background": {"service_worker": "background.js"}
}

Note: il permesso storage è necessario per usare chrome.storage dalle parti dell’estensione che lo richiedono.

Esempi di API comuni (background.js o content script):

// Salvare un oggetto in chrome.storage.sync
chrome.storage.sync.set({
  userSettings: { theme: 'dark', fontSize: 14 }
}, function() {
  console.log('Impostazioni salvate.');
});

// Leggere i dati
chrome.storage.sync.get(['userSettings'], function(result) {
  console.log('Impostazioni recuperate', result.userSettings);
});

// Usando Promise (API moderna con chrome.* promissified o in MV3 tramite chrome.storage.*.then)
async function saveSettings(settings) {
  await chrome.storage.sync.set({ userSettings: settings });
}

Consiglio: per funzioni asincrone, preferisci Promise/async-await per codice più leggibile e meno soggetto a callback hell.

Quando chrome.storage.sync non funziona: cause comuni e rimedi

Sintomi tipici:

  • chrome.storage.sync.set non salva valori o non restituisce risultato immediato
  • valori mancanti su altri dispositivi
  • conflitti di sincronizzazione o errori “sync error”

Controlli rapidi:

  • Verifica il permesso “storage” nel manifest
  • Verifica che l’utente sia loggato in Chrome con account Google
  • Controlla che la sincronizzazione sia attiva in Chrome > Impostazioni > Sincronizzazione
  • Assicurati che Chrome sia online
  • Controlla i limiti di quota (la documentazione ufficiale specifica i limiti attuali)

Diagnosi e azioni:

  • Usa le callback o le Promise per attendere il completamento della set/get
  • Se riscontri errori di sincronizzazione, esegui Reset sync in Chrome (Impostazioni > Sincronizzazione e servizi Google > Gestisci sincronizzazione > Reset)
  • Se i dati non si salvano, prova a usare chiavi variabili o a serializzare l’oggetto prima del salvataggio
  • Verifica conflitti: se due dispositivi scrivono contemporaneamente, l’ultima scrittura vince oppure Chrome applica regole interne; prevedi merge lato applicazione quando necessario
  • Se necessario, usa chrome.storage.local come cache temporanea e poi sincronizza manualmente quando lo stato di rete lo consente

Differenze fra storage, cookies e cache (tabella localizzata)

VoceUsoDimensioneSicurezza
Storage vs CookieI cookie vengono inviati al server tramite richieste HTTP. Lo storage è pensato per letture client-only. Lo storage resta nel browser e non viene inviato al server automaticamente.I cookie tipicamente hanno un limite di ~4 KB. Lo storage locale è molto più capiente.Nessuno è intrinsecamente sicuro al 100%. Entrambi possono essere vulnerabili a XSS. Evitare di salvare informazioni sensibili senza cifratura adeguata.
Storage vs CacheLa cache è un backup temporaneo per accelerare il caricamento di risorse. Lo storage è una soluzione di persistenza a lungo termine.La cache lavora a livello di byte; lo storage usa blocchi/chiavi per dati strutturati.Anche la cache può essere sfruttata da script malevoli. Non memorizzare segreti in chiaro.

Nota: evitare di memorizzare password in chiaro né altri dati sensibili. Per segreti, preferire soluzioni server-side o keychain del sistema quando possibile.

Dove sono memorizzati i dati (per utente)

Chrome salva i dati del profilo utente nella cartella profilo. Su Windows tipico percorso:

AppData\Local\Google\Chrome\User Data\Default\Local Storage

Questo percorso contiene vari file di storage; non modificare manualmente i file mentre Chrome è in uso.

Gestione pratica dello storage in Chrome (passo passo per utenti)

1) Cancellare i dati di navigazione

  1. Apri Chrome.
  2. Clic sui tre puntini verticali > Altri strumenti > Cancella dati di navigazione.
  3. Scegli intervallo di tempo e tipi di dati da cancellare.
  4. Clicca “Cancella dati”.

Suggerimento: scorciatoia Ctrl+Shift+Delete per Windows.

2) Cancellare tutti i dati di siti specifici (Impostazioni avanzate)

  1. Apri Chrome > Impostazioni > Privacy e sicurezza > Impostazioni sito > Visualizza autorizzazioni e dati memorizzati nei siti.
  2. Clic su “Cancella tutti i dati” per rimuovere i dati memorizzati da tutti i siti.
  3. Oppure gestisci i singoli siti e rimuovi quello che serve.

3) Cancellare localStorage via Developer Tools (sviluppatori)

  1. Apri DevTools > Application.
  2. Espandi Local Storage > seleziona il sito > click destro > Clear.

Questo elimina localStorage per il dominio selezionato.

Playbook di configurazione per sviluppatori (SOP breve)

  1. Aggiungi “storage” a manifest.json.
  2. Testa sul canale di sviluppo con un profilo Chrome di prova.
  3. Implementa salvataggio con Promise e fallback su local.
  4. Gestisci conflitti con merge policy esplicita.
  5. Documenta limiti di quota e pulizia periodica dei dati.
  6. Fornisci UI per il reset dei dati e per esportare/importare preferenze.

Esempio di strategia di fallback:

  • Prima prova a salvare su chrome.storage.sync
  • Se set fallisce per quota, serializza e sposta su chrome.storage.local
  • Avvisa l’utente se ci sono dati non sincronizzati

Checkpoint di conformità e sicurezza (breve lista)

  • Non memorizzare dati sensibili in chiaro.
  • Prevedi cifratura lato client per informazioni sensibili se necessario.
  • Limita la quantità di dati sincronizzati; documenta le dimensioni per gli utenti.
  • Fornisci opzioni per cancellare o esportare i dati.
  • Notifica l’utente sulla sincronizzazione e richieste di permessi.

Incident runbook: sincronizzazione fallita

  1. Verifica stato account Google e login.
  2. Controlla impostazioni di sincronizzazione in Chrome.
  3. Controlla errori console e DevTools in background/service_worker.
  4. Esegui Reset sync se necessario per forzare un riavvio della sincronizzazione.
  5. Se persistono errori, estrai i dati locali in un file JSON per diagnostica.
  6. Contatta il supporto con i log e i passi per riprodurre l’errore.

Casi di test e criteri di accettazione (esempi)

  • TC-01: salvataggio di un oggetto complesso in sync deve restituire callback senza errori.
  • TC-02: dopo salvataggio su dispositivo A, il dispositivo B deve ricevere i dati entro un lasso di tempo ragionevole quando è online e loggato.
  • TC-03: quando sync è disabilitato, i dati rimangono in local ma non vengono inviati al cloud.
  • TC-04: Reset sync rimuove i dati remoti ma conserva local fino a rimozione manuale.

Criterio di successo: tutti i test passano su almeno due profili di Chrome distinti.

Esempi di snippet e cheat sheet

Salvataggio singolo:

chrome.storage.sync.set({ key: value }, () => {
  if (chrome.runtime.lastError) {
    console.error('Errore salvataggio:', chrome.runtime.lastError);
  } else {
    console.log('Salvataggio completato.');
  }
});

Lettura multipla con Promise:

function getKeys(keys) {
  return new Promise((resolve) => {
    chrome.storage.sync.get(keys, (items) => resolve(items));
  });
}

await getKeys(['userSettings', 'tokens']);

Rimozione:

chrome.storage.local.remove('keyToRemove', () => {
  console.log('Chiave rimossa.');
});

chrome.storage.local.clear(() => console.log('Local storage pulito.'));

Quando chrome.storage.sync non è la scelta giusta (controesempi)

  • App che devono salvare grandi blob binari o dati molto voluminosi: meglio usare storage esterno o server-side.
  • Dati strettamente sensibili che richiedono compliance specifiche: preferire gestione server-side e sistemi cifrati dedicati.
  • Situazioni in cui l’utente non usa mai l’account Google o non abilita la sincronizzazione: non fare affidamento esclusivo su sync.

Migrazione e compatibilità

  • Manifest V2 vs V3: assicurati che la tua estensione sia aggiornata a Manifest V3 per le nuove policy e service worker.
  • Versioni di Chrome: la API è maturata nel tempo. Testa su canali Stable e Beta.
  • Strategie di migrazione: esporta preferenze in JSON e prevedi import automatico alla nuova versione.

Privacy e note GDPR (se raccogli dati degli utenti)

  • Se memorizzi dati personali, informa l’utente e fornisci un meccanismo per accesso, rettifica e cancellazione.
  • Non memorizzare più dati del necessario. Minimizza e anonimizza quando possibile.
  • Documenta la base giuridica per il trattamento dei dati (consenso, esecuzione contratto, ecc.).

Nota legale: queste sono indicazioni generali, non consulenza legale. Per conformità approfondita, consultare un legale specializzato.

Decision tree per scegliere tra sync e local (Mermaid)

flowchart TD
  A[Hai bisogno di sincronizzazione fra dispositivi?] -->|Sì| B{L'utente usa account Google e abilita sync?}
  A -->|No| C[Usa chrome.storage.local]
  B -->|Sì| D[Usa chrome.storage.sync con limiti di quota]
  B -->|No| E[Usa chrome.storage.local + offri export/import]
  D --> F{Dati sensibili?}
  F -->|Sì| G[Evita sync per dati sensibili; valuta cifratura o server-side]
  F -->|No| H[Implementa sync e strategie di merge]

Role-based checklist (Sviluppatore / Admin / Utente finale)

Sviluppatore:

  • Aggiungi permesso storage al manifest.
  • Gestisci errori con lastError.
  • Implementa fallback e test end-to-end.
  • Documenta limiti di quota.

Amministratore IT:

  • Stabilire policy aziendali per sincronizzazione dei dati.
  • Monitorare i profili gestiti e le impostazioni di sincronizzazione.
  • Fornire istruzioni per reset o forzare aggiornamenti.

Utente finale:

  • Verificare di essere loggato in Chrome.
  • Attivare sincronizzazione in Impostazioni.
  • Usare le opzioni di privacy per cancellare dati quando necessario.

Suggerimenti pratici e scorciatoie

  • Usa Ctrl+Shift+Delete per cancellare i dati di navigazione velocemente.
  • In DevTools, Application > Local Storage per ispezionare/elimnare chiavi.
  • Fornisci opzione di esportazione/importazione preferenze per evitare perdita di dati durante migrazioni.

Rischi principali e mitigazioni

  • Rischio: XSS che legge localStorage. Mitigazione: sanitizza input, Content Security Policy, evita memorizzare segreti.
  • Rischio: superamento quota sync. Mitigazione: limitare dimensione degli oggetti, usare compressione o spostare su local.
  • Rischio: conflitti multi-dispositivo. Mitigazione: implementa merge intelligente e policy di ultima modifica.

Esempio pratico: debug di chrome.storage.sync.set non funzionante

Passi:

  1. Controlla console per chrome.runtime.lastError dopo la set.
  2. Verifica permessi in manifest.json.
  3. Prova a salvare un oggetto minimale (es. {test: 1}) per escludere problemi di serializzazione.
  4. Testa con un profilo Chrome differente per escludere problemi locali di profilo.
  5. Se persistono errori, esegui Reset sync e riprova.

Mini metodologia per implementare storage in un progetto

  1. Analisi: quali dati devono essere persistiti e perché.
  2. Decisione: sync, local o server-side.
  3. Implementazione: API chrome.storage con Promise, gestione errori.
  4. Test: unit test, E2E su più profili.
  5. Monitor: log di errori e metri di fallback.

Esempio di export/import JSON per preferenze utente

// Export
chrome.storage.sync.get(null, (items) => {
  const blob = new Blob([JSON.stringify(items)], { type: 'application/json' });
  const url = URL.createObjectURL(blob);
  chrome.downloads.download({ url, filename: 'settings-export.json' });
});

// Import (esempio semplificato)
function importSettings(json) {
  const obj = JSON.parse(json);
  chrome.storage.sync.set(obj, () => console.log('Import completato'));
}

Riepilogo finale

Chrome Storage Sync è uno strumento potente per sincronizzare preferenze e piccoli dataset fra dispositivi. Tuttavia richiede attenzione su permessi, limiti di quota, sicurezza e gestione dei conflitti. Seguendo le checklist e i playbook in questo articolo, puoi configurare, testare e mantenere una strategia di storage robusta.

Note finali: se preferisci non usare la sincronizzazione, chrome.storage.local resta un’ottima alternativa. Per dati sensibili o volumi elevati, valuta soluzioni server-side o storage di sistema più sicuro.

Risorse aggiuntive

  • Documentazione ufficiale Chrome Extensions - Storage API
  • Linee guida su sicurezza web e Content Security Policy

Immagini utilizzate:

Impostazione generale di Chrome Storage Sync e interfaccia di gestione

Icona menu Chrome mostra tre puntini verticali per accedere alle opzioni avanzate

Screenshot della voce Cancella dati di navigazione" in Chrome" class="block w-auto max-w-full h-auto mx-auto py-2 rounded-xl "/>

Esempio di selezione tipo di dati da cancellare (cronologia, cookie, cache)

Menu di Chrome per accedere alle Impostazioni

Pagina Impostazioni principale di Chrome

Sezione

Voce

Schermata

Pulsante

Conferma di Cancellazione dati

Schermata Cookies e altri dati dei siti con opzioni di pulizia

Opzione per cancellare cookie alla chiusura delle finestre

Esempi di gestione cookie per siti specifici

Scheda Application in DevTools con Local Storage espanso

Sezione Local Storage in DevTools con chiavi di esempio

Cancellazione di Local Storage tramite DevTools


Autore
Redazione

Materiali simili

Sfondi diversi per ogni schermata Home su Android
Android Personalizzazione

Sfondi diversi per ogni schermata Home su Android

Monitoraggio Apache Tomcat: contatori e regole
Monitoraggio

Monitoraggio Apache Tomcat: contatori e regole

Proteggersi dal clickjacking: guida pratica
Sicurezza

Proteggersi dal clickjacking: guida pratica

Sfondi diversi per ogni Home su Android
Android

Sfondi diversi per ogni Home su Android

Rimuovere i tuoi dati dai data broker
Privacy

Rimuovere i tuoi dati dai data broker

Sfondi diversi per ogni schermata Android
Android Personalizzazione

Sfondi diversi per ogni schermata Android