Skip to content

[PM-30441] Android WebView (Ionic) — Bitwarden autofills username into password field #6321

@swathi551

Description

@swathi551

Steps To Reproduce

  1. Open our Android Ionic app (Angular + Ionic, Capacitor WebView).
  2. Navigate to the Login screen containing two ion-input fields (username + password).
  3. Ensure Bitwarden is set as the device’s Autofill service (Settings → Passwords/passkeys & autofill → Bitwarden) and Chrome/Brave integration enabled (if applicable).
  4. Tap the Username field, select the relevant login from Bitwarden suggestions (or trigger autofill popup).
  5. Tap the Password field (or proceed to autofill credentials).
  6. Observe the filled values and attempt sign‑in.

Expected Result

Bitwarden autofill should place:

username → username input
password → password input

Sign‑in should succeed with the stored credentials.

Actual Result

Android only: Bitwarden autofill places the username value into the password field (the password field receives the username string).

Attempting sign‑in fails with “username/password incorrect”.

Screenshots or Videos

No response

Additional Context

I have raised a ticket using the following URL, but I didn't get any tracking link or any response.
mobile: https://docs.google.com/forms/d/e/1FAIpQLScMopHyN7KGJs8hW562VTzbIGL4KcFnx0wJcsW0GYE1BnPiGA/viewform

Current markup:

<ion-input
type="text"
class="fs-exclude"
formControlName="username"
enterkeyhint="next"
mode="md"
#username
(keyup.enter)="setFocus(password)"
inputmode="text"
data-cy="login-username"
data-test="login-username-input">

<ion-input
type="password"
formControlName="password"
mode="md"
enterkeyhint="Go"
#password
inputmode="password"
data-cy="login-password"
data-test="login-password-input">

We also tried with:
[attr.autocomplete]="'username'|'current-password'", [attr.name]="'username'|'password'", [attr.id]="'username'|'password'"
The mis‑fill persists on Android.

What We Already Tried

Ensured autocomplete="username" and autocomplete="current-password" (via [attr.*] so attributes reach the native input inside ion-input’s Shadow DOM).
Ensured distinct name/id for both fields.
Removed reactive‑form (change) handlers that could overwrite autofill results.
Added hidden native anchors inside the same

:
HTMLShow more lines

Verified Bitwarden Autofill settings (Autofill service ON, Chrome/Brave integration ON).
Tested across multiple Android versions/browsers (Chrome/WebView 139–141+, Brave).
Confirmed iOS works (WKWebView + Password AutoFill correctly maps fields).

Build Version

2025.12.0

What server are you connecting to?

US

Self-host Server Version

No response

Environment Details

Platform: Android (multiple devices; reproducible on Pixel / Samsung)
OS: Android 13/14/15 (observed across versions)
Browser/WebView: Chrome/WebView up to latest available (issue persists), Brave also affected
Bitwarden App: Latest stable (Password Manager) with Autofill service enabled
Keyboard/IME: Gboard / SwiftKey (problem independent of IME)
App Tech: Ionic + Angular, Capacitor WebView
iOS Status: Works as expected on iOS (Password AutoFill correctly targets fields)

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions