As of 2018/19, And if your main goal is SEO (or, perhaps, more “SMO” - Optimization in social networks - since Googlebot does an excellent job evaluating JavaScript, but most bots on social networks do not) maybe your preferred BSO solution should not be Angular Universal, but something that uses a headless browser.
This falls into the category of “proxies” from Manuel’s answer, but since I haven’t seen them publish two (one and a half) really good solutions here:
It is supported by the Google Chrome team itself and is just a great endpoint for rendering your application and returning it.
Like Rendertron, but there is middleware in it (that is, where and how you decide which requests will be processed and which are not), it is already built-in and also comes with some more advanced but convenient features, such as caching . Therefore, it is really very close to the goal of "zero configuration is needed" and even easier to configure than Rendertron.
Backed by the Google Chrome team (and actually used by Rendertron), Puppeteer provides a host-based, high-level API for Chrome without a head. So if previous projects are difficult for you, you can probably implement a suitable solution using Puppeteer, but obviously it will be more work than just using Rendertron or Rendora.
Compared to Angular Universal, these solutions have a huge advantage: your application project can remain completely independent of the SSR tool you use (it can even use any technology other than Angular). And this, obviously, gives you not only great flexibility for your own code, but also for choosing packages, since you do not need to worry about whether they are compatible with Angular Universal or not. Their downside may be a slight decrease in performance, but if you're just targeting bots, it probably won't matter. And if you use Rendora caching, this may not even be true, and you may have an increase in performance. However, if this were comparable to the performance increase that you can achieve with Angular Universal, I don't know. But keep in mind that when we talk about increasing performance from the SSR, we always only talk about the loading time of the first page. Therefore, as a rule, the importance of this is not too high, since your users will interact much more with your application after its first download. If they don’t do this, and you have mostly anonymous users who just check one page and then leave, you will probably not create a PWA, but a classic web page first ...
TL Dr just look at Rendora and Rendertron, they may be what you are looking for, and will get you there very quickly and easily.