> For the complete documentation index, see [llms.txt](https://docs.conanjs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.conanjs.io/data/conan-state.md).

# 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](/data/general-concepts.md)

{% 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="/pages/-M9Z4QHecGnta4vB5w-m" %}
[Actions & Reducers](/data/conan-state/actions.md)
{% 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="/pages/-M9U3wO6w258a6tHMOq5" %}
[Creating State](/data/conan-state/creating-state.md)
{% 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="/pages/-M9U5eYpt6BGOrR93K9g" %}
[Observing State](/data/conan-state/subscribing-state.md)
{% endcontent-ref %}

![Observing state](/files/-MCrCIHSq4xxD2PXrECs)

**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="/pages/-M9U3yX1qPxyZG1LWazo" %}
[Composing State](/data/conan-state/pipes-composing-state.md)
{% 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="/pages/-M9Z8O0kp8Z\_os\_Ni-RR" %}
[Scaling State](/data/conan-state/scoping-state.md)
{% endcontent-ref %}

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

{% content-ref url="/pages/-MBYUA5WpIuTFb\_RnQx6" %}
[Orchestrating State](/data/conan-state/orchestrating-state.md)
{% endcontent-ref %}

![](/files/-MBirIq5m9CJNqTpxVjZ)

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

{% content-ref url="/pages/-MBmrqVj\_VvbyYinkfgC" %}
[Life cycle](/data/conan-state/life-cycle.md)
{% endcontent-ref %}

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

{% content-ref url="/pages/-M9U47JMLJUwzYtw5l00" %}
[Async handling](/data/conan-state/life-cycle/async-handling.md)
{% endcontent-ref %}

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

{% content-ref url="/pages/-M9U4Da0nvR6lTc3QLb5" %}
[Testing state](/data/conan-state/testing.md)
{% endcontent-ref %}
