July 14th, 2021 × #React#JavaScript#Web Development
React 18 - A Look Ahead
React 18 is introducing automatic batching, suspense, strict mode, useTransition hook, SSR streaming, and more. There are great explainers on the React docs.
In this episode of Syntax, Scott and Wes talk about everything coming in React 18!
Freshbooks - Sponsor
Get a 30 day free trial of Freshbooks at freshbooks.com/syntax and put SYNTAX in the "How did you hear about us?" section.
Sentry - Sponsor
If you want to know what’s happening with your code, track errors and monitor performance with Sentry. Sentry’s Application Monitoring platform helps developers see performance issues, fix errors faster, and optimize their code health. Cut your time on error resolution from hours to minutes. It works with any language and integrates with dozens of other services. Syntax listeners new to Sentry can get two months for free by visiting Sentry.io and using the coupon code TASTYTREAT during sign up.
RevenueCat - Sponsor
RevenueCat makes it easy to build and manage iOS and Android in-app purchases. With a few lines of code, RevenueCat provides IAP infrastructure, customer analytics, data integrations, and gives you time back from dealing with edge cases and updates across the platforms. Created by developers, for developers, thousands of the world’s best apps use RevenueCat to power their in-app purchases and subscriptions. Get started for free at revenuecat.com.
Show Notes
04:32 - Automatic Batching
- Don't worry about re-renders
08:32 - New Render API
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
- No more hydrate method (yay!)
10:44 - Suspense
<Suspense fallback={<Spinner />}>
<ProfilePage resource={resource} />
</Suspense>
- Suspense is basically a promise resolver component - nothing inside will render until promise is resolved.
- SuspenseList lets you coordinate the order in which loading indicators show up.
16:43 - StrictEffects Mode
- https://github.com/reactwg/react-18/discussions/19
- Will allow components to mount, unmount, and mount again
- Will help with fastrefresh and really good dev experience
18:43 - useTransition() Hook
- Not an animation hook. They named it this because of the future ability to add animations to React core.
- Wrap the state update in a "transition" to prevent the ProfilePage from being unmounted while suspending. This lets React know that it should wait for the update to complete.
- We classify state updates in two categories:
- Urgent updates reflect direct interaction, like typing, hover, dragging, etc.
- Transition updates transition the UI from one view to another.
23:11 - SSR Improvements
- React.Lazy will work on the Server
- Finally!
- https://github.com/reactwg/react-18/discussions/37
- Server-side rendering (abbreviated to “SSR” in this post) lets you generate HTML from React components on the server, and send that HTML to your users. SSR lets your users see the page’s content before your JavaScript bundle loads and runs.
- React Server Components
34:45 - ELI5
36:37 - Next.js
- Next.js will probably have support for a lot of these features soon.
Links
- https://reactjs.org/blog/2021/06/08/the-plan-for-react-18.html
- https://dev.to/cassidoo/react-18-alpha-is-out-now-what-2apj
- https://github.com/reactwg/react-18
- https://github.com/reactwg/react-18/discussions
- Svelte
- Syntax 127: Hasty Treat - React Suspense
- Deno
××× SIIIIICK ××× PIIIICKS ×××
Shameless Plugs
- Scott: Building Svelte Components - Sign up for the year and save 25%!
- Wes: Beginner JavaScript - Use the coupon code 'Syntax' for $10 off!
Tweet us your tasty treats!
- Scott's Instagram
- LevelUpTutorials Instagram
- Wes' Instagram
- Wes' Twitter
- Wes' Facebook
- Scott's Twitter
- Make sure to include @SyntaxFM in your tweets