iOS (Fabric): Recycled TextInput after Password Autofill becomes non-editable (yellow background) and stops updating
まだ誰も着手していません。
- 主要言語
- C++
- スター
- 127k
- フォーク
- 25.3k
- 平均マージ
- 1日 23時間
- マージ済み PR(30日)
- 4
説明
Description
When a TextInput triggers iOS Password Autofill and is then recycled by React Native Fabric, the recycled input becomes unusable.
⚠️ Note about provided repo ⚠️: Since this is related to the password autofill of iOS. You would need to make sure to update ios/SecureInput/SecureInput.entitlements to point to a valid endpoint for the correct team id and app bundle. Otherwise it will not be reproduced
Steps to reproduce
- Screen A: two inputs
- textContentType="username" / autoComplete="username"
- textContentType="newPassword" / autoComplete="new-password" / secureTextEntry
- App configured for Password Autofill (Associated Domains with webcredentials: and valid AASA).
- On device (AutoFill enabled), type username, focus password, accept strong password.
- App authenticates and navigates to Screen B (e.g., onboarding) with two regular TextInputs (no password field).
- Due to Fabric recycling, the native view from the password field on Screen A is reused for one of Screen B’s inputs and that input is no longer editable/usable blocking further user flow
React Native Version
0.80.2
Affected Platforms
Runtime - iOS
Areas
Fabric - The New Renderer
Output of npx @react-native-community/cli info
info Fetching system and libraries information...
System:
OS: macOS 15.5
CPU: (14) arm64 Apple M3 Max
Memory: 2.46 GB / 36.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.14.0
path: ~/.nvm/versions/node/v22.14.0/bin/node
Yarn:
version: 1.22.22
path: ~/.nvm/versions/node/v22.14.0/bin/yarn
npm:
version: 10.9.2
path: ~/.nvm/versions/node/v22.14.0/bin/npm
Watchman:
version: 2025.04.14.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /Users/itsramiel/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 24.5
- iOS 18.5
- macOS 15.5
- tvOS 18.5
- visionOS 2.5
- watchOS 11.5
Android SDK: Not Found
IDEs:
Android Studio: 2024.3 AI-243.24978.46.2431.13363775
Xcode:
version: 16.4/16F6
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.10
path: /usr/bin/javac
Ruby:
version: 3.4.3
path: /Users/itsramiel/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli":
installed: 19.1.1
wanted: 19.1.1
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.80.2
wanted: 0.80.2
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Stacktrace or Logs
No crash or failure to provide stack trace for
MANDATORY Reproducer
https://github.com/itsramiel/SecureInput
Screenshots and Videos
Notice that the First Name input is no longer editable no matter what I type in. This is not just visually. The callback is not called
https://github.com/user-attachments/assets/8c0a82b2-d3dd-4e3d-a8e3-7f6f9d7ac890
Extra Context
I tried to see if it is possible to recover the UITextField from this state in a standalone swift project by changing the textContextType and isSecureTextEntry so that this can be done in prepareForRecycle but unfortunately I was not successful in finding a way to recover from this state. I am not sure if such a TextInput should just be not recycled at all.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
ios/SecureInput/SecureInput.entitlements を有効なエンドポイントで設定した後、iOS デバイス上で必須の SecureInput 再現手順を実行し、Fabric TextInput のリサイクルパスと prepareForRecycle の動作を調査します。パスワードフィールドからリサイクルされたネイティブビューが編集可能なまま維持され、Screen B の通常の入力で再利用されたときにコールバックを呼び出すことを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- ios, react-native
- 領域
- mobile
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100