Like Clojure or Haskell, Elm is a functional programming language.
The language is not the reason for global state, it's always the programmer. Even in Haskell you have IORefs and similar for global state.
I use Cycle.js for writing web apps in typescript. As a functional framework, I do not have any global state.
That's awesome that you don't have global state!
Functional programming naturally avoids global state, such as member instance variables.
I'll have to check out Cycle.js (I've got 2 years of using TypeScript day in and day out... but we had classes with member variables, so our code relied heavily on global state and moreso smaller scoped global state for instances.)
Pure functions and separation of logic from data can reduce or eliminate global state.
The other parts -- getting rid of mutables and getting rid of state-ful-ness altogether -- are the other challenges of OO that is easy and natural in FP.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.