The Complete Developer Guide to React 19, Part 3: Upgraded Support
In short
In Part 3 of our guide on React 19, we explore key enhancements like native support for metadata tags, improved stylesheet management, and better async script handling. React 19 also introduces new APIs for resource preloading and full support for custom elements. These updates streamline development and boost performance, making React applications faster and more efficient.
Support for document metadata
Previously, document metadata tags like <rte-code><title><rte-code>, <rte-code><link><rte-code> or <rte-code><meta><rte-code> would need to be inserted manually in an effect the <rte-code><head><rte-code> element, or by third-party libraries like <rte-code>react-helmet<rte-code>. However, React 19 introduces a native support for rendering metadata tags directly into components:
When the BlogPost component is rendered, it will detect the metadata tags and automatically hoist them up to the <head> section of the document. This will allow developers to create React applications with much better SEO.
An important note here is that this feature is for simpler use cases, and to create even more powerful SEO a combined usage with third-party libraries such as react-helmet is recommended.
Support for stylesheets
Historically React did not pay much attention to styles and was more or less overlooking them and leaving it to developers to figure out how to approach them. However, in React 19 the meta team decided they care a bit more now. Developers can now choose a precedence for each stylesheet and not have to rely on the DOM style precedence rules. This change would simplify the handling of stylesheets, especially in the scenarios for server-side and concurrent rendering.
The stylesheet with <rte-code>href=”baz”<rte-code> in <rte-code>ComponentTwo<rte-code> although having the same precedence as the stylesheet with <rte-code>href=”foo”<rte-code> in <rte-code>ComponentOne<rte-code> will be inserted after it as it’s higher on the component tree. Moreover, the <rte-code><Suspense><rte-code> will ensure the stylesheets are loaded first before showing the content, preventing unstyled content flashing.
Another interesting fact is that if a component with a stylesheet is rendered multiple times React will only include the stylesheet once in the document:
Support for Async Scripts
React 19 enhances support for async scripts by enabling their rendering anywhere within the component tree. It ensures that these scripts are deduplicated and loaded only once, regardless of being rendered by multiple components. This improvement simplifies the integration of async scripts into React applications, eliminating the need to manage their relocation or duplication.
Async scripts like <rte-code><script async="" src="..."><rte-code> load in arbitrary document order and the react team has introduced better support for them by allowing developers to render them anywhere in component three without having to manage to relocate and to deduplicate script instances.
The usage is simple:
Support for preloading resources
New APIs to optimize page performance during initial loads and updates by facilitating the loading and preloading of browser resources are introduced in React 19. These APIs enable developers to prefetch DNS requests, establish connections to servers, and preload fonts, stylesheets, and scripts, enhancing resource-loading efficiency and improving the user experience.
Informing the browser about resources it will likely need to load as early as possible during the initial document load and client-side updates can significantly enhance page performance.
An example of usage can be as follows:
The above JavaScript would result in the following DOM/HTML:
As you can see links and scripts are prioritized by their utility to early loading, not call order. Moreover, these APIs can be used to optimize initial page loads by moving the discovery of additional resources like fonts out of stylesheet loading and making client updates faster by prefetching a list of resources used by anticipated navigation for example.
Support for custom elements
In past versions, using Custom Elements in React has been difficult because React treated unrecognized props as attributes rather than properties.
React 19 now offers complete support for custom elements, successfully passing all tests on Custom Elements Everywhere. This update addresses previous issues by correctly handling unrecognized props during both server-side and client-side rendering.
Conclusion
React 19 introduces a host of new features and improvements aimed at simplifying and enhancing the development experience for React developers. These updates cater to various aspects of application development, from handling asynchronous operations and improving form management to providing robust support for server-side rendering and optimizing resource loading.
By addressing pain points and introducing innovative solutions, React 19 aims to make the development process more intuitive, efficient, and scalable. These enhancements collectively contribute to building faster, more responsive, and user-friendly applications, reinforcing React's position as a leading framework for modern web development.
Read the other parts of the guide
Why not get back to the previous parts? Read all about Async Handling in the first part, and new enhancements in the second one: