mirror of
https://github.com/waynesutton/markdown-site.git
synced 2026-01-12 04:09:14 +00:00
2.5 KiB
2.5 KiB
Docs Navigation Performance - Pinned for Later
Problem
Slight delay when switching docs groups on the live site (https://www.markdown.fast/docs) - blank middle screen appears while loading docs-content before showing the actual content.
Root Cause
When navigating between docs pages, useQuery in Post.tsx returns undefined for the new slug while loading, causing a loading skeleton flash.
Option A: React Stale-While-Revalidate (Already Implemented)
Status: Implemented but can be reverted if Option B preferred
Files Modified:
src/pages/Post.tsx- Added client-side cache to show previous content during navigationsrc/styles/global.css- Added 150ms fade-in animation to.docs-article
How it works:
- Cache last successfully loaded docs content in a React ref
- When navigating, show cached (previous) content while new content loads
- Once new data arrives, swap it in seamlessly
Pros:
- Minimal change, doesn't touch Convex backend
- Fast initial page load (metadata-only sidebar)
- Low memory usage
Cons:
- Brief moment showing "stale" content from previous page
- Not a Convex-native pattern (React UI workaround)
Option B: Prefetch All Docs Content (Future Consideration)
Status: Not implemented - requires more planning
Files to Modify:
convex/posts.ts- ModifygetDocsPoststo return full contentconvex/pages.ts- ModifygetDocsPagesto return full contentsrc/components/DocsSidebar.tsxor parent - Store all contentsrc/pages/Post.tsx- Use prefetched content instead of individual queries
How it would work:
- Sidebar (or parent component) fetches ALL docs with FULL content upfront
- Store in React context or state
- When navigating, content is already in memory - instant render
Pros:
- Truly instant navigation (no network request)
- More "Convex-native" - single query, real-time updates for all docs
Cons:
- Slower initial page load (loading all content upfront)
- Higher memory usage
- Higher bandwidth cost
- May not scale well for large docs sites (50+ pages)
Decision Criteria
Choose Option B if:
- Small docs site (10-20 pages)
- Users typically browse multiple docs per session
- Content is relatively short
Stick with Option A if:
- Larger docs site (50+ pages)
- Users often visit just 1-2 pages
- Long-form content
Current State
- Option A is implemented and working
- Revisit Option B when docs site grows or if instant navigation becomes a priority