To become 3.6.0
$ npm install @ngxs/store@dev
- Feature: Add
ngxsOnChanges
lifecycle hook #1389 - Feature: Expose StateContextFactory, StateFactory #1325
- Feature: Improved type safety for children states #1388
- Feature: Storage Plugin - Use state classes as keys #1380
- Feature: Form Plugin - Implement
propertyPath
parameter in theUpdateFormValue
#1215 - Feature: WebSocket Plugin - Implement
WebSocketConnected
action #1371 - Feature: HMR Plugin - Add option for persisting state after the root module is disposed #1369
- Fix: Explicit typings for state operators #1395, #1405
- Fix: Warn if the zone is not actual "NgZone" #1270
- Fix: Do not re-throw error to the global handler if custom is provided #1379
- Fix: Group
Actions
subscriptions to remove memory leak #1381 - Fix: Upgrade ng-packagr to fix Ivy issues #1397
- Build: Add build integration test with Angular 9 (Ivy) #1278
- Build: Run SSR tests with cypress #1281
- Feature: announced @ngxs-labs/data
- Feature: announced @ngxs-labs/actions-executing
- Fix: Ensure that
@Action()
is not usable with static methods #1203 - Fix: Router Plugin - normalize URL by stripping base href #1178
- Fix: Router Plugin - revert state back after "RouterCancel" is dispatched #1236
- Fix: Router Plugin - "includeHash" must be truthy requesting path #1265
- Fix: HMR Plugin - trigger ngOnDestroy for all components in app tree #1192
- Fix: HMR Plugin - remove
@angularclass/hmr
peer dependency #1205 - Fix: Forms Plugin - reduce
UpdateFormStatus
action dispatching #1217 - Fix: Logger Plugin - print next state even if error was thrown #1247
- Fix: Devtoos Plugin - send action to the dev tools even if error was thrown #1249
- Build: dtslint must use current version of TypeScript #1182
- Build: add bundle size checker for improved infrastructure #1199
- Build: configure typescript-eslint package #1201
- Build: add cypress for E2E testing #1258
- Fix: remove
DispatchAction
and unnecessary closures #252
- Build: prepare package for the Angular 8+ compatibility and support NGXS 3.5 #247
- Build: configure
cypress
for SSR and E2E testing #248 - Feat: implement
cancelUncompleted
option #250
- Feature: upgrade to support Angular 8 #1156
- Feature: selector option to disable supressing errors #1015, #1087
- Feature: expose NgxsModuleOptions as a named type #1031
- Feature: expose SelectorOptions decorator #1029, #1047
- Feature: expose StateClass as a named type #1042, #1070
- Feature: Router Plugin - add
RouterDataResolved
action #1059 - Feature: WebSocket Plugin - add
WebSocketConnectionUpdated
action #1094 - Performance: replace array
spread
withslice
#1066, #1071 - Fix: Life-cycle events not triggering in root state #1048
- Fix: Logger Plugin - replace
Object.entries
as it breaks IE11 #931 - Fix: Router Plugin - trigger navigation on the
QueryParams
change #924 - Fix: Router Plugin - redirect to the manually entered route #920, #1159
- Fix: Router Plugin - add
RouterDataResolved
to the unionRouterAction
type #1093 - Fix: Router Plugin - manual path check should not fail for SSR #1158
- Fix: HMR Plugin - remove old styles after reload #1001
- Fix: HMR Plugin - correct persistence state in runtime #1048
- Fix: HMR Plugin - does not properly restore state #1139
- Fix: Form Plugin - introduce conditional debounce #1061
- Fix: WebSocket Plugin - don't stop
WebSocketSubject
stream after dispatchingWebSocketDisconnected
#1091 - Fix: Storage Plugin - undefined localStorage error during SSR #1119
- Build: CI - decouple build infrastructure from root package.json #1163
- Build: use
jest
internally for testing #1068
- Feature: announced select-snapshot
- Feature: immutable state context decorator
- Feature: immutable selector decorator
- Feature: support immer v3.x
- Deprecated: produce operator
- Feature: Add state defaults to UpdateState #956
- Fix: Router Plugin - serialize after Resolvers have run #895
- Fix: HMR Plugin - incorrect destruction of modules in hmr #908
- Fix: Logger Plugin - print action properties #879
- Fix: Expose
ActionType, ActionOptions
interfaces #873 - Fix: Router Plugin - add state selector with generic #894
- Fix: Initial state should not be overwritten by defaults #904
- Fix: createSelector does not allow for function returning a type unioned with
null
orundefined
#891 - Fix: Action is called multiple times when a module is called by multiple routes #888
- Fix: Expose
removeItem
operator #880
- Feature: Support server-side rendering #698
- Feature: Enable state operator extensibility #635
- Feature: Add
ofActionCompleted
action handler #712 - Feature: Add
Hot Module Replacement
plugin for manage states #707 - Feature: Add possible inheritance of state options #750
- Feature: Add new lifecycle hook
ngxsAfterBootstrap
#753 - Feature: Add ability to change the Execution strategy (decouple from zone.js) #811
- Feature: Add state operators:
patch, updateItem, removeItem, insertItem, append, compose, iif
#799 - Feature: WebSocket Plugin - Add
WebSocketDisconnected
action to notify of disconnection #825 - Feature: Defining the default state before module initialization #791
- Fix: Expose
ActionCompletion
#752 - Fix: Throw error when found duplicate state names #791
- Fix: Bind static context to the selector function #818
- Fix: WebSocket Plugin -
WebsocketMessageError
notifies of errors #825 - Performance: improved reading the name of the state from the parameter #826
- Fix: Log group not closed on error #831
- Fix: Websocket Plugin - server/network error triggered close should dispatch WebSocketDisconnected #832
- Fix: Form Plugin - correct state synchronization with dirty flag #862
- Fix: Remove typings introduced since 3.3.4 that are incompatible with TS 2.7 #853
- Fix: Remove type usages introduced since 3.3.4 that are incompatible with NG 5 & TS 2.7 #854
- Fix: Remove ref to TestBed to reduce bundle size #725
- Fix: Silence console hints in tests #706
- Fix: Remove compromised dependencies #684
- Fix: Add helper for enable development mode #674
- Fix: Support underscore in state name #663
- Fix: Storage Plugin should handle 'undefined' string #671
- Feature: NGXS Schematics
- Feature: Announced immer-adapter
- Feature: Announced dispatch-decorator
- Feature: Support Angular 7, TypeScript 3.1 #615 (ngxs#543)
- Feature: Add CLI for generate store #520
- Feature: Add strictContentSecurityPolicy compatibility rule #569
- Feature: Devtools plugin support for 'IMPORT_STATE' #507
- Feature: Form plugin - path to state can contain array #587
- Fix: Form plugin to accept form arrays #659
- Fix: Show warning when we usage development mode in production #627
- Fix: Storage Plugin should handle undefined #538
- Fix: Expose ofActionCanceled function #531
- Fix: Expose Websocket Plugin WebsocketMessageError action #504
- Feature: createSelector functions #484
- Fix: Expose RouterStateModel interface #445
- Fix: State not set correctly when duplicate key in path #459
- Fix: Action stream should return in Angular zone #456
- Fix: Remove component reference from router plugin state #441
- Fix: Fix subscription firing twice #436
- Fix: Freeze conflicting issues with router
- Fix: Freeze depedencies
- Feature: Add development mode with freeze on state and actions #409
- Feature: Storage engine migrations #401
- Feature: Select combinations #51
- Feature: Snapshot select can use state class now #398
- Feature: Meta selectors #386
- Feature: Add ability to reset state
- Performance: Run actions outside of zones #383
- Fix: Dispatcher error propogation #376
- Fix: Add patchState restriction errors #371
- Fix: Remove error when loading same state multiple times #390
- Fix: Force route navigation to run in zones #393
- Fix: Selector function should still be usable as a function #398
- Fix: Memoize inner selector function #410
- Chore: Upgrade to official Angular
- BREAKING: Rename completed to successful #349
- Feature: Add ability to disable logger #350
- Fix: Fix options not passed correctly to logger plugin #350
- Fix: Patch state mutating the original state #348
- Fix: Router plugin not working in prod #351
- BREAKING: Update websocket connect to recieve options object #341
- Feature: Consolidate action stream to single-source-of-truth #324
- Fix: Remove reconnection from websocket because of issues #341
- Fix: Enums causing prod build errors #345
- Fix: Router race case when using prod #345
- Fix: Rename
ofActionComplete
toofActionCompleted
- Fix: Expose
ofActionErrored
- Fix: Form Plugin Recursive Error
- Fix: Observable dispatch issues #235
- Fix: Websocket error when socket undefined
- Fix: Devtools not disabling
- Fix: Action Stream has too much exposed
- Chore: Loosen ng deps
- Chore: Upgrade to ng6/rx6
- feat(store): create action stream that shows the action lifecycle #255
To keep the same behavior switch from the ofAction operator to the ofActionDispatched
operator
- BREAKING: Types are now required on actions
- Feature: Devtools can emit actions manually now
- Feature: Better integration w/ RX6
- Fix: Various websocket fixes
- Fix: Fixes for
ofAction
- Chore: Rename Beta Feature
takeLast
tocancelUncompleted
- Fix: Websocket and form errors caused by #212
- Fix: Minification issues #212
- Fix: Websocket plugin sending dupe objects
- Fix: Action types on objects not matching correctly
- Fix: Revert #206
- Fix: Websocket send message correctly
- Feature: Added
snapshot
method to store to get raw value - Fix: Return
T
fromselectSnapshot
- Fix: Minification issues #206
- Fix: Websockets not emitting correctly
- Fix: Revert devtools trigger, due to circular
- Feature: Devtools can now trigger actions adhoc
- Fix: Websocket optional typekey
- Fix: Websocket pass options as partial
- Feature: Lifecycle events
- Feature: Forms plugin
- Fature: takeLast on actions
- Feature: Websocket plugin
- Feature: Snapshot selects
First off, 2.0 is a huge change. I want to appologize to everyone about that but given all the community feedback and ideas, I really wanted to get these ideas in before it was too late and we were stuck on a API. I can promise that there will not be this big of a breaking change after this release in the future without first deprecation periods.
- Fix: Prevent null exceptions when accessing state before loaded
- Fix: Move action stream to subject
- Fix: Ensure metadata exists for a Selector #181
- Feature: Expose Init and Update Actions
- Fix: Devtools showing duplicate entries
- Fix: Storage plugin not populating for lazy loaded states
- Fix: Subscriptions firing twice
- BREAKING: Storage plugin fixes #154
- Fix: AoT Regression in Storage Plugin
- BREAKING: Plugins are now their own packages
- Fix: Subscribe firing multiple times
- Fix: Devtools only passing type and payload
- BREAKING: We moved the npm package from
ngxs
to@ngxs/store
! - Fix: devtools not sending payload #132
- Fix: better if condition for localstorage
- Feature: add overloading to select method in Store #130
- Fix: add empty options object, to prevent errors #131
- Fix: feature-module bugs #135
- Fix: Types on devtools
- Feature: Extend devtool options
- Feature: Jump to Action and Jump to State in Dev Tools
- Fix: Action stream not getting passed correct args, causing error in FF
- Fix: Lazy load issue introduced by #126
- Feature: NgxsLoggerPlugin log action payload if present
- Fix: Issues with feature states #126
- Feature: State can listen to action multiple times
- Fix: Dev tools showing wrong state
- BREAKING: Remove string selects, they re not type safe and bad idea
- Feature: Extend
store.select
to support class selectors - Feature: Expose state stream for users to subscribe to
- Fix: Fix Subscribe dispatching twice #104
- BREAKING: Rename
EventStream
toActions
- BREAKING: Rename plugins to have NGXS Prefix
- Feature: Memoized Selectors
- Fix: Default to empty object if no default passed
- Fix: Patch value not updating state
- Fix: Patch value patching wrong path
- Fix: topological sort
- Fix: defaults not working correctly if plain boolean/string/number
- Fix: patchState typings
- Fix: patchState typings
- Fix: Add typings for patchState
- Feature: Add
patchValue
to make updating state easier
- Fix: Action
state
arguments cached when destructured, switch togetState()
- Fix: Class selectors not working with sub stores
- Fix: missing dispatch on state context interface
- Breaking:
@Store()
decorator is now@State()
- Breaking:
Ngxs
service is nowStore
- Breaking: Stores should be now renamed to State. Before:
ZooStore
should beZooState
- Breaking:
@Mutation
is gone in favor of just@Action
- Breaking: Action's first argument is state context object,
{ state, setState }
- Breaking: You use
setState
to set the state now rather than returning it in actions - Breaking: Events are now just called Actions
- Breaking:
ofEvent
is now calledofAction
- Breaking: Plugins
next
fn now returns an observable - Breaking: Local Storage plugins removed Strategy in favor of passing your own engine
- Feature: Simplified APIs by removing Mutations, decreased boilerplate
- Feature: Added sub state capability
- Feature: Add
store.selectOnce()
shortcut function - Feature: Better tpyings
- Feature: Add
dispatch
function in state context for easier dispatching - Fix:
dispatch().subscribe()
now works correctly - Fix: Promises now resolve correctly
- Fix: Promises not emitting results
- Fix: Devtools plugin not returning correct value
- Feature: Add
sessionStorage
strategy to local storage plugin
- Feature: Updated Plugin System
- Feature: Add generics to store
- Feature: Implement global error handling
- Fix: Improve DI for lazy loadedd stores
- Fix: Fix dev tools showing previous state
- Chore: Remove redux dev tools by default
- Fix: Typo in return
- Fix: Catch multiple stores being init'd
- Fix: Clone defaults to prevent mutations
- Fix: Plugin injector errors
- Fix: Store injector errors
- Fix: Empty local storage throwing null error
- Fix: Stores injector errors
- Fix: Stores init'd twice
- Fix: Feature stores throwing errors
- Fix: Misc type improvement
- Fix:
forRoot
plugins not working properly - Fix: LocalStorage plugin name spelling
- Feature: Composition
- Feature: Localstore plugin
- Fix: Better dev tools init
- Fix: Dev tools init
- Fix: Plugins not recieving proper context
- Fix: Allow multiple forFeature
- Feature: Dev Tools Integration
- Chore: Tests!
- Fix: Better builds
- Fix: Export plugin interface
- Feature: Plugins improvements
- Feature: Init event
- Feature: Logger plugin
- Inital release!