Skip to main content

Script
component

Use the Script component to add third-party scripts to your app. It automatically adds a nonce attribute from your content security policy. If you load a script that directly modifies the DOM, you are likely to have hydration errors. Use the waitForHydration prop to load the script after the page hydrates.

boolean

Wait to load the script until after the page hydrates. This prevents hydration errors for scripts that modify the DOM. Note: For security, nonce is not supported when using waitForHydration. Instead you need to add the domain of the script directly to your Content Securitiy Policy directives.

string | undefined
string | undefined
Anchor to aria-activedescendant
aria-activedescendant
string | undefined

Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.

Booleanish | undefined

Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.

'none' | 'inline' | 'list' | 'both' | undefined

Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.

string | undefined

Defines a string value that labels the current element, which is intended to be converted into Braille.

Anchor to aria-brailleroledescription
aria-brailleroledescription
string | undefined

Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille.

Booleanish | undefined
boolean | 'false' | 'mixed' | 'true' | undefined

Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.

number | undefined

Defines the total number of columns in a table, grid, or treegrid.

number | undefined

Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.

string | undefined

Defines a human readable text alternative of aria-colindex.

number | undefined

Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.

string | undefined

Identifies the element (or elements) whose contents or presence are controlled by the current element.

boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | undefined

Indicates the element that represents the current item within a container or set of related elements.

string | undefined

Identifies the element (or elements) that describes the object.

string | undefined

Defines a string value that describes or annotates the current element.

string | undefined

Identifies the element that provides a detailed, extended description for the object.

Booleanish | undefined

Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.

string | undefined

Identifies the element that provides an error message for the object.

Booleanish | undefined

Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.

string | undefined

Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.

boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined

Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.

Booleanish | undefined

Indicates whether the element is exposed to an accessibility API.

boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined

Indicates the entered value does not conform to the format expected by the application.

string | undefined

Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.

string | undefined

Defines a string value that labels the current element.

string | undefined

Identifies the element (or elements) that labels the current element.

number | undefined

Defines the hierarchical level of an element within a structure.

'off' | 'assertive' | 'polite' | undefined

Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.

Booleanish | undefined

Indicates whether an element is modal when displayed.

Booleanish | undefined

Indicates whether a text box accepts multiple lines of input or only a single line.

Anchor to aria-multiselectable
aria-multiselectable
Booleanish | undefined

Indicates that the user may select more than one item from the current selectable descendants.

'horizontal' | 'vertical' | undefined

Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.

string | undefined

Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship.

string | undefined

Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.

number | undefined

Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.

boolean | 'false' | 'mixed' | 'true' | undefined

Indicates the current "pressed" state of toggle buttons.

Booleanish | undefined

Indicates that the element is not editable, but is otherwise operable.

'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals' | undefined

Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.

Booleanish | undefined

Indicates that user input is required on the element before a form may be submitted.

Anchor to aria-roledescription
aria-roledescription
string | undefined

Defines a human-readable, author-localized description for the role of an element.

number | undefined

Defines the total number of rows in a table, grid, or treegrid.

number | undefined

Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.

string | undefined

Defines a human readable text alternative of aria-rowindex.

number | undefined

Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.

Booleanish | undefined

Indicates the current "selected" state of various widgets.

number | undefined

Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.

'none' | 'ascending' | 'descending' | 'other' | undefined

Indicates if items in a table or grid are sorted in ascending or descending order.

number | undefined

Defines the maximum allowed value for a range widget.

number | undefined

Defines the minimum allowed value for a range widget.

number | undefined

Defines the current value for a range widget.

string | undefined

Defines the human readable text alternative of aria-valuenow for a range widget.

boolean | undefined
string | undefined
string | undefined
boolean | undefined
string | undefined
ReactNode | undefined
string | undefined
string | undefined
string | undefined
Booleanish | "inherit" | undefined
string | undefined
CrossOrigin
Anchor to dangerouslySetInnerHTML
dangerouslySetInnerHTML
{ // Should be InnerHTML['innerHTML']. // But unfortunately we're mixing renderer-specific type declarations. __html: string | TrustedHTML; } | undefined
string | undefined
boolean | undefined
string | number | ReadonlyArray<string> | undefined
boolean | undefined
string | undefined
Booleanish | undefined
boolean | undefined
string | undefined
'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search' | undefined

Hints at the type of data that might be entered by the user while editing the element or its contents

string | undefined
string | undefined

Specify that a standard HTML element should behave like a defined custom built-in element

string | undefined
string | undefined
string | undefined
boolean | undefined
string | undefined
string | undefined
boolean | undefined
string | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
AnimationEventHandler<T> | undefined
Anchor to onAnimationEndCapture
onAnimationEndCapture
AnimationEventHandler<T> | undefined
Anchor to onAnimationIteration
onAnimationIteration
AnimationEventHandler<T> | undefined
Anchor to onAnimationIterationCapture
onAnimationIterationCapture
AnimationEventHandler<T> | undefined
AnimationEventHandler<T> | undefined
Anchor to onAnimationStartCapture
onAnimationStartCapture
AnimationEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
FormEventHandler<T> | undefined
Anchor to onBeforeInputCapture
onBeforeInputCapture
FormEventHandler<T> | undefined
FocusEventHandler<T> | undefined
FocusEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
Anchor to onCanPlayThroughCapture
onCanPlayThroughCapture
ReactEventHandler<T> | undefined
FormEventHandler<T> | undefined
FormEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
CompositionEventHandler<T> | undefined
Anchor to onCompositionEndCapture
onCompositionEndCapture
CompositionEventHandler<T> | undefined
CompositionEventHandler<T> | undefined
Anchor to onCompositionStartCapture
onCompositionStartCapture
CompositionEventHandler<T> | undefined
CompositionEventHandler<T> | undefined
Anchor to onCompositionUpdateCapture
onCompositionUpdateCapture
CompositionEventHandler<T> | undefined
MouseEventHandler<T> | undefined
Anchor to onContextMenuCapture
onContextMenuCapture
MouseEventHandler<T> | undefined
ClipboardEventHandler<T> | undefined
ClipboardEventHandler<T> | undefined
ClipboardEventHandler<T> | undefined
ClipboardEventHandler<T> | undefined
MouseEventHandler<T> | undefined
Anchor to onDoubleClickCapture
onDoubleClickCapture
MouseEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
DragEventHandler<T> | undefined
ReactEventHandler<T> | undefined
Anchor to onDurationChangeCapture
onDurationChangeCapture
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
FocusEventHandler<T> | undefined
FocusEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onGotPointerCaptureCapture
onGotPointerCaptureCapture
PointerEventHandler<T> | undefined
FormEventHandler<T> | undefined
FormEventHandler<T> | undefined
FormEventHandler<T> | undefined
FormEventHandler<T> | undefined
KeyboardEventHandler<T> | undefined
KeyboardEventHandler<T> | undefined
KeyboardEventHandler<T> | undefined
KeyboardEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
Anchor to onLoadedMetadataCapture
onLoadedMetadataCapture
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
Anchor to onLostPointerCapture
onLostPointerCapture
PointerEventHandler<T> | undefined
Anchor to onLostPointerCaptureCapture
onLostPointerCaptureCapture
PointerEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
MouseEventHandler<T> | undefined
ClipboardEventHandler<T> | undefined
ClipboardEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onPointerCancelCapture
onPointerCancelCapture
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onPointerDownCapture
onPointerDownCapture
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onPointerEnterCapture
onPointerEnterCapture
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onPointerLeaveCapture
onPointerLeaveCapture
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onPointerMoveCapture
onPointerMoveCapture
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
Anchor to onPointerOverCapture
onPointerOverCapture
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
PointerEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
FormEventHandler<T> | undefined
FormEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
UIEventHandler<T> | undefined
UIEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
FormEventHandler<T> | undefined
FormEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
TouchEventHandler<T> | undefined
Anchor to onTouchCancelCapture
onTouchCancelCapture
TouchEventHandler<T> | undefined
TouchEventHandler<T> | undefined
TouchEventHandler<T> | undefined
TouchEventHandler<T> | undefined
TouchEventHandler<T> | undefined
TouchEventHandler<T> | undefined
TouchEventHandler<T> | undefined
TransitionEventHandler<T> | undefined
Anchor to onTransitionEndCapture
onTransitionEndCapture
TransitionEventHandler<T> | undefined
ReactEventHandler<T> | undefined
Anchor to onVolumeChangeCapture
onVolumeChangeCapture
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
ReactEventHandler<T> | undefined
WheelEventHandler<T> | undefined
WheelEventHandler<T> | undefined
string | undefined
string | undefined
string | undefined
string | undefined
HTMLAttributeReferrerPolicy | undefined
string | undefined
string | undefined
number | undefined
string | undefined
AriaRole | undefined
string | undefined
string | undefined
Booleanish | undefined
string | undefined
CSSProperties | undefined
Anchor to suppressContentEditableWarning
suppressContentEditableWarning
boolean | undefined
Anchor to suppressHydrationWarning
suppressHydrationWarning
boolean | undefined
number | undefined
string | undefined
'yes' | 'no' | undefined
string | undefined
string | undefined
'on' | 'off' | undefined
string | undefined
'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined

Indicates what functions can be performed when a dragged object is released on the drop target.

Deprecated

in ARIA 1.1

Booleanish | undefined

Indicates an element's "grabbed" state in a drag-and-drop operation.

Deprecated

in ARIA 1.1

string | undefined
Deprecated

Deprecated

KeyboardEventHandler<T> | undefined
Deprecated

Deprecated

KeyboardEventHandler<T> | undefined
Deprecated

Deprecated

Was this section helpful?

Example code

import {
Links,
LiveReload,
Meta,
Outlet,
Scripts,
ScrollRestoration,
} from 'react-router';
import {useNonce, Script} from '@shopify/hydrogen';
export default function App() {
const nonce = useNonce();

return (
<html lang="en">
<head>
<meta charSet="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<Meta />
<Links />
</head>
<body>
<Outlet />
{/* Note you don't need to pass a nonce to the script component
because it's automatically added */}
<Script src="https://some-custom-script.js" />
{/* For security, nonce is not supported with `waitForHydration`.
Instead you need to add the domain of the script directly to your
Content Securitiy Policy directives. */}
<Script
waitForHydration
src="https://domain.com/script-that-modifies-dom.js"
/>
<ScrollRestoration nonce={nonce} />
<Scripts nonce={nonce} />
<LiveReload nonce={nonce} />
</body>
</html>
);
}