Frontmatter
| id | 9309 |
| title | Performance: Remove avatarUrl convert overhead in DevIndex Contributor Model |
| state | Closed |
| labels | enhancementaiperformance |
| assignees | tobiu |
| createdAt | Feb 26, 2026, 3:33 PM |
| updatedAt | Feb 26, 2026, 3:38 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9309 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 26, 2026, 3:38 PM |
Performance: Remove avatarUrl convert overhead in DevIndex Contributor Model
tobiu assigned to @tobiu on Feb 26, 2026, 3:37 PM

tobiu
Feb 26, 2026, 3:37 PM
Input from Gemini 3.1 Pro:
✦ Successfully completed and pushed to the
devbranch in commit 29bb47d1e.Summary of Completion:
- Reverted changes to
apps/devindex/services/Updater.mjsto protect the backend spider logic.- Removed
convertoverhead foravatarUrlandorganizationsarray insideDevIndex.model.Contributor.- Updated
apps/devindex/view/home/ProfileContainer.mjsto resolveavatarUrlfrom raw IDs.- Refactored
src/component/GitHubUser.mjsandsrc/component/GitHubOrgs.mjsto accept both raw IDs and full URL strings, ensuring backwards compatibility for other applications.- Adapted
src/grid/column/GitHubUser.mjsto fetchavatarUrl.
tobiu closed this issue on Feb 26, 2026, 3:38 PM
The DevIndex backend spider engine fetches raw
avatar_urlfrom the GitHub REST API. Previously, theDevIndex.model.Contributorwas performing an expensiveconvertoperation on instantiation to map this into a full URL format under theavatarUrlfield.To optimize performance for 50k+ records, this ticket removes the
convertoverhead. The model now maps the raw ID string into theavatarUrlfield directly.Consequently, the UI components (
GitHubUser,GitHubOrgs, andProfileContainer) have been updated to smartly detect ifavatarUrlis a full HTTP string or just an ID, dynamically constructing thehttps://avatars.githubusercontent.com/...link at render time. This maintains compatibility for both the highly optimized DevIndex app and general framework usage.Changes:
apps/devindex/model/Contributor.mjs: Removedconvertoverhead foravatarUrlandorganizations.apps/devindex/view/home/ProfileContainer.mjs: UpdatedgetAvatarUrl()to handle raw IDs.src/component/GitHubUser.mjs: Updated URL construction logic.src/component/GitHubOrgs.mjs: Updated URL construction logic.src/grid/column/GitHubUser.mjs: MappedavatarUrlfromrecord.avatarUrl.