useStorage is imperative — getItem/setItem — so every preference, draft and high
score was the same hand-written pair: read once at init, write on every change. The
shell had already written it by hand for volumeStep, sanitizer and all, which is the
signal that it belongs in the SDK rather than in each app.
Reads are namespaced per app by useStorage, so two apps may use the same key.
A writable store that survives a reload.
useStorageis imperative —getItem/setItem— so every preference, draft and high score was the same hand-written pair: read once at init, write on every change. The shell had already written it by hand forvolumeStep, sanitizer and all, which is the signal that it belongs in the SDK rather than in each app.Reads are namespaced per app by
useStorage, so two apps may use the same key.