v0.1.0-alpha.14
Pre-release-
ReactNativeSignalProtocolStoreis no longer experimental. Every gate
on its graduation checklist now runs continuously. A new
backend-conformance kit —runBackendConformanceand
assertBackendConformance, exported from the package — executes thirteen
cases against anyReactNativeKeyValueStorageimplementation: round-trips,
key listing, batch removal, in-order atomic application, checks evaluated
against pre-batch state, null-guarded creation, all-or-nothing failure,
exact-userId session removal with in-batch visibility, a single winner
between concurrent guarded batches, and durability across reopen. Negative
tests prove the kit catches a non-atomic backend, a prefix-matching
session removal, and an unserialized backend. A new
createReferenceReactNativeBackend— the executable specification of the
backend contract — passes the kit on the Hermes engine React Native ships
with, in a new CI gate that runs the bundled kit on the sha256-pinned
Hermes CLI and requires an explicit pass sentinel, because Hermes exits 0
on an unhandled async rejection. Interruption and storage-pressure jest
suites drive the adapter over the reference backend: a simulated process
kill before commit leaves every atomic security write all-or-nothing and
a retry after reopen lands it whole, and quota exhaustion is exercised
through every write path. -
Quota exhaustion in the React Native store now surfaces as a typed
error. The backend contract gains a documented quota signal: a backend
rejects the failing write with an error namedQuotaExceededErrorand
commits nothing. The adapter maps that signal to the public
StorageQuotaExceededError(codeSTORAGE_QUOTA_EXCEEDED) at the same
adapter-boundary seam the browser store uses, so both stores report
storage pressure identically.