Repository navigation
v0.8.0
🚀 Release @addon-core/storage v0.8.0 (2026-09-23)
💥 Breaking Changes
- useStorage now accepts an options object and returns named
state and operations instead of a tuple. React 16/17 and TypeScript below 5.4
are no longer supported.
⚡️ Performance Improvements
-
observer: avoid rereading storage after successful mutations (1e76a12)
Use subscription events after successful writes and retain recovery reads for
failed operations. Reconnect failed subscriptions before mutations and recover
all retained keys without overwriting newer events or masking mutation errors.Cover delayed delivery, no-op writes, shared snapshots, and recovery failures;
document when mutation promises can settle before the snapshot is updated.
✨ Features
-
providers: add subscription errors and batch patch types (f922b10)
Report terminal decoding and formatting failures through per-subscription
onError callbacks while preserving application callback error behavior.
Forward failures through MonoStorage and test subscription disposal and errors.Add StorageBatchPatch so explicit undefined remains a supported deletion
operation with exactOptionalPropertyTypes. -
react: support observable single and batch storage state (4d2175e)
Replace the positional tuple hook with mutually exclusive key/keys options and
an object result exposing readiness, existence, mutation state and async actions.Share reads and subscriptions through a framework-independent StorageObserver
with a static instance registry, stable snapshots and recovery from failures.
Export StorageStatus and document defaults, update semantics and error handling.Require React 18/19 and TypeScript 5.4+, update the browser dependency, and test
published declarations across minimum/current TypeScript and React 18/19 in CI.
🐛 Bug Fixed
-
deps: restore missing changelog parser in lockfile (bbd8843)
-
providers: preserve storage read errors (cc1b460)
🧪 Tests
-
migrate storage suites to browser testkit (cb8e072)
Replace jest-webextension-mock with the browser 0.9 testkit and real WebCrypto.
Organize runtime coverage into unit, provider integration, and React projects.
Separate shared fixtures, type assertions, consumer checks, and tooling tests;
configure source/test aliases and verify Chrome and Firefox provider profiles.
🧹 Chores
🛠️ Refactoring
-
use source aliases for internal imports (66b881d)
Replace parent-directory imports with ~/ paths across providers, helpers,
locking, the observer, and the React adapter. Keep neighboring imports relative.
🙌 Contributors
- Anjey Tsibylskij (@atldays) — commits: 10