Imaginemos que la página es esto
function App() {
<h1>Hello World</h1>
}
con client side tu mandas un index.html
vacío como este
<html>
<div id="root">
</div>
</html>
Luego en tu JS tienes algo como esto
ReactDOM.render(<App />, document.getElementById("root"))
Con SSR corres react en el servidor y mandas el resultado al cliente, entonces tu index.html
se ve así
<html>
<div id="root">
<h1>Hello World</h1>
</div>
</html>
Y tu JS se ve así
ReactDOM.hydrate(<App />, document.getElementById("root"))
Esto significa que el cliente hace menos chamba de incio para iniciar react