# Introduction

`ng-state` is a controlled nested state container designed to help write performant, consistent applications on top of Angular 2. It is powered by `RxJs` and `Immer (or ImmutableJs)` and was inspired by [@ngrx](https://github.com/ngrx/store).

### Version 10.0.0 introduces createEffect function!!! 🔥

[Read more](/ng-state/core-concepts/createeeffct.md)

### Version 9.5.2 introduces WithStore decorator!!! 🔥

[Read more](/ng-state/core-concepts/injectstore-decorator-1.md)

### Version 9.1.0 introduces injectable actions!!! 🔥

[Read more](/ng-state/core-concepts/actions/injectable-actions.md)

Core tenets:

* State is a single immutable data structure
* Each component gets its own peace of nested state
* State accessed with `actions` variable under component or the `Store`, an observable of state and an observer of global state

These core principles enable building components that can use the `OnPush` change detection strategy giving you [intelligent, performant change detection](http://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html#smarter-change-detection) throughout your application.

`ng-state` share same core as [`react-state-rxjs`](https://github.com/react-state/store) so it is very beneficial for those who are not bind to one technology.&#x20;

How it is different from others please read on [Main differences](/ng-state/main-differences.md) page.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vytautas.gitbook.io/ng-state/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
