I’d like to have a nice fallback, but even if js is required for some interactions, rendering everything server side still wins imo for initial page view.
I think that you’ve successfully answered all of your own questions.
Just to elaborate slightly on brandonbloom’s answer: you would indeed want to do the initial rendering pass on the server, if that’s where you want to go. You can take a look at http://augustl.com/blog/2014/jdk8_react_rendering_on_server/ for an example of how to do that on the JVM (i.e., you don’t have to bust out Node). Yes, this is another component, but it’s the way React intends for you to handle this problem.
Maybe I could avoid this through other means, but testing multiple browsers under a variety of network conditions seems like a lot more work than feeding the browser html to start.
Also, call me old fashioned, but I still download a fair number of web pages with Python, or even the OpenBSD ftp client. I obviously don’t expect such pages to be fully interactive, but I do expect more than an empty shell with a script tag.
I would love to see the core idea from this post rewritten using many other tools and environments (Polymer, Android apps, Swift MVC, etc).