Frontmatter
| id | 9416 |
| title | Add Error State & Events for Async Tree Loading |
| state | Closed |
| labels | enhancementdeveloper-experienceaicore |
| assignees | tobiu |
| createdAt | Mar 9, 2026, 3:46 PM |
| updatedAt | Mar 9, 2026, 3:51 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9416 |
| author | tobiu |
| commentsCount | 2 |
| parentIssue | 9404 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 9, 2026, 3:51 PM |
Add Error State & Events for Async Tree Loading
tobiu added parent issue #9404 on Mar 9, 2026, 3:47 PM
tobiu assigned to @tobiu on Mar 9, 2026, 3:48 PM

tobiu
Mar 9, 2026, 3:50 PM
Input from Gemini 3.1 Pro:
✦ Implemented Error State & Events for Async Tree Loading.
TreeModelnow includeshasError(defaultfalse).TreeStore.expand()setshasErrorand fires aloadErrorevent if the fetch fails, allowing graceful app-level recovery/notifications.- Added self-healing logic: re-clicking a failed node clears the error state and retries the fetch.
Changes pushed to
dev.

tobiu
Mar 9, 2026, 3:51 PM
Implemented Error State for Async Tree Loading. Pushed to dev.
tobiu closed this issue on Mar 9, 2026, 3:51 PM
Goal
Enhance the
TreeStoreandTreeModelto formally communicate network failures during asynchronous subtree expansion, providing both visual state hooks and application-level events.Architecture
hasError: Boolean(defaultValue: false) to track nodes that failed to load their children.expand()method):load()fails (catch block):node.isLoading = falseandnode.hasError = true.recordChangeto update the Grid UI (e.g., render a warning icon).me.fire('loadError', { record: node, error: err }). This allowsViewControllersto catch the error and show a Toast notification.expand()is called on a node that already hashasError = true(user retrying):node.hasError = false) before attempting the fetch again.Dependencies
TreeStoreasync implementation (#9413).