Dobrze aby pomijać temat SSR i Pre-renderingu, to temat na osobny temat
Ale nie da się rozmawiać o CSR z wyłączeniem SSR… Właśnie na tym polega cały problem, że tworzenie aplikacji, które mają tylko CSR, prowadzi do tworzenia kulawych, niepełnosprytnych aplikacji. Zresztą to widać po Twoim pytaniu: kombinujesz jak koń pod górkę, podczas gdy odpowiedź jest prosta: zaimplementuj SSR. Po prostu.
Prawda jest taka, że SPA muszą przejść jeszcze długą drogę, by dojść do miejsca, w którym były dawne aplikacje webowe w pełni oparte o Progressive Enhancement. Tamte aplikacje były w stanie szybko się ładować i działać nawet bez JS-a, dostarczając podstawowe funkcje i dołączając kolejne, jeśli przeglądarka i połączenie usera dawały radę. Wtedy w chwili, gdy przeglądarka dostała HTML, user mógł działać. Co prawda działało to dość topornie, ale działało. Dzisiaj SPA – zwłaszcza te bez SSR – muszą dociągnąć JS, żeby wgl zacząć cokolwiek renderować. Nawet w przypadku SSR często całość jest zablokowana do czasu przeprowadzanie hydratacji. Niemniej SSR jest zdecydowanie krokiem we właściwą stronę, a w połączeniu z PWA i agresywnym cache'em oraz trybem offline jest w stanie dostarczać bardzo wydajnych aplikacji.
Zresztą przez lata główną zasadą webdevu, przyświecającą też całemu nurtowi Progressive Enhancement, było: nie psuj tego, co działa. Generowanie strony na serwerze i wysyłanie gotowej do klienta działało i pozwalało budować aplikację na statycznym HTML-u, nie zaś – zamiast niego. Niemniej gdzieś po drodze o tej zasadzie zapomnieliśmy i teraz, w dobie SPA, będziemy musieli sobie ją przypomnieć.