next/script
Examples
Version History
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.
Optional Props
src
A path string specifying the URL of an external script. This can be either an absolute external URL or an internal path.
strategy
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.
onLoad
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') })
}}
/>
</>
)
}
onReady
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,
})
}}
/>
</>
)
}
onError
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)
}}
/>
</>
)
}