Skip to content

Companion App: Soft keyboard covers input fields — content no longer scrolls up for keyboard avoidance #4550

@mkraftman

Description

@mkraftman

Title

Companion App: Soft keyboard covers input fields — content no longer scrolls up for keyboard avoidance

Template

Bug Report (iOS/iPadOS)

Preliminary check

This issue does NOT appear in Safari. The same dashboards and input fields work correctly when accessed via Safari on the same device. The issue is specific to the Companion app's WKWebView.

Device Information

  • Model Name: iPad mini A17 Pro
  • Software Version: iPadOS 26.4.1
  • App Version: 2026.4.0 (2026.1862)

Home Assistant Core Version

2026.4.3

Describe the bug

When a text input field receives focus and the iOS soft keyboard appears, the Companion app no longer scrolls or adjusts the view to keep the input field visible. The keyboard covers the input area, making it impossible to see what is being typed.

This previously worked — the app would scroll the content up just enough to keep the focused input visible above the keyboard. The behavior stopped working recently (likely related to an iOS/iPadOS update or a Companion app update affecting WKWebView keyboard avoidance).

This affects:

  • Custom Lovelace cards with hidden elements that open the soft keyboard
  • Likely any web content within the app that relies on keyboard avoidance scrolling

To Reproduce

  1. Open any dashboard in the Companion app that has a text input field near the bottom of the view
  2. Tap the input field to bring up the soft keyboard
  3. Observe that the content does not scroll up — the keyboard covers the input area

Expected behavior

The app should scroll or adjust the content so the focused input field remains visible above the soft keyboard, as it did previously.

Additional context

  • Tested across multiple iOS devices — behavior is consistent
  • Works correctly in Safari on the same dashboards and devices
  • The issue appeared without any changes to the dashboard or card code
  • Custom cards use standard elements with .focus() — no unusual input handling

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions