In theory it works, but in practice it awfully degrades the page load time. The way it works is that it will call the init() method of JS app (ready() in jquery, main() in Dart etc). And it is very sub-optimal compared to server side generation. This is because it has to execute the ready()&#x2F;start() method, which may spawn of some async requests to get some JSON, on getting which successfully you recreate your DOM.<p>So too many possible failure points, and for these reasons it will timeout many times, resulting in increased crawl errors, apart from page load time degradation. I learned this the hard way, and had to revert to server side generation of crawlable pages. And now looking at something like react&#x2F;redux to achieve what I originally wanted (which is basically again server side generation, but while maintaining the quality of the served pages).