# Conan State

Conan State are capsules of state that can be reused. To learn more about how to manage data in ConanJs, have a look at our [General Concepts section](https://docs.conanjs.io/data/general-concepts)

{% hint style="warning" %}
A convention used across the documentation, and that we invite you to use (but is not mandatory) is to suffix your Conan State name with a $. ie todos$
{% endhint %}

**You interact and define your Conan State with reducers and actions**

{% content-ref url="conan-state/actions" %}
[actions](https://docs.conanjs.io/data/conan-state/actions)
{% endcontent-ref %}

**If you understand the concepts behind the actions and reducers, then you are ready to see how to create state**

{% content-ref url="conan-state/creating-state" %}
[creating-state](https://docs.conanjs.io/data/conan-state/creating-state)
{% endcontent-ref %}

**Subscribing to state will show you how to render your state either by connecting to your own components, or via live rendering**

{% content-ref url="conan-state/subscribing-state" %}
[subscribing-state](https://docs.conanjs.io/data/conan-state/subscribing-state)
{% endcontent-ref %}

![Observing state](https://3967196510-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3BBQqsBUGjmzTvukhE%2F-MCrBWOOqeGuiHpIYHxK%2F-MCrCIHSq4xxD2PXrECs%2Fconnect.gif?alt=media\&token=8ca056c9-e826-491f-babe-68e900adaac1)

**With Conan, you can create small Conan State elements which will be easier to test, develop and reuse. Then, you can compose new state based on this atomic states.**

{% content-ref url="conan-state/pipes-composing-state" %}
[pipes-composing-state](https://docs.conanjs.io/data/conan-state/pipes-composing-state)
{% endcontent-ref %}

**Not all state should be global, or in the context, or local.... With ConanJs you can easily decide how to scope your state**

{% content-ref url="conan-state/scoping-state" %}
[scoping-state](https://docs.conanjs.io/data/conan-state/scoping-state)
{% endcontent-ref %}

**It is also possible to create interactions between Conan States, for this, you can leverage the reactions**

{% content-ref url="conan-state/orchestrating-state" %}
[orchestrating-state](https://docs.conanjs.io/data/conan-state/orchestrating-state)
{% endcontent-ref %}

![](https://3967196510-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3BBQqsBUGjmzTvukhE%2F-MBipd2Gg9vxEjAatvdS%2F-MBirIq5m9CJNqTpxVjZ%2Forchestration.gif?alt=media\&token=a98ea9e0-b910-4520-9d9f-6c06601b5fea)

**Error handling is built-in to make your life easier...**

{% content-ref url="conan-state/life-cycle" %}
[life-cycle](https://docs.conanjs.io/data/conan-state/life-cycle)
{% endcontent-ref %}

**... and so it is managing async use cases ...**

{% content-ref url="conan-state/life-cycle/async-handling" %}
[async-handling](https://docs.conanjs.io/data/conan-state/life-cycle/async-handling)
{% endcontent-ref %}

**... and testing is as simple as testing a normal JS object**

{% content-ref url="conan-state/testing" %}
[testing](https://docs.conanjs.io/data/conan-state/testing)
{% endcontent-ref %}
