Skip to main content

TextField

The TextField component captures single-line text input. Use it to collect short, free-form information in forms and data entry workflows.

The component supports various input configurations including placeholders, character limits, and validation. It includes built-in support for labels, helper text, and error states to guide merchants through data entry, ensuring accurate and efficient information capture across different retail scenarios.

Use cases

  • Product identifiers: Collect product names, SKUs, or short identifiers.
  • Customer names: Capture customer names, reference numbers, or brief labels.
  • Filtering: Enable text-based filtering or tagging for short text values.
  • Form submissions: Support form submissions requiring single-line text values.

Collect short, free-form text information with validation support. This example shows how to implement a TextField with labels, placeholders, character limits, and error states for capturing names, references, or other single-line data in forms and data entry workflows.

Capture text input

Capture text input

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

const SmartGridModal = () => {
const [name, setName] = useState('');
return (
<Navigator>
<Screen name="TextField" title="Text Field Example">
<ScrollView>
<TextField
label="Name"
placeholder="Input your name here"
required={true}
value={name}
onChange={setName}
/>
<Text>{name ? `Hello ${name}!` : ''}</Text>
</ScrollView>
</Screen>
</Navigator>
);
};

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

Configure the following properties on the TextField 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.

  • Set initial focus appropriately: When merchants open a new form, set focus on the first text field automatically to streamline data entry and reduce the number of interactions required to begin input.
  • Write clear and concise labels: Write labels in sentence case and keep them brief. Use consistent terminology for similar fields throughout the app to create a predictable and familiar experience for merchants.
  • Indicate required fields clearly: When a text field is required for form submission, use the required property and display a "Required" indicator. Implement validation logic in your onChange callback to check empty values and display errors.
  • Provide helpful guidance with helpText and placeholder: Use helpText for explain content expectations, formatting requirements, or character limits. Use placeholder text to provide examples of the expected content format or structure.
  • Support autocomplete when appropriate: Provide autocomplete options for fields where merchants commonly enter predictable values, such as addresses, product names, or customer information.
  • Implement character limits appropriately: Set maxLength to prevent excessively long input that might cause display or processing issues. Provide feedback about character limits in the helpText, especially when users are approaching the limit.
  • Use action buttons for enhanced functionality: Use the action property to provide helpful actions like "Clear Field," "Generate Code," or "Use Default." This enhances usability by providing quick access to common text operations.

  • TextField provides single-line text input only—multi-line text entry requires the TextArea component.
  • The required property adds semantic meaning only—it doesn't trigger automatic error display or validation, so you must implement validation logic manually.
  • Action buttons are limited to simple press callbacks—complex action workflows require custom implementation or additional components.
Was this page helpful?