| Version | Changes |
| --------- | ------------------------- |
| v12.2.4
| onReady
prop added. |
| v11.0.0
| next/script
introduced. |
Note: This is API documentation for the Script Component. For a feature overview and usage information for scripts in Next.js, please see Script Optimization.
A path string specifying the URL of an external script. This can be either an absolute external URL or an internal path.
The loading strategy of the script.
| strategy
| Description |
| ------------------- | ---------------------------------------------------------- |
| beforeInteractive
| Load script before the page becomes interactive |
| afterInteractive
| Load script immediately after the page becomes interactive |
| lazyOnload
| Load script during browser idle time |
| worker
| Load script in a web worker |
Note:
worker
is an experimental strategy that can only be used when enabled innext.config.js
. See Off-loading Scripts To A Web Worker.
A method that returns additional JavaScript that should be executed once after the script has finished loading.
Note:
onLoad
can't be used with thebeforeInteractive
loading strategy. Consider usingonReady
instead.
The following is an example of how to use the onLoad
property:
import { useState } from 'react' import Script from 'next/script' export default function Home() { const [stripe, setStripe] = useState(null) return ( <> <Script id="stripe-js" src="https://js.stripe.com/v3/" onLoad={() => { setStripe({ stripe: window.Stripe('pk_test_12345') }) }} /> </> ) }
A method that returns additional JavaScript that should be executed after the script has finished loading and every time the component is mounted.
The following is an example of how to use the onReady
property:
import { useState } from 'react' import Script from 'next/script' export default function Home() { return ( <> <Script id="google-maps" src="https://maps.googleapis.com/maps/api/js" onReady={() => { new google.maps.Map(ref.current, { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }) }} /> </> ) }
A method that executes if the script fails to load.
Note:
onError
can't be used with thebeforeInteractive
loading strategy.
The following is an example of how to use the onError
property:
import Script from 'next/script' export default function Home() { return ( <> <Script id="will-fail" src="https://example.com/non-existant-script.js" onError={(e) => { console.error('Script failed to load', e) }} /> </> ) }