Saltar al contenido principal

Migración de v1.x a v2.0.0

Cambios que rompen compatibilidad (Breaking Changes)

1. setItem ahora es async

v1.x

storage.setItem('clave', valor); // void — sin manejo de errores

v2.0.0

await storage.setItem('clave', valor); // Promise<void> — awaitable

En v1.x los errores se tragaban silenciosamente. En v2.0.0, los errores se propagan al llamante a menos que configures onError: 'silent'.


2. getItem ya no usa callback

v1.x

storage.getItem('clave', (item) => {
if (item) console.log(item);
});

v2.0.0

const item = await storage.getItem('clave');
if (item) console.log(item);

Nuevas funcionalidades en v2.0.0

FeatureCómo usarlo
Escritura batchawait storage.setItems({ a: 1, b: 2 })
Lectura batchawait storage.getItems(['a', 'b'])
Leer todoawait storage.getAll()
Patrón cachéawait storage.getOrSet(clave, factory)
Verificar existenciastorage.has(clave)
Purgar expiradosstorage.removeExpired()
Reiniciar TTLstorage.updateExpiry(clave)
Cantidad de itemsstorage.size()
Namespacenew ValiStorages({ prefix: 'app' })
Sliding TTLnew ValiStorages({ slidingExpiration: true })
Control de erroresnew ValiStorages({ onError: 'silent' })
Sync cross-tabnew ValiStorages({ onChange: (k, v) => {} })
API tipadacreateTypedStorage<Schema>()
Verificación SSRValiStorages.isAvailable()
Limpiezastorage.destroy()

Checklist de migración

  • Agregar await antes de cada llamada a setItem
  • Reemplazar getItem(clave, callback) por const val = await getItem(clave)
  • En proyectos SSR, envolver la instanciación en useEffect o proteger con ValiStorages.isAvailable()
  • Considerar migrar a createTypedStorage<Schema>() para mayor seguridad de tipos
  • Considerar agregar prefix para evitar colisiones de claves entre instancias