preconnect lets you eagerly connect to a server that you expect to load resources from.
preconnect("https://example.com");Reference
preconnect(href)
To preconnect to a host, call thepreconnect function fromreact-dom.
import{preconnect}from'react-dom';
functionAppRoot(){
preconnect("https://example.com");
// ...
}Thepreconnect function provides the browser with a hint that it should open a connection to the given server. If the browser chooses to do so, this can speed up the loading of resources from that server.
Parameters
href: a string. The URL of the server you want to connect to.
Returns
preconnect returns nothing.
Caveats
- Multiple calls to
preconnectwith the same server have the same effect as a single call. - In the browser, you can call
preconnectin any situation: while rendering a component, in an Effect, in an event handler, and so on. - In server-side rendering or when rendering Server Components,
preconnectonly has an effect if you call it while rendering a component or in an async context originating from rendering a component. Any other calls will be ignored. - If you know the specific resources you’ll need, you can callother functions instead that will start loading the resources right away.
- There is no benefit to preconnecting to the same server the webpage itself is hosted from because it’s already been connected to by the time the hint would be given.
Usage
Preconnecting when rendering
Callpreconnect when rendering a component if you know that its children will load external resources from that host.
import{preconnect}from'react-dom';
functionAppRoot(){
preconnect("https://example.com");
return...;
}Preconnecting in an event handler
Callpreconnect in an event handler before transitioning to a page or state where external resources will be needed. This gets the process started earlier than if you call it during the rendering of the new page or state.
import{preconnect}from'react-dom';
functionCallToAction(){
constonClick =()=>{
preconnect('http://example.com');
startWizard();
}
return(
<buttononClick={onClick}>Start Wizard</button>
);
}