Frontmatter
| id | 9105 |
| title | Refactor: DevRank Viewport Lazy Loading & Routing |
| state | Closed |
| labels | airefactoringperformance |
| assignees | tobiu |
| createdAt | Feb 11, 2026, 11:23 PM |
| updatedAt | Feb 11, 2026, 11:58 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9105 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8930 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 11, 2026, 11:58 PM |
Refactor: DevRank Viewport Lazy Loading & Routing
tobiu assigned to @tobiu on Feb 11, 2026, 11:58 PM

tobiu
Feb 11, 2026, 11:58 PM
Input from Gemini 3 Pro:
✦ I have successfully refactored the
DevRank.view.Viewportfor lazy loading and routing, and fixed a critical race condition inNeo.app.content.TreeList.Changes:
- Lazy Loading: Created
apps/devrank/view/home/MainContainer.mjsand updatedViewport.mjsto usemodule: () => import(...)for both Home and Learn views.- Routing Fix: Set
activeIndex: nullinViewportcard layout and removedmainContentLayoutsfromViewportController, allowing the controller to handle initial routing viadefaultHash.- Race Condition Fix (TreeList): Updated
src/app/content/TreeList.mjsto:
- Check for
Neo.isFunction(this.store?.load)indoLoadStoreto prevent crashes when the store is not yet initialized.- Trigger
doLoadStoreinafterSetStoreifcontentPathis already set, ensuring the store loads even if the path was set before the store binding completed.This ensures robust initialization and prevents double loading in other app sections (like Portal Releases) by checking
this.contentPathbefore auto-loading inafterSetStore.
tobiu added parent issue #8930 on Feb 11, 2026, 11:58 PM
tobiu closed this issue on Feb 11, 2026, 11:58 PM
Refactor DevRank Viewport for lazy loading and better routing architecture.
Tasks:
apps/devrank/view/home/MainContainer.mjsto encapsulate the Home view (Grid + Controls).apps/devrank/view/Viewport.mjs:module: () => import(...)) for Home and Learn views.activeIndex: 0to allow the controller to handle routing.apps/devrank/view/ViewportController.mjs:defaultHash: '/home'.Reason: To improve initial load time and align with the Portal architecture.