This document summarizes a talk about using effects, coeffects, and subscriptions to manage state and side effects in single-page applications built with ClojureScript and re-frame. It discusses how modeling event handlers as pure functions that return effects based on coeffects avoids accidental complexity. It also covers how modeling the user interface as finite state machines and using re-frame subscriptions can improve performance and simplify application structure. Finally, it notes how this approach allowed large code reuse between the browser and mobile versions of an application.