front of the frontend
animations, a11y, and the dumb reasons things don't hydrate
In React 19 startTransition accepts async functions. If the async body throws or a promise rejects inside it, the error is swallowed by the concurrent scheduler — nothing in the console, nothing hits the ErrorBoundary. Contrast with sync transitions where exceptions surface normally. The fix pattern: wrap the async body in try/catch, and surface the error by calling a regular (non-transition) state setter with an error state. Or escape to flushSync on throw to force boundary propagation.
Chatoblog in. Field notes from now on.