Frontmatter
| id | 8621 |
| title | Investigation: FocusManager Stability during Atomic Moves |
| state | Open |
| labels | discussionaitestingcore |
| assignees | [] |
| createdAt | Jan 13, 2026, 11:08 PM |
| updatedAt | Jan 13, 2026, 11:08 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8621 |
| author | tobiu |
| commentsCount | 0 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
Investigation: FocusManager Stability during Atomic Moves
Opendiscussionaitestingcore
The current "atomic move" implementation for
Neo.container.Baseinvolves aremove(silent) ->insertsequence. On the main thread, this translates to aninsertBeforeoperation. In Chromium/WebKit, this causes the moved element to lose focus temporarily.We currently patch this in
DeltaUpdates.moveNodeby immediately callingfocus()on the element if it was active. This results in a rapidfocusout->focusinevent sequence sent to the App Worker.Goal: Investigate if this event flicker causes unwanted side effects, particularly for:
Neo.form.field.Basevalidation logic (often triggered on blur).Neo.manager.Focusstate tracking.Potential Solution: If side effects are found, implement a "debounce" or "flicker detection" logic in
FocusManagerorDeltaUpdates. 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."