This document discusses using immutable data and static typing in an Ember.js application. It provides examples of an onboarding app to demonstrate the approach. Key motivations for immutability include handling state reloads, sharing data between users, and modeling the UI completely with components reading from the state model. Typescript is used for testing, applications, and interfaces to improve documentation. While there are some challenges, benefits for the example use cases were worth addressing special cases like component lifecycles. Overall, immutability allows modeling changes sets and deriving presentation from persistent data.