Skip to content

[@clerk/expo] AuthView email field on Android accepts newline characters instead of dismissing the keyboard #8346

@AdiRishi

Description

@AdiRishi

Preliminary Checks

Reproduction

I've provided a replay instead of a reproduction

Publishable key

pk_live_Y2xlcmsuZGhhd2FsLmNvLmluJA

Description

Steps to reproduce:

  1. Open an Expo app using @clerk/expo and render AuthView on Android.
  2. Focus the email input field.
  3. Press the return/enter key on the keyboard.
  4. Press it a few more times and continue typing.

Expected behavior:

The email input should behave like a standard single-line email field.

  • Pressing return should dismiss the keyboard, submit, or otherwise trigger a normal single-line input action.
  • It should not insert newline characters into the email field.

Actual behavior:

On Android, pressing return inserts a newline into the email input instead of dismissing the keyboard.

  • The field accepts multiple newline characters.
  • You can continue typing after the newline.
  • This makes the email input behave like a multiline field, which seems incorrect for an email input.

On iOS, pressing return closes the keyboard, which seems like the correct behavior.

Screen.Recording.2026-04-17.at.2.51.55.pm.mov

NOTE: Separate issue, but possibly worth noting: tapping outside the input does not dismiss the keyboard on either iOS or Android.

Environment

❯ pnpm dlx envinfo --system --browsers --binaries --npmPackages

  System:
    OS: macOS 26.4.1
    CPU: (8) arm64 Apple M3
    Memory: 251.42 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 24.13.0 - /Users/arishi/.local/state/fnm_multishells/1237_1776390715701/bin/node
    npm: 11.12.1 - /Users/arishi/.local/state/fnm_multishells/1237_1776390715701/bin/npm
    pnpm: 10.33.0 - /Users/arishi/.local/state/fnm_multishells/1237_1776390715701/bin/pnpm
    bun: 1.3.12 - /opt/homebrew/bin/bun
    Watchman: 2026.03.30.00 - /opt/homebrew/bin/watchman
  Browsers:
    Chrome: 147.0.7727.56
    Safari: 26.4
  npmPackages:
    @clerk/expo: ^3.2.0 => 3.2.0
    @expo-google-fonts/inter: ^0.4.2 => 0.4.2
    @expo-google-fonts/jetbrains-mono: ^0.4.1 => 0.4.1
    @expo-google-fonts/plus-jakarta-sans: ^0.4.2 => 0.4.2
    @expo/ui: ~55.0.11 => 55.0.11
    @expo/vector-icons: ^15.1.1 => 15.1.1
    @gorhom/bottom-sheet: ^5.2.9 => 5.2.9
    @inkjs/ui: ^2.0.0 => 2.0.0
    @openai/codex-sdk: ^0.121.0 => 0.121.0
    @react-native-community/datetimepicker: 8.6.0 => 8.6.0
    @react-native-masked-view/masked-view: 0.3.2 => 0.3.2
    @react-navigation/bottom-tabs: ^7.15.9 => 7.15.9
    @react-navigation/elements: ^2.9.14 => 2.9.14
    @react-navigation/native: ^7.2.2 => 7.2.2
    @repo/server: workspace:* => undefined
    @sentry/react-native: ^8.8.0 => 8.8.0
    @tanstack/react-form: ^1.29.0 => 1.29.0
    @tanstack/react-query: ^5.99.0 => 5.99.0
    @trivago/prettier-plugin-sort-imports: ^6.0.2 => 6.0.2
    @trpc/client: ^11.16.0 => 11.16.0
    @trpc/tanstack-react-query: ^11.16.0 => 11.16.0
    @types/big.js: ^6.2.2 => 6.2.2
    @types/node: ^25.6.0 => 25.6.0
    @types/react: ~19.2.14 => 19.2.14
    @types/yargs: ^17.0.35 => 17.0.35
    big.js: ^7.0.1 => 7.0.1
    date-fns: ^4.1.0 => 4.1.0
    eslint: ^9.39.4 => 9.39.4
    eslint-config-expo: ~55.0.0 => 55.0.0
    eslint-config-prettier: ^10.1.8 => 10.1.8
    expo: ~55.0.15 => 55.0.15
    expo-application: ^55.0.14 => 55.0.14
    expo-auth-session: ~55.0.14 => 55.0.14
    expo-blur: ~55.0.14 => 55.0.14
    expo-build-properties: ~55.0.13 => 55.0.13
    expo-constants: ~55.0.14 => 55.0.14
    expo-crypto: ~55.0.14 => 55.0.14
    expo-dev-client: ~55.0.27 => 55.0.27
    expo-device: ~55.0.15 => 55.0.15
    expo-font: ~55.0.6 => 55.0.6
    expo-glass-effect: ~55.0.10 => 55.0.10
    expo-haptics: ~55.0.14 => 55.0.14
    expo-image: ~55.0.8 => 55.0.8
    expo-insights: ~55.0.16 => 55.0.16
    expo-linear-gradient: ~55.0.13 => 55.0.13
    expo-linking: ~55.0.13 => 55.0.13
    expo-network: ~55.0.13 => 55.0.13
    expo-router: ~55.0.12 => 55.0.12
    expo-secure-store: ~55.0.13 => 55.0.13
    expo-splash-screen: ~55.0.18 => 55.0.18
    expo-status-bar: ~55.0.5 => 55.0.5
    expo-symbols: ~55.0.7 => 55.0.7
    expo-system-ui: ~55.0.15 => 55.0.15
    expo-updates: ~55.0.20 => 55.0.20
    expo-web-browser: ~55.0.14 => 55.0.14
    heroui-native: ^1.0.2 => 1.0.2
    ink: ^7.0.0 => 7.0.0
    prettier: ^3.8.3 => 3.8.3
    prettier-plugin-tailwindcss: ^0.7.2 => 0.7.2
    react: 19.2.0 => 19.2.0
    react-devtools-core: ^7.0.1 => 7.0.1
    react-dom: 19.2.0 => 19.2.0
    react-native: 0.83.4 => 0.83.4
    react-native-easing-gradient: ^1.1.1 => 1.1.1
    react-native-gesture-handler: ~2.30.1 => 2.30.1
    react-native-keyboard-controller: ~1.20.7 => 1.20.7
    react-native-reanimated: 4.2.3 => 4.2.3
    react-native-safe-area-context: ~5.6.2 => 5.6.2
    react-native-screens: ~4.24.0 => 4.24.0
    react-native-svg: 15.15.3 => 15.15.3
    react-native-web: ~0.21.2 => 0.21.2
    react-native-worklets: 0.7.2 => 0.7.2
    superjson: ^2.2.6 => 2.2.6
    tailwind-merge: ^3.5.0 => 3.5.0
    tailwind-variants: ^3.2.2 => 3.2.2
    tailwindcss: ^4.2.2 => 4.2.2
    tsx: ^4.21.0 => 4.21.0
    typescript: ~5.9.3 => 5.9.3
    uniwind: ^1.6.2 => 1.6.2
    yargs: ^18.0.0 => 18.0.0
    zod: ^4.3.6 => 4.3.6

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageA ticket that needs to be triaged by a team member

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions