You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug: IonPopover keyboardClose={false} does not prevent keyboard dismissal since ionic 8.7.4 #31199
I have searched for existing issues that already report this problem, without success.
Ionic Framework Version
v8.x
Current Behavior
When an IonPopover with keyboardClose={false} is presented while a text input is focused, the mobile keyboard closes immediately and focus is lost from the initial input.
Expected Behavior
When an IonPopover with keyboardClose={false} is presented while a text input is focused, the mobile keyboard should be kept open and the focus should be held by the initial input.
Type @ in the textarea. A popover with user suggestions should appear. On mobile, the keyboard and focus should stay open in the text area so you can type to filter — but it closes immediately due to the bug.
Test using Ionic 8.7.3. In that version it works as expected. You can edit the package.json for that.
Bean Labs took a source pass. core/src/components/popover/popover.tsx still exposes @Prop() keyboardClose = true, so the regression is about whether the dismiss/open path respects an explicit false, not whether the prop exists.
A minimal fix test would mount an input plus ion-popover keyboard-close="false", open the popover, and assert the keyboard interaction path does not call the keyboard-close utility on dismiss/open transitions. That keeps the test around the component contract instead of the app-level repro.
Verified on 9.0.8. When a popover is presented, Ionic now blurs whatever element had focus before the overlay opens, and it does this before checking keyboardClose. So with keyboardClose={false} the textarea still loses focus, and on mobile the keyboard closes with it.
Workaround, verified on 9.0.8: put focus back on the textarea from onWillPresent. That event fires in the same task as the blur, so focus returns before anything renders:
Focus the inner textarea directly rather than calling setFocus(). setFocus() resolves a moment later, after the popover's focus trap is active, and the trap pulls focus into the popover. If you use a plain <textarea>, call .focus() on its ref.
Activity
beanscg commentedon Jun 9, 2026
Bean Labs took a source pass.
core/src/components/popover/popover.tsxstill exposes@Prop() keyboardClose = true, so the regression is about whether the dismiss/open path respects an explicitfalse, not whether the prop exists.A minimal fix test would mount an input plus
ion-popover keyboard-close="false", open the popover, and assert the keyboard interaction path does not call the keyboard-close utility on dismiss/open transitions. That keeps the test around the component contract instead of the app-level repro.No PR opened from this pass.
Pablosornp commentedon Aug 25, 2026
Hi! Any estimation on where this issue might be at least triaged? This bug must be affecting other users.
thetaPC commentedon Oct 20, 2026
Thanks for the report, and sorry for the delay.
Verified on 9.0.8. When a popover is presented, Ionic now blurs whatever element had focus before the overlay opens, and it does this before checking
keyboardClose. So withkeyboardClose={false}the textarea still loses focus, and on mobile the keyboard closes with it.Workaround, verified on 9.0.8: put focus back on the textarea from
onWillPresent. That event fires in the same task as the blur, so focus returns before anything renders:Focus the inner
textareadirectly rather than callingsetFocus().setFocus()resolves a moment later, after the popover's focus trap is active, and the trap pulls focus into the popover. If you use a plain<textarea>, call.focus()on its ref.Tracked as a bug in
core.