This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.

BaseField is an internal (i.e., not exported in the index.js) primitive component used for building more complex fields like TextField. It provides error handling and focus styles for field components. It does not handle layout of the component aside from wrapping the field in a Flex wrapper.


BaseField is primarily used as a hook rather than a component:

function useExampleField( props ) {
    const { as = 'input', ...baseProps } = useBaseField( props );

    const inputProps = {
        // more cool stuff here

    return { inputProps, ...baseProps };

function ExampleField( props, forwardRef ) {
    const { preFix, affix, disabled, inputProps, ...baseProps } =
        useExampleField( props );

    return (
        <View { ...baseProps } disabled={ disabled }>
            { preFix }
            <View autocomplete="off" { ...inputProps } disabled={ disabled } />
            { affix }


disabled: boolean

Whether the field is disabled.

  • Required: No

hasError: boolean

Renders an error style around the component.

  • Required: No
  • Default: false

isInline: boolean

Renders a component that can be inlined in some text.

  • Required: No
  • Default: false

isSubtle: boolean

Renders a subtle variant of the component.

  • Required: No
  • Default: false