Skip to main content

EmailField

The EmailField component captures email address input from customers with built-in validation. Use it to collect email information in forms, customer profiles, or contact workflows.

The component includes built-in email format validation using standard email patterns to ensure data quality. It provides real-time feedback on invalid entries and supports features like autocomplete and keyboard optimization for email input, helping merchants quickly capture valid customer contact information during checkout or registration workflows.

EmailField components integrate with browser autocomplete features to speed up email entry by suggesting previously used addresses, significantly reducing typing time during customer registration workflows.

Use cases

  • Customer emails: Collect customer email addresses during account creation or profile updates.
  • Merchant notifications: Capture merchant email addresses for notifications or receipts.
  • Receipt delivery: Enable email-based features like sending receipts or order confirmations.
  • Form validation: Support email validation in checkout or customer management interfaces.

Capture customer email addresses with built-in format validation. This example shows how to implement an EmailField that validates email syntax in real-time, provides autocomplete support, and optimizes the keyboard for email entry, ensuring accurate customer contact information.

Capture email input with validation

Capture email input with validation

import React, {useState} from 'react';
import {
EmailField,
Screen,
ScrollView,
Navigator,
Text,
reactExtension,
} from '@shopify/ui-extensions-react/point-of-sale';

const SmartGridModal = () => {
const [email, setEmail] = useState('');
return (
<Navigator>
<Screen name="DateField" title="DateField Example">
<ScrollView>
<EmailField
label="Email"
placeholder="example@email.com"
helpText="Please enter a valid email"
value={email}
onChange={setEmail}
required={true}
action={{
label: 'Clear',
onPress: () => setEmail(''),
}}
/>
<Text>Entered Email: {email}</Text>
</ScrollView>
</Screen>
</Navigator>
);
};

export default reactExtension('pos.home.modal.render', () => (
<SmartGridModal />
));

Configure the following properties on the EmailField component.

string
required

The content to use as the field label that describes the text information being requested.

A button configuration object displayed under the text field to provide extra functionality.

boolean

Controls whether the field can be modified. When true, the field is disabled and users cannot edit its value.

string

An error message that indicates a problem to the user. The field is given specific stylistic treatment to communicate issues that must be resolved immediately.

string

The label text displayed under the field that provides guidance or instructions to assist users.

number

The maximum number of characters allowed in the text field.

() => void

A callback function executed when focus is removed from the field.

(value: string) => void

A callback function executed when the user has finished editing the field, receiving the new text value as a parameter. You should update the value property in response to this callback.

() => void

A callback function executed when the field receives focus.

(value: string) => void

A callback function executed immediately when the user makes any change in the field. Use this for real-time feedback, such as clearing validation errors as soon as the user begins making corrections. Don't use this to update the value property—the onChange callback is the appropriate handler for updating the field's value.

string

A short hint that describes the expected value of the field.

boolean

Whether the field needs a value for form submission or validation purposes.

string

The current text value for the field. If omitted, the field will be empty. You should update the value property in response to the onChange callback.

  • Provide helpful guidance with placeholder and helpText: Use placeholder text for format examples like customer@example.com and the helpText property for additional context like "Required for digital receipts" or "We'll send order updates to this address."
  • Implement proper email validation: Use the error property to display validation messages when users enter invalid email formats. Provide clear, actionable error messages like "Please enter a valid email address" that help users correct their input.
  • Use the email-optimized keyboard: EmailField automatically display the email-optimized keyboard on mobile devices with easy access to @ and domain symbols. This improves input speed and reduces errors on touch devices.
  • Use the required property appropriately: Set required to true for fields that must have a value. While this adds semantic meaning, you must still implement validation logic and use the error property to display validation errors to users.
  • Add action buttons for enhanced functionality: Use the action property to provide helpful actions like "Validate Email," "Use Default Email," or "Clear Field." This enhances usability by providing quick access to common operations.
  • Differentiate between input and change callbacks: Use onInput for immediate feedback like clearing validation errors as soon as users start typing. Reserve onChange for updating the field value when editing is complete. Never use onInput to update the value property.

  • EmailField provides the input interface but doesn't perform automatic email validation—you must implement validation logic and use the error property to display validation results.
  • The required property adds semantic meaning only—it doesn't trigger automatic error display or prevent form submission without additional validation logic.
  • Action buttons are limited to simple press callbacks—complex action workflows require custom implementation or additional components.
Was this page helpful?