We're going to start with exploring the evolution of making a SPA. Then we're going to dive into the problem of how fetching, caching, and reading data really complicates state-management and see what approaches we took with different libraries and frameworks like jQuery, Angular, and React. External state management frameworks like Redux and MobX definitely helped with this problem, especially when the data is fetched from a REST endpoint. But now that we're using GraphQL to take care of the data, is an external state-management library even needed? Can GraphQL coexist with the other state management frameworks? What about server-side rendering? What are the pros and cons of each combination? We'll find out what's the best way to approach this in 2018.