Ryan's closing message: see client-side JavaScript as a liability rather than an asset. Use as little as possible to achieve what you need. Not a call to immediately bin existing SPAs, but to consider the web platform first for each new component — for 99.99% of people Rails + the web platform has everything they need.