The title sums it up pretty well.
I would favor an API over sending Razor-generated HTML. This both reduces development effort and allows for multiple frontends.
The API would be executing common REST requests. Responses would be in JSON or any other common object notation (I think we have decided for Google’s “structured data” or the like?).
Site performance may benefit as well - a common prejudice against such an approach is that it would increase download size. This is not necessarily true. Highly repetitive HTML most likely results in a higher download size than the non-repetitive object notation we use.
Furthermore, using client-side JS allows us to take advantage of dynamic loading and the like.
I believe that on most common, and even budget devices, performance wouldn’t drop noticeably if going with this approach.
Scrapers etc. will also benefit: They can directly access the API and needn’t query semantically useless HTML which is mostly visual design.
Is it still possible to change our tech stack?