Repository navigation
Improve repeated selector work while keeping the public API and default deep equality unchanged.
- Share computations for the same pure selector function within the latest store snapshot; retain per-hook isolation for concurrent renders, props and hydration.
- Avoid allocating an async result handler on synchronous writes; preserve async partial merging and reentrant notifications.
- Enable unused-import tree shaking while preserving browser IIFE initialization and legacy import paths.
- Add reproducible Zustand/Jotai benchmarks and a cached-list recipe. Explain the existing Object.is option and its notification/render tradeoffs.
Public declarations match 0.10.0. React remains the only runtime peer dependency. Shared results must be immutable and selectors pure. Cheap/distinct selectors have a small cache cost; gzip increases by 98–116 bytes, within the enforced budgets. This release does not claim to be fastest for every workload.
Validation: 60 tests on React 18 and 19, production/type builds, packed imports/types/tree shaking/size limits, and benchmark correctness checks. Saved full comparison reports were recorded before the version bump; their optimized runtime artifact matches 0.10.1 exactly.
Install: npm install plain-store@0.10.1