yarn react-native-paper 6.0.0-alpha.0
Release 6.0.0-alpha.0

7 hours ago

6.0.0-alpha.0 (2026-06-15)

Bug Fixes

  • animated-fab: correct Android shadow/content stacking (#4903) (db27e5a)
  • docs: resolve docs build and icon issues (490a502)
  • dynamic theme broken deep merge when using PlatformColor (8720eac)
  • MD3: update color schema and tokens (#4900) (709325e)
  • resolve RN 0.85 web warnings and upgrade Expo SDK 56 (#4958) (3381515)
  • ripple not showing (#4897) (f39da66)

Features

BREAKING CHANGES

  • fab: The FAB API has been redesigned for MD3 with no
    deprecation aliases.
  • AnimatedFAB and AnimatedFABProps are removed. Use FAB.Extended
    for the icon + label FAB.
  • FAB.Group and FABGroupProps are removed. Use FAB.Menu instead.
  • The legacy FAB props (mode, small, color, label, uppercase,
    customSize, animated) are removed. Use variant, size,
    containerColor, and contentColor instead; for a labeled FAB switch
    to FAB.Extended.
  • New exported types: FABExtendedProps, FABMenuProps,
    FABMenuItemProps, FABMenuTriggerProps, FABVariant, FABSize.

#4959

  • Lint, typescript, existing and new tests pass
  • manual visual inspection on all platforms
  • TextInput has been rewritten for Material Design 3. The public API, adornments, variant naming, and styling overrides have changed. See the migration section below for required updates.

Summary

Replaces the Paper 5.x TextInput with a new MD3-aligned implementation. The component name stays TextInput, but most props and composition patterns have changed.

The new TextInput supports filled and outlined variants, floating labels, supportingText, a built-in character counter, prefix / suffix, leading/trailing startAccessory / endAccessory render props, a custom render prop for masked inputs, and improved accessibility. Colors and layout follow the theme; per-prop color overrides for outlines and underlines were removed.

What changed

Before (v5) After (v6)
mode="flat" variant="filled" (default)
mode="outlined" variant="outlined"
left / right element props startAccessory / endAccessory render props
TextInput.Affix prefix / suffix strings, or custom accessories
HelperText below the field supportingText on the field
label as string or ReactNode label as string only
dense, contentStyle, outlineStyle, underlineStyle removed — use style and theme
textColor, underlineColor, activeUnderlineColor, outlineColor, activeOutlineColor removed — use style and theme
disabled blocked interaction disabled blocks interaction; use editable={false} for read-only fields that can still be focused

Still supported

  • TextInput.Icon — use inside startAccessory / endAccessory
  • render — swap the native input (e.g. masked inputs)
  • selectionColor and cursorColor — inherited from React Native TextInput props
  • ref — exposes TextInputHandles (focus, blur, clear, isFocused, setNativeProps, setSelection); clear() also syncs internal state and label animation

What was removed

  • TextInput.Affix
  • HelperText as the recommended companion for text fields (use supportingText instead)
  • mode, left, right
  • dense, contentStyle, outlineStyle, underlineStyle
  • textColor, underlineColor, activeUnderlineColor, outlineColor, activeOutlineColor

Migration

Import stays the same:

import { TextInput, type TextInputProps } from 'react-native-paper';

Variant

// Before (v5)
<TextInput mode="flat" label="Email" />
<TextInput mode="outlined" label="Password" />

// After (v6)
<TextInput variant="filled" label="Email" />
<TextInput variant="outlined" label="Password" />

Icons and adornments

left / right element props become startAccessory / endAccessory render functions. Spread the props TextInput passes in — they include layout style, plus error, disabled, and multiline.

// Before (v5)
<TextInput
  label="Search"
  value={text}
  onChangeText={setText}
  left={<TextInput.Icon icon="magnify" />}
  right={<TextInput.Affix text={`${text.length}/80`} />}
/>

// After (v6)
<TextInput
  label="Search"
  value={text}
  onChangeText={setText}
  startAccessory={(props) => <TextInput.Icon {...props} icon="magnify" />}
  endAccessory={(props) => (
    <TextInput.Icon {...props} icon="close" onPress={() => setText('')} />
  )}
/>

Replace TextInput.Affix with prefix / suffix for inline text, or a custom endAccessory:

// Before (v5) — affix as trailing adornment
<TextInput
  right={<TextInput.Affix text="/100" />}
  maxLength={100}
/>

// After (v6) — prefix/suffix and/or counter
<TextInput
  prefix="$"
  suffix="/100"
  maxLength={100}
  counter
/>

Note: prefix and suffix are shown only when the label is floated (field focused or has a value).

Supporting text and errors

// Before (v5)
<>
  <TextInput label="Email" error={hasError} />
  <HelperText type="error" visible={hasError}>
    Enter a valid email
  </HelperText>
</>

// After (v6)
<TextInput
  label="Email"
  error={hasError}
  supportingText={hasError ? 'Enter a valid email' : 'We will never share your email'}
/>

When error is true and no endAccessory is provided, a default error icon is shown on the trailing side.

Disabled vs read-only

// Disabled — not editable, not focusable, disabled styling
<TextInput disabled label="Email" value={email} />

// Read-only — can focus and select text, but not edit
<TextInput editable={false} label="Email" value={email} />

Styling and colors

Outline, underline, label, and disabled colors now come from the theme. Override input text with the standard style prop; override accent colors via theme or, where applicable, inherited props:

// Before (v5)
<TextInput
  dense
  contentStyle={{ paddingHorizontal: 12 }}
  outlineStyle={{ borderRadius: 12 }}
* Switch props no longer extend native Switch. color, ios_backgroundColor, trackColor, thumbColor etc. are removed. Use the theme prop for color customization.

Don't miss a new react-native-paper release

NewReleases is sending notifications on new releases.