TypeScript icon, indicating that this package has built-in type declarations

1.5.4 • Public • Published

Piral Logo

This is a plugin that only has a peer dependency to piral-core. What piral-containers brings to the table is a set of Pilet API extensions that can be used with piral or piral-core.

By default, these API extensions are not integrated in piral, so you'd need to add them to your Piral instance.

Why and When

State management is important. While plugins such as piral-redux bring in an additional kind of state container they also allow using this state container in pilets. piral-containers makes the global app state container accessible by all pilets. Using piral-containers every pilet can create its own states within the global store.

Alternatives: Leave every pilet to decide and bundle their own state management. A lightweight, framework-agnostic alternative would be unistore.


We also have a video for this plugin:



The following functions are brought to the Pilet API.


Creates a new pilet global state container. The state container will essentially couple to the app shell global state container. It is, however, only available for use inside the pilet.


::: summary: For pilet authors

You can use the createState function from the Pilet API to create your own sub states in the global state container of the Piral instance.

Example use:

import { PiletApi } from '<name-of-piral-instance>';
import { MyPage } from './MyPage';

export function setup(piral: PiletApi) {
  const connect = piral.createState({
    state: {
      count: 0,
    actions: {
      increment(dispatch) {
        dispatch(state => ({
          count: state.count + 1,
      decrement(dispatch) {
        dispatch(state => ({
          count: state.count - 1,
    connect(({ state, actions }) => <MyPage count={state.count} {...actions} />),


::: summary: For Piral instance developers

The provided library only brings API extensions for pilets to a Piral instance.

For the setup of the library itself you'll need to import createContainersApi from the piral-containers package.

import { createContainersApi } from 'piral-containers';

The integration looks like:

const instance = createInstance({
  // important part
  plugins: [createContainersApi()],
  // ...

There are no options available.



Piral is released using the MIT license. For more information see the license file.

Package Sidebar


npm i piral-containers



Weekly Downloads






Unpacked Size

38 kB

Total Files


Last publish


  • florianrappl