What's Changed
- feat(store): support async/await syntax for dispatch by @arturovt in #2399
- feat(store): add
registerNgxsPluginfunction for dynamic plugin registration by @arturovt in #2396 - fix(storage-plugin): guard against environments that do not provide
ngServerModeby @arturovt in #2400 - fix(store): cleanup observers once subjects complete by @arturovt in #2401
- feat(store): improve createSelector signature type checking by @markwhitfeld in #2402
- fix(storage-plugin): improve dependency ranges for security fixes by @markwhitfeld in #2404
- feat(store): export AsyncReturnType from public API by @arturovt in #2405
- fix(store): skip state mutations when injector is destroyed mid-action by @arturovt in #2406
- fix(store): warn when state is mutated after injector destruction by @arturovt in #2407
- feat(store): add
safePatchoperator by @arturovt in #2408 - refactor(store): use our custom
NoInferby @arturovt in #2409 - fix(store): report destroyed injector errors via ErrorHandler by @arturovt in #2410
- docs: add safePatch operator docs & improve comments in StateContextF… by @arturovt in #2411
- docs(operators): rewrite JSDoc comments and add @example tags by @arturovt in #2412
- feat(operators): add
updateItemsoperator by @arturovt in #2413 - feat(operators): add
removeItemsoperator by @arturovt in #2414 - docs(select): update
injectContainerStatedescription to reflect false default by @arturovt in #2415 - docs(store): clarify
@Selectorvsselect()usage and add lazy selector component example by @arturovt in #2416 - docs(store): add type-safe selectors guide and modernize selector-utils examples by @arturovt in #2417
- refactor(store): replace custom
NoInferwith TypeScript built-in by @arturovt in #2418 - Revert "refactor(store): replace custom
NoInferwith TypeScript built-in (#2418)" by @arturovt in #2419 - fix(store): include state path in StateContextDestroyedError production message by @arturovt in #2421
- fix(storage-plugin): treat missing version key as 0 when matching migrations by @arturovt in #2422
- fix(store): return original reference from updateItems when no elements match by @arturovt in #2424
- fix(store): silence console.warn in withNgxsPendingTasks for browser by @arturovt in #2425
- feat(store): expose ɵgetTypedNgxsStateFactory for internal third-party usage by @arturovt in #2426
- feat(store): expose ɵgetTypedNgxsStateFactory for internal third-party usage by @arturovt in #2427
- docs: add lazy loading action handlers recipe by @arturovt in #2355
- perf(store): reduce operator allocations on action dispatch hot path by @arturovt in #2435
- refactor(store): restore mergeMap pipeline in connectActionHandlers by @arturovt in #2436
- perf(store): replace map/defaultIfEmpty/catchError with manual Observable in connectActionHandlers by @arturovt in #2437
- perf(store): prevent StateFactory retention via unhandled error callback by @arturovt in #2438
- refactor(store): remove mergeMap in ngxsBootstrap and simplify bootstrap state by @arturovt in #2439
- refactor(store): reduce RxJS stuff in lifecycle manager by @arturovt in #2440
- feat(store): error in dev mode when selectSignal selector returns new reference with identical value by @arturovt in #2441
- feat(store): add warnOnNewReferenceWithIdenticalValue to NgxsDevelopmentOptions by @arturovt in #2442
- fix(store): selectSignal - should fallback to the default signal quality by @dmitry-stepanenko in #2443
- feat(storage-plugin): support factory functions as engine in KeyWithExplicitEngine by @arturovt in #2444
- feat: deprecate NgModule-based APIs in favor of standalone providers by @arturovt in #2445
- fix(store): use Object.create(null) for plain lookup maps to prevent prototype pollution by @arturovt in #2446
- fix(store): expose originalFn on memoized selector in dev mode for clearer warnings by @arturovt in #2448
- ci(store): increase max bundle size by @markwhitfeld in #2452
- ci: add on-demand dev publish workflow with manual approval gate by @arturovt in #2449
- ci: fix trusted publishing by @markwhitfeld in #2454
- fix(store): harden lookup maps against prototype pollution by @arturovt in #2447
- chore(deps): resolve vulnerability scanner gripes by @markwhitfeld in #2453
- ci: renovate config fix by @markwhitfeld in #2456
- chore: upgrade nx to v22.7.5 by @markwhitfeld in #2457
- fix(build): simplify package build pipeline and fix windows pipeline issue by @markwhitfeld in #2458
- build: migrate from Cypress to Playwright by @markwhitfeld in #2460
- build: add Angular 22 support by @markwhitfeld in #2455
- docs: v22 announcement article by @markwhitfeld in #2461
- chore: release v22.0.0 by @markwhitfeld in #2463
Full Changelog: v21.0.0...v22.0.0