Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

DateField component for Stripe Apps


DateField component for Stripe Apps

Use the DateField component to collect date information from users.

SDK version

To add the DateField component to your app:

The following shows a preview of a DateField component with a label and a description:

Loading example...

<DateField label="Date of birth" description="Enter your birthday" />

DateField props

PropertyType
defaultValueOptional string | undefined Specifies the initial value that a user can change.
descriptionOptional string | undefined Descriptive text that will be rendered adjacent to the control’s label.
disabledOptional boolean | undefined Sets whether or not the element should be disabled. Prevents selection.
errorOptional string | undefined Error text that will be rendered below the control.
hiddenElementsOptional ("label" | "description" | "error")[] | undefined Visually hides the specified elements. The hidden elements will still be present and visible to screen readers.
invalidOptional boolean | undefined Sets whether or not the element is in an invalid state. This is a display-only prop, and will not prevent form submission.
labelOptional React.ReactNode Text that describes the control. Will be both visible and clickable.
onChangeOptional ((event: { target: { value: string; }; }) => void) | undefined An onChange-like event that fires only when the change results in a valid date. Identical behavior to <input type="date" />.
sizeOptional ("small" | "medium" | "large") | undefined The size of the component.
valueOptional string | undefined Controls the input’s text. When you pass this prop, you must also pass an onChange handler that updates the passed value.

Size

A DateField at each size will match a TextField at that same size. However, you can’t make a date input wider in the same way that you can TextField.

Loading example...

<DateField
 label="Date of birth (small)"
 description="Enter your birthday"
 size="small"
/>
<DateField
 label="Date of birth (medium)"
 description="Enter your birthday"
 size="medium"
/>
<DateField
 label="Date of birth (large)"
 description="Enter your birthday"
 size="large"
/>

Error

You can provide an error message to indicate a problem with the date.

Loading example...

<DateField
 label="Date of birth"
 description="Enter your birthday"
 defaultValue="2099-02-31"
 invalid
 error="Invalid birthday"
/>

Disabled

Disable a DateField if the user shouldn’t modify it.

Loading example...

<DateField
 label="Date of birth"
 description="Enter your birthday"
 defaultValue="2011-09-01"
 disabled
/>

Hide elements

You can visually hide elements of the DateField component, such as the label or description, while maintaining accessibility for screen readers.

Loading example...

<DateField
 label="Date of birth"
 description="Enter your birthday"
 defaultValue="2011-09-01"
 hiddenElements={['description', 'label']}
/>

Events

The onChange prop works similarly to a native <input type="date" /> HTML element. It only returns a value when it’s a valid date. This means that the onChange handler won’t be called on every keystroke, and a DateField can’t be a controlled input.

Loading example...

<DateField
 label="Date of birth"
 description="Enter your birthday"
 onChange={(e) => {
 console.log(e.target.value);
 }}
/>

Event props (beginning with on) besides onChange fire independently for each of the three sections of the DateField component: year, month, and day.

Loading example...

<DateField
 label="Date of birth"
 description="Enter your birthday"
 onChange={(e) => {
 console.log('change', e);
 }}
/>

See also

Last verified 2026-09-24

Is this helpful?