I am working on a small web app that stores user data locally using indexedDB which can be imported/exported by making use of JSON files. Since I plan on adding updates to the site, I want to know what best practices I should follow to make sure my app can allow importing of user data from older versions. It could be related to how I should define the properties of my user data object to make it future proof, or any library or tool I could implement that would make this migration process easier.

Do keep these points in mind:

  1. I am using NextJS to build this application and Dexie to manage indexedDB
  2. Without going into details, the user data file makes use of heavily nested objects and arrays and most likely won’t fit in a cookie or even in the local storage API
  3. This web app acts as a proof of concept which must only make use of the aforementioned core technologies, regardless of whether more efficient alternatives exist or not.
  • Ephera@lemmy.ml
    link
    fedilink
    arrow-up
    28
    ·
    1 month ago

    Two rules of thumb that I’ve found useful:

    1. Introduce a version field top-level. If necessary, you can introduce a version 2, but keep the parser for version 1 around.
    2. You want to err on the side of using objects in place of single values, because you can add fields to an object without breaking backwards compatibility.
    • Superb
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 month ago

      You should also have a way to convert from version 1 to version 2. Then if someone loads an old version you can save it back in the new format.

  • hosaka@programming.dev
    link
    fedilink
    arrow-up
    6
    ·
    1 month ago

    Use Open API schema. You can define data models and endpoints or just the models, I do this at work. Then generate your code using openapi-generator.