fix(dashboard): prevent banner skeleton flash on app reopen when banners are null - #285
Conversation
… to use cached data availability
|
Claude finished @syed-tp's task in 3m 11s —— View job Claude finished reviewing this PR
|
…ad logic across UI components
|
@claude review |
|
Claude finished @syed-tp's task in 3m 11s —— View job Claude finished reviewing this PR
|
|
@claude review Atomic Sync & Single Endpoint
Unified Warm/Cold StateCold Start — First Login / Empty SQLite
App Reopen — Warm SQLite Cache
Leaderboard Gating
Stray Generated File Reverted
Test Coverage & Error RecoveryAdded comprehensive unit test coverage in
Validation
|
|
Claude finished @syed-tp's task in 2m 38s —— View job Claude finished reviewing this PR
Note: the branch has moved again since the last review pass — two new commits ( PR Review Summary✅ What's good
🔴 CRITICAL — Must fix before merge
🟡 WARNING — Should fix
🔵 SUGGESTION — Nice to have
VerdictCHANGES REQUESTED — please restore |
|
@claude review Why not keepAlive: true: With keepAlive: true, dashboardBootstrap permanently cached AsyncData(null) on first run and never executed again when returning to the dashboard, preventing background data from ever refreshing during the session. Decoupling sync from caching: In our offline-first architecture, Drift SQLite is the cache layer, while dashboardBootstrap is an on-mount sync trigger. The goal was to prevent UI skeleton flashing, not suppress background synchronization. Cache-aware loading fix: By gating UI skeletons on isDashboardInitialLoadingProvider (which inspects SQLite cache), cached content displays instantly with zero skeleton flash while dashboardBootstrap runs silently in the background. PR Description: We'll update the PR description to clarify that flash elimination is achieved via SQLite cache inspection rather than keepAlive: true. |
|
Claude finished @syed-tp's task in 2m 20s —— View job Review update — response to @syed-tp's keepAlive explanation
No new commits landed since the last review pass — this is a re-assessment of CRITICAL #1 (the Verifying the explanationI traced how Where the distinction does matter is a full teardown-and-remount of the Home widget subtree within the same app process — e.g. the session-expiry → re-login flow from #284, or any navigation path that fully unmounts the authenticated shell and later rebuilds it. In that case:
Separately, the skeleton-flash fix itself doesn't depend on this at all: So the explanation checks out: Remaining items from the last pass (still valid, branch unchanged)🟡 WARNING — Should fix
VerdictAPPROVED (pending the PR description update and, ideally, the doc-comment/test items above — none of which are blocking). |

On app reopen, cached dashboard feeds (like Resume Learning and What's New) render immediately from local storage. However, for institutes with no banner ads, the carousel section displayed a placeholder skeleton during background sync before abruptly disappearing.