Since it is bundled with Angular, RxJS does not tend to get much attention as a means to have state in a functional React application. However, RxJS is a powerful way to have state with little boilerplate and high resilience. It is light in boilerplate because it can achieve immutable, replayable state just by instantiating Subjects, BehaviorSubjects, and ReplaySubjects, which have a simple API for emitting events. It has high resilience because Observables can throw and handle errors within the stream gracefully without affecting subscribers.
Higher-order observables, the ability to merge and switch observables, and the pipeability of all RxJS operators make for a very elegant, functional way to handle state.