You can have component local state in the Elm architecture. If you work through the Elm architecture tutorial (<a href="https:&#x2F;&#x2F;github.com&#x2F;evancz&#x2F;elm-architecture-tutorial&#x2F;" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;evancz&#x2F;elm-architecture-tutorial&#x2F;</a>), section 6 describes how to do it. You can also have both local and global state if you want. Just follow the tutorial and in your &quot;model&quot; type add a record called &quot;global&quot;. Than let each component take and return both the local and the global model. I personally use global actions instead of a global model. In this approach each update function for a component returns a new model and a global action. Each component has a &quot;updateGlobal&quot; function which is than called with all the actions returned by the update functions of all the components. This way, components can talk to each other, but may keep completely different models. Here is the relevant code in my main elm file: <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;brodo&#x2F;6495e486648d235e10a5" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;brodo&#x2F;6495e486648d235e10a5</a><p>This allows you to react differently to actions in each component if you want. You can check out the whole project here: <a href="https:&#x2F;&#x2F;github.com&#x2F;brodo&#x2F;MushroomCup&#x2F;tree&#x2F;master&#x2F;elm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;brodo&#x2F;MushroomCup&#x2F;tree&#x2F;master&#x2F;elm</a>