Next.js 15 App Router already ships React Server Components by default, so no new dependency or infra addition is required - understory-labs-site, field-notes, and life-automation are all Next.js/React projects that could adopt RSC patterns incrementally. The operator's existing Vercel deployment pipeline handles RSC out of the box with no config changes.
This is an architecture/refactor pattern rather than a new capability - it reduces client bundle size and simplifies data fetching in the /intel dashboard, which fits the 'practical over experimental' and 'unattended systems' values, but it doesn't unlock new functionality the operator is missing today. The current SWR/useEffect approach in /intel already works; this is optimization, not a gap fill.
Implementation Options
01Convert /intel briefing list to a Server Component
understory-labs-site3-5 hourslow risk
Move the Supabase fetch for the /intel briefing list in understory-labs-site from a client component (useEffect/SWR) to an async Server Component, since the list has no client interactivity until an item is selected. Keep the detail/selection view as a client component.
+Removes a client-side fetch waterfall and loading spinner
+Smaller client JS bundle for the list view
+No new dependencies - uses existing Next 15 App Router primitives
-Requires re-testing the selection/interactivity boundary between server and client components
-Minor short-term velocity cost for a page that already works
02Server Actions for the approve/reject review workflow
understory-labs-site5-8 hoursmedium risk
Replace the client-side API route calls that drive the L1-L4 approve/reject buttons with Next.js Server Actions, cutting out a manual fetch + API route layer for mutations.
+Fewer moving parts between UI and Postgres/pipeline API
+Built-in progressive enhancement and simpler error handling
-Touches the actively-in-use review interface, so a bug here blocks daily pipeline operation
-Needs careful handling of optimistic UI for a workflow the operator depends on every day
03Defer - no action now
understory-labs-site0 hourslow risk
Log the RSC/Server Actions pattern as a known improvement, but don't schedule implementation until the L1-L4 pipeline itself is stable and there's a concrete pain point (slow load, bundle size complaint, or a new page being built from scratch).
+Avoids refactoring a working review interface the operator depends on daily
+Keeps focus on pipeline stability (L3/L4 stages don't exist yet)
-Bundle size and fetch-waterfall inefficiency persists
-Delays learning RSC patterns that will eventually be needed anyway
Marginally faster /intel dashboard load and a simpler data-fetching layer (one fewer client-side fetch pattern to maintain) if implemented - but the current implementation is not reported as broken or slow.
RSC and Server Actions are becoming the default Next.js pattern, and every active project (field-notes, codec, save-state, life-automation, understory-labs-site) is Next.js-based - learning this pattern now pays off across the whole portfolio, not just this one dashboard.
03 · What Implementation Looks Like In understory-labs-site, the /intel list page component drops its 'use client' directive and useEffect/SWR data fetch, replaced by an async function component that queries Supabase directly at render time. The approve/reject buttons in the review UI call a Server Action instead of hitting a Next.js API route. A minimal v1 touches 2-3 files (the list page, the review action handlers) with no schema or infra changes.