Next.js task board showcasing Async React patterns: useOptimistic, Suspense boundaries, action props, form actions, and more.
See the codeA Next.js task board demonstrating async React coordination — optimistic updates, transitions, pending feedback, and form state management.
| Where | What happens | How |
|---|---|---|
| Task detail page | Page shell paints immediately, sections stream in as data resolves | <Suspense> boundaries with promise-passing |
| Drag-and-drop | Card moves to target column instantly, reverts on failure | useOptimistic with reducer + startTransition |
| Task card controls | Priority updates instantly on click | useOptimistic with updater function |
| Label filter | Chip highlights immediately, board dims while filtered data loads | useTransition + data-pending + action props |
| Create task modal | Button shows "Creating...", dialog closes with fresh board in one step | useActionState + key-based form reset + double startTransition |
| Comment form | New comment appears immediately while server catches up | Form action + useOptimistic list add |
| Delete button | Comment card fades to 30% opacity during deletion | useOptimistic(false) + data-pending CSS |
| Repeat navigation | Cached reads and runtime prefetch make navigations instant | 'use cache' + cacheTag + updateTag + unstable_prefetch |
See the Interactive Apps guide for a step-by-step walkthrough.
pnpm install
pnpm run dev
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.
96 commits
TypeScript
95.6%
CSS
3.5%
Next.js task board showcasing Async React patterns: useOptimistic, Suspense boundaries, action props, form actions, and more.
See the codeA Next.js task board demonstrating async React coordination — optimistic updates, transitions, pending feedback, and form state management.
| Where | What happens | How |
|---|---|---|
| Task detail page | Page shell paints immediately, sections stream in as data resolves | <Suspense> boundaries with promise-passing |
| Drag-and-drop | Card moves to target column instantly, reverts on failure | useOptimistic with reducer + startTransition |
| Task card controls | Priority updates instantly on click | useOptimistic with updater function |
| Label filter | Chip highlights immediately, board dims while filtered data loads | useTransition + data-pending + action props |
| Create task modal | Button shows "Creating...", dialog closes with fresh board in one step | useActionState + key-based form reset + double startTransition |
| Comment form | New comment appears immediately while server catches up | Form action + useOptimistic list add |
| Delete button | Comment card fades to 30% opacity during deletion | useOptimistic(false) + data-pending CSS |
| Repeat navigation | Cached reads and runtime prefetch make navigations instant | 'use cache' + cacheTag + updateTag + unstable_prefetch |
See the Interactive Apps guide for a step-by-step walkthrough.
pnpm install
pnpm run dev
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.
96 commits
TypeScript
95.6%
CSS
3.5%