vercel-labs/async-react-demo

Next.js task board showcasing Async React patterns: useOptimistic, Suspense boundaries, action props, form actions, and more.

TypeScript

20

96 commits

updated Aug 19, 2026

See the code

README

Async React Demo

A Next.js task board demonstrating async React coordination — optimistic updates, transitions, pending feedback, and form state management.

Live Demo

App Features

  • Kanban board — Three-column layout (Todo / In Progress / Done) with drag-and-drop and label filter chips
  • Create task — Modal dialog with full form (title, description, status, priority, assignee, labels)
  • Task detail page — Full task view with metadata, inline controls, and comment thread
  • Priority cycling — Cycle task priority (low → medium → high → low)
  • Assignee reassignment — Reassign tasks to team members
  • Comments — Add and delete comments on any task

Async React Patterns

WhereWhat happensHow
Task detail pagePage shell paints immediately, sections stream in as data resolves<Suspense> boundaries with promise-passing
Drag-and-dropCard moves to target column instantly, reverts on failureuseOptimistic with reducer + startTransition
Task card controlsPriority updates instantly on clickuseOptimistic with updater function
Label filterChip highlights immediately, board dims while filtered data loadsuseTransition + data-pending + action props
Create task modalButton shows "Creating...", dialog closes with fresh board in one stepuseActionState + key-based form reset + double startTransition
Comment formNew comment appears immediately while server catches upForm action + useOptimistic list add
Delete buttonComment card fades to 30% opacity during deletionuseOptimistic(false) + data-pending CSS
Repeat navigationCached reads and runtime prefetch make navigations instant'use cache' + cacheTag + updateTag + unstable_prefetch

See the Interactive Apps guide for a step-by-step walkthrough.

Setup

pnpm install
pnpm run dev

Tech Stack

  • Next.js 16 App Router
  • TypeScript
  • Tailwind CSS 4
  • shadcn/ui
  • Geist Sans + Mono fonts
  • SQLite data store (auto-seeds on first run) with simulated delays

Credits

Based on Ricky Hanlon's Async React demo from the React Conf 2025 talk. See the Async React Working Group for the latest on making Async React the default for React apps.

agent-skill
async-react
nextjs
react
suspense
useoptimistic
usetransition

Contributors

aurorascharff

96 commits

vercel-labs/async-react-demo

Next.js task board showcasing Async React patterns: useOptimistic, Suspense boundaries, action props, form actions, and more.

TypeScript

20

96 commits

updated Aug 19, 2026

See the code

README

Async React Demo

A Next.js task board demonstrating async React coordination — optimistic updates, transitions, pending feedback, and form state management.

Live Demo

App Features

  • Kanban board — Three-column layout (Todo / In Progress / Done) with drag-and-drop and label filter chips
  • Create task — Modal dialog with full form (title, description, status, priority, assignee, labels)
  • Task detail page — Full task view with metadata, inline controls, and comment thread
  • Priority cycling — Cycle task priority (low → medium → high → low)
  • Assignee reassignment — Reassign tasks to team members
  • Comments — Add and delete comments on any task

Async React Patterns

WhereWhat happensHow
Task detail pagePage shell paints immediately, sections stream in as data resolves<Suspense> boundaries with promise-passing
Drag-and-dropCard moves to target column instantly, reverts on failureuseOptimistic with reducer + startTransition
Task card controlsPriority updates instantly on clickuseOptimistic with updater function
Label filterChip highlights immediately, board dims while filtered data loadsuseTransition + data-pending + action props
Create task modalButton shows "Creating...", dialog closes with fresh board in one stepuseActionState + key-based form reset + double startTransition
Comment formNew comment appears immediately while server catches upForm action + useOptimistic list add
Delete buttonComment card fades to 30% opacity during deletionuseOptimistic(false) + data-pending CSS
Repeat navigationCached reads and runtime prefetch make navigations instant'use cache' + cacheTag + updateTag + unstable_prefetch

See the Interactive Apps guide for a step-by-step walkthrough.

Setup

pnpm install
pnpm run dev

Tech Stack

  • Next.js 16 App Router
  • TypeScript
  • Tailwind CSS 4
  • shadcn/ui
  • Geist Sans + Mono fonts
  • SQLite data store (auto-seeds on first run) with simulated delays

Credits

Based on Ricky Hanlon's Async React demo from the React Conf 2025 talk. See the Async React Working Group for the latest on making Async React the default for React apps.

agent-skill
async-react
nextjs
react
suspense
useoptimistic
usetransition

Contributors

aurorascharff

96 commits

Languages

TypeScript

95.6%

CSS

3.5%