- Eliminate N+1 on resolveCollaborator: add batchResolveCollaborators() in
auth.ts (2 DB queries max regardless of session count), update all 4
workshop services to use post-batch mapping
- Debounce router.refresh() in useLive.ts (300ms) to group simultaneous
SSE events and avoid cascade re-renders
- Call cleanupOldEvents fire-and-forget in createEvent to purge old SSE
events inline without blocking the response
- Add loading.tsx skeletons on /sessions and /users matching actual page
layout (PageHeader + content structure)
- Lazy-load ShareModal via next/dynamic in BaseSessionLiveWrapper to reduce
initial JS bundle
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>