Fredrik Höglund, the author of two React Server-Side Rendering libraries and a Frontend Lead at PriceRunner joins A-P Koponen on the Frontend Greatness podcast to talk about "rendering on the server".
In this episode:
What should every frontend developer know about rendering on the server?
What approaches there are for rendering React apps on the server?
What are React Server Components?
How are React Server Components different from Next.js SSR?
How can you render your SPA on the server?
Episode Notes
Social- Fredrik's Twitter: https://twitter.com/ephemjs- A-P's Twitter: https://twitter.com/apkoponen
Show Notes
Next.js :https://nextjs.org/
Remix: https://remix.run/features
Gatsby: https://www.gatsbyjs.com/
RedwoodJS: https://redwoodjs.com/
Blitz.js: https://blitzjs.com/
React Server Components: https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html
Razzle: https://razzlejs.org/
PriceRunner: https://www.pricerunner.com/
Prerender.io: https://prerender.io/
Dynamic Rendering: https://developers.google.com/search/docs/guides/dynamic-rendering
Fredrik's Recommendations- Great reading on different types of rendering, not React specific: https://developers.google.com/web/updates/2019/02/rendering-on-the-web
Various resources: https://reactresources.com/topics/server-side-rendering
Learn Next.js: https://nextjs.org/learn/basics/create-nextjs-app
Official ReactDOMServer docs: https://reactjs.org/docs/react-dom-server.html
Avoid XSS vulnerabilities: https://medium.com/node-security/the-most-common-xss-vulnerability-in-react-js-applications-2bdffbcc1fa0
Fredrik's SSR Challenge
Easy
Create a Razzle app and take a look at server.js.
Razzle docs: https://razzlejs.org/
Medium
Add React Query or Redux, fetch data on the server, and hydrate that to the client.
React Query docs: https://react-query.tanstack.com/guides/ssr
Redux docs: https://redux.js.org/recipes/server-rendering
Hard
Using react-router, add multiple pages, and a page-level abstraction for data fetching.
React Router docs: https://reactrouter.com/web/guides/server-rendering
How after.js does it: https://github.com/jaredpalmer/after.js/blob/master/packages/after.js/src/loadInitialProps.tsx