Self-plug - I've made https://github.com/orestis/reseda for this kind of thing. You can have a global store and subscribe to it like reframe. A multimethod and a dispatch-like functionality is trivial to add on top.
@lilactown funny thing. I assumed use-state is like react useState, so I've named [pilha-vis set-pilha-vis]. From now on I'm exchanging the set on the name for update, because the function helix returns has swap! semantic. Exactly what I needed. What I needed was a (update-pilha-vis conj {:foo :bar}) and the function helix returns already gives me that.
@geraldodev fwiw, react's is similar to swap!, but it doesn't support arguments to the function
@orestis Thanks, will look into that.