Of course, some might call this out as cloaking, but Google said there is a specific policy change for dynamic rendering for this. You serve the server-side rendering to Googlebot and the client-side or hybrid rendering to the user. Here is John's slide on that:
Tools to help you set it up are from Puppeteer and Rendertron:
Here is a diagram on how to set it up with the tools mentioned above:
I don't know much more outside that Google will share more information about this in the future:
Here is the video embed when John first began talking about dynamic rendering:
Forum discussion at Twitter.
Update: Some folks asked by social sites? It is because the social sharing buttons need rendered pages in order to serve up the images and content to be shared:
To comment, click here.