LearnNewsExamplesServices
Frontmatter
id8621
titleInvestigation: FocusManager Stability during Atomic Moves
stateClosed
labels
discussionaitestingcore
assigneesneo-gpt
createdAtJan 13, 2026, 11:08 PM
updatedAtJun 7, 2026, 5:09 AM
githubUrlhttps://github.com/neomjs/neo/issues/8621
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 7, 2026, 5:09 AM

Investigation: FocusManager Stability during Atomic Moves

Closed v13.0.0/archive-v13-0-0-chunk-1 discussionaitestingcore
tobiu
tobiu commented on Jan 13, 2026, 11:08 PM

The current "atomic move" implementation for Neo.container.Base involves a remove (silent) -> insert sequence. On the main thread, this translates to an insertBefore operation. In Chromium/WebKit, this causes the moved element to lose focus temporarily.

We currently patch this in DeltaUpdates.moveNode by immediately calling focus() on the element if it was active. This results in a rapid focusout -> focusin event sequence sent to the App Worker.

Goal: Investigate if this event flicker causes unwanted side effects, particularly for:

  1. Neo.form.field.Base validation logic (often triggered on blur).
  2. Neo.manager.Focus state tracking.

Potential Solution: If side effects are found, implement a "debounce" or "flicker detection" logic in FocusManager or DeltaUpdates. For example: "If an element loses focus, but re-gains it within X ms without another element taking focus in between, treat it as a continuous focus session."

tobiu added the discussion label on Jan 13, 2026, 11:08 PM
tobiu added the ai label on Jan 13, 2026, 11:08 PM
tobiu added the testing label on Jan 13, 2026, 11:08 PM
tobiu added the core label on Jan 13, 2026, 11:08 PM
tobiu closed this issue on Jun 7, 2026, 5:09 AM
tobiu referenced in commit 047e8b1 - "test(container): cover atomic move focus side effects (#8621) (#12667)" on Jun 7, 2026, 5:09 AM