Skip to content

perf: use LazyWidget for below-the-fold dashboard widgets (closes #2408)#2417

Open
Rudrasamadhiya wants to merge 1 commit into
Umbrella-io:mainfrom
Rudrasamadhiya:perf/issue-2408-lazy-widget-dashboard
Open

perf: use LazyWidget for below-the-fold dashboard widgets (closes #2408)#2417
Rudrasamadhiya wants to merge 1 commit into
Umbrella-io:mainfrom
Rudrasamadhiya:perf/issue-2408-lazy-widget-dashboard

Conversation

@Rudrasamadhiya

Copy link
Copy Markdown
Contributor

Summary

LazyWidget was built to defer below-the-fold widget rendering via IntersectionObserver, but was never used in DashboardWidgets.tsx. This PR wires it in for the 3 rows of widgets that are below the fold (IssueMetrics, PinnedRepos, TopRepos, LanguageBreakdown, GoalTracker), so their API requests are only fired when the user scrolls near them.

Closes #2408

Changes

  • Added import LazyWidget from "@/components/LazyWidget" and import Skeleton from "@/components/Skeleton"
    • Wrapped Row 3, Row 4, and Row 5 widgets in <LazyWidget fallback={<Skeleton />}>
    • Rows 1 and 2 remain eager-loaded (above the fold)

Type of Change

  • Performance improvement

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:performance GSSoC type bonus: performance (+15 pts) labels Jun 13, 2026
@github-actions

Copy link
Copy Markdown

GSSoC Label Checklist 🏷️

@Umbrella-io — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

@github-actions github-actions Bot added type:bug GSSoC type bonus: bug fix type:feature GSSoC type bonus: new feature type:design GSSoC type bonus: UI/design (+10 pts) labels Jun 13, 2026
@Priyanshu-byte-coder Priyanshu-byte-coder added the gssoc:approved GSSoC: PR approved for scoring label Jun 16, 2026
@Priyanshu-byte-coder

Copy link
Copy Markdown
Member

This PR has merge conflicts with the current main branch. Please rebase or merge main into your branch to resolve the conflicts, then push the updated branch. Once conflicts are resolved, this PR will be merged.

git fetch origin main
git merge origin/main
# resolve conflicts
git push

@Priyanshu-byte-coder

Copy link
Copy Markdown
Member

This PR has merge conflicts with main. Please rebase or resolve conflicts and push again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc:approved GSSoC: PR approved for scoring gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:feature GSSoC type bonus: new feature type:performance GSSoC type bonus: performance (+15 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PERF] LazyWidget component exists but is never used — all dashboard widgets load eagerly on page mount

2 participants