NGXS

State Management for Angular

README


  NGXS is a state management pattern + library for Angular


  
  

  



Quick Links


- ✨ Learn about it on the docs site
- 🌱 NGXS works with Ivy! Check out the Ivy migration guide
- 🚀 See it in action on Stackblitz
- 😎 Checkout the sample application
- 🔧 Scaffolding application using NGXS Schematics
- 📖 Read the blog posts
- ⚡️ Development of NGXS Labs
- 📝 Learn about updates from the changelog
- ❤️ Give back by becoming a Contributor or a Sponsor
- 👂 We would love to hear about your experience with NGXS, you can leave your feedback here


The Goal of NGXS


NGXS tries to make things as simple and accessible as possible. There can be a lot of boilerplate code in state management, thus a main goal of NGXS is to reduce boilerplate allowing you to do more things with less. It is also not necessary to be super familiar with RxJs.

The Goal of NGXS Labs


The idea with this github organisation is to provide a place for the community to create libraries that augment the main framework with functionality that does not need to be integrated directly into the framework and therefore can evolve through their initial iterations of experimentation without affecting the main @ngxs/store library.

Getting Started - Local Development


Installation


To get started locally, follow these instructions:

1. If you haven't done it already, make a fork of this repo.
2. Clone to your local computer using git.
3. Make sure that you have installed NodeJS.
4. Make sure that you have yarn installed.
5. Run yarn install.
6. Run yarn build:packages.

Creating new packages or add feature/fix


if you make changes @ngxs/store

1. Run development mode yarn build:packages --package store --watch
2. Run serve integration examples yarn start
3. ...development...
4. Run tests yarn test:ci
5. Create pull request

if you add a new package @ngxs/my-super-plugin

1. Create a new project folder packages/my-super-plugin
2. Create template library with ngPackagr
3. Add your project to package.json
4. Run development mode yarn build:packages --package my-super-plugin --watch
5. ...development...
6. Run build yarn build:packages --package my-super-plugin
7. Run tests yarn test:ci
8. Create pull request

NGXS Labs


If you have ideas for creating unique libraries, you can join us. Email us at ngxs.lead@gmail.com. Or you can email us on Twitter or Slack.

Packages


Tools


ProjectPackageVersionLinks
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
**NGXS[`@ngxs/cli`](https://npmjs.com/package/@ngxs/cli)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fcli/latest.svg)](https://npmjs.com/package/@ngxs/cli)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/cli.md)
**NGXS[`@ngxs/schematics`](https://npmjs.com/package/@ngxs/schematics)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fschematics/latest.svg)](https://npmjs.com/package/@ngxs/schematics)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/schematics/blob/master/README.md)

Packages


ProjectPackageVersionLinks
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
**NGXS[`@ngxs/store`](https://npmjs.com/package/@ngxs/store)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fstore/latest.svg)](https://npmjs.com/package/@ngxs/store)[![README](https://img.shields.io/badge/README--green.svg)](http://ngxs.io)
**NGXS[`@ngxs/logger-plugin`](https://npmjs.com/package/@ngxs/logger-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Flogger-plugin/latest.svg)](https://npmjs.com/package/@ngxs/logger-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/logger.md)
**NGXS[`@ngxs/devtools-plugin`](https://npmjs.com/package/@ngxs/devtools-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fdevtools-plugin/latest.svg)](https://npmjs.com/package/@ngxs/devtools-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/devtools.md)
**NGXS[`@ngxs/websocket-plugin`](https://npmjs.com/package/@ngxs/websocket-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fwebsocket-plugin/latest.svg)](https://npmjs.com/package/@ngxs/websocket-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/websocket.md)
**NGXS[`@ngxs/form-plugin`](https://npmjs.com/package/@ngxs/form-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fform-plugin/latest.svg)](https://npmjs.com/package/@ngxs/form-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/form.md)
**NGXS[`@ngxs/router-plugin`](https://npmjs.com/package/@ngxs/router-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Frouter-plugin/latest.svg)](https://npmjs.com/package/@ngxs/router-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/router.md)
**NGXS[`@ngxs/storage-plugin`](https://npmjs.com/package/@ngxs/storage-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fstorage-plugin/latest.svg)](https://npmjs.com/package/@ngxs/storage-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/storage.md)
**NGXS[`@ngxs/hmr-plugin`](https://npmjs.com/package/@ngxs/hmr-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs%2Fhmr-plugin/latest.svg)](https://npmjs.com/package/@ngxs/hmr-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs/store/blob/master/docs/plugins/hmr.md)

NGXS Labs


ProjectPackageVersionLinks
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
**NGXS-labs[`@ngxs-labs/data`](https://npmjs.com/package/@ngxs-labs/data)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fdata/latest.svg)](https://npmjs.com/package/@ngxs-labs/data)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/data)
**NGXS-labs[`@ngxs-labs/emitter`](https://npmjs.com/package/@ngxs-labs/emitter)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Femitter/latest.svg)](https://npmjs.com/package/@ngxs-labs/emitter)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/emitter)
**NGXS-labs[`@ngxs-labs/immer-adapter`](https://npmjs.com/package/@ngxs-labs/immer-adapter)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fimmer-adapter/latest.svg)](https://npmjs.com/package/@ngxs-labs/immer-adapter)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/immer-adapter)
**NGXS-labs[`@ngxs-labs/dispatch-decorator`](https://npmjs.com/package/@ngxs-labs/dispatch-decorator)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fdispatch-decorator/latest.svg)](https://npmjs.com/package/@ngxs-labs/dispatch-decorator)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/dispatch-decorator)
**NGXS-labs[`@ngxs-labs/select-snapshot`](https://npmjs.com/package/@ngxs-labs/select-snapshot)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fselect-snapshot/latest.svg)](https://npmjs.com/package/@ngxs-labs/select-snapshot)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/select-snapshot)
**NGXS-labs[`@ngxs-labs/async-storage-plugin`](https://npmjs.com/package/@ngxs-labs/async-storage-plugin)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fasync-storage-plugin/latest.svg)](https://npmjs.com/package/@ngxs-labs/async-storage-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/async-storage-plugin)
**NGXS-labs[`@ngxs-labs/entity-state`](https://npmjs.com/package/@ngxs-labs/entity-state)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fentity-state/latest.svg)](https://npmjs.com/package/@ngxs-labs/entity-state)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/entity-state)
**NGXS-labs[`@ngxs-labs/testing`](https://npmjs.com/package/@ngxs-labs/testing)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Ftesting/latest.svg)](https://npmjs.com/package/@ngxs-labs/testing)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/testing)
**NGXS-labs[`@ngxs-labs/actions-executing`](https://npmjs.com/package/@ngxs-labs/actions-executing)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Ftesting/latest.svg)](https://npmjs.com/package/@ngxs-labs/actions-executing)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/actions-executing)
**NGXS-labs[`@ngxs-labs/attach-action`](https://npmjs.com/package/@ngxs-labs/attach-action)[![latest](https://img.shields.io/npm/v/%40ngxs-labs%2Fattach-action/latest.svg)](https://npmjs.com/package/@ngxs-labs/attach-action)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ngxs-labs/attach-action)

Community


ProjectPackageVersionLinks
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
**Reset[`ngxs-reset-plugin`](https://npmjs.com/package/ngxs-reset-plugin)[![latest](https://img.shields.io/npm/v/ngxs-reset-plugin/latest.svg)](https://npmjs.com/package/ngxs-reset-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/ng-turkey/ngxs-reset-plugin/blob/master/README.md)
**NGXS-Loading-plugin**[`ngxs-loading-plugin`](https://www.npmjs.com/package/ngxs-loading-plugin)[![latest](https://img.shields.io/npm/v/ngxs-loading-plugin/latest.svg)](https://www.npmjs.com/package/ngxs-loading-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/sa-bangash/ngxs-plugin/blob/master/README.md)
**NGXS-History-plugin**[`ngxs-history-plugin`](https://www.npmjs.com/package/ngxs-history-plugin)[![latest](https://img.shields.io/npm/v/ngxs-history-plugin/latest.svg)](https://www.npmjs.com/package/ngxs-history-plugin)[![README](https://img.shields.io/badge/README--green.svg)](https://github.com/profanis/ngxs-history-plugin/blob/main/projects/ngxs-history-plugin/README.md)

Contributors


Thanks to all our contributors!