Guarde los datos en un objeto pequeño con versión
En lugar de guardar una puntuación simple como 240, almacene un objeto JSON como { version: 2, bestScore: 240, settings: { sound: true } }. Al cargar, analice el texto, verifique que sea un objeto e inspeccione su versión antes de usar campos. JSON.parse puede generar un SyntaxError para JSON no válido, por lo tanto, maneje el texto con formato incorrecto con un respaldo definido en lugar de permitir que el inicio se detenga antes de que el reproductor pueda comenzar.
Mantenga pequeño el objeto y documente qué significa cada versión. No trate el número de versión como una validación suficiente: un valor marcado como versión 2 aún puede estar incompleto o tener un tipo incorrecto. Compruebe los campos de los que depende la versión actual, como bestScore, que debe ser un número finito y no negativo, y la preferencia de sonido, que debe ser booleana.
Escriba una migración para cada formato antiguo compatible
Una migración de la versión uno puede convertir el número antiguo en el nuevo objeto, completar una preferencia predeterminada y guardar el formato de la versión dos. Ejecute migraciones consecutivas cuando admita varias versiones históricas: de la uno a la dos y luego de la dos a la tres. Pruebe cada caso de prueba por separado, incluidos una clave ausente, JSON mal formado, una versión futura desconocida y un valor escrito parcialmente. Decida si conserva, ignora o restablece los datos desconocidos, y muestre un mensaje de recuperación cuando sea necesario.
Tenga en cuenta los límites del almacenamiento del navegador
MDN describe localStorage como datos asociados al origen que pueden persistir entre sesiones del navegador, pero ni su disponibilidad ni su contenido deben considerarse una copia de seguridad garantizada de la cuenta. No guarde allí secretos ni decisiones que deban ser confiables. Si el juego no puede leer una partida guardada, permita un nuevo comienzo definido y evite volver a intentar en cada inicio la misma migración fallida.
Preguntas sobre Control de versiones de datos del juego localStorage
¿Debo borrar todos los guardados cuando cambia el formato?
Sólo cuando se trata de una decisión de producto explícita. Si se pueden mapear valores importantes de manera segura, una pequeña migración probada puede preservarlos; de lo contrario, defina un respaldo claro y explique el restablecimiento.
¿Un campo de versión hace que los datos de almacenamiento local sean confiables?
No. Identifica la forma esperada para que el juego pueda migrarla o rechazarla. Es posible que aún falten datos, que estén mal formados, obsoletos o no disponibles, así que valídelos antes de usarlos.
Más información
¿Has visto algo desactualizado? Notificar una corrección