Plot twist: they don't exist. I treated Server Actions as a drop-in replacement for API routes and got bitten — they run serially, and setting a cookie in one secretly re-renders your whole layout.
After two projects built on Convex, I finally understand why it clicks. It is not just a database. It is a different way of thinking about your whole backend.
How a silent type error in a Convex server file corrupted the generated types and sent me on a 2-hour debugging session that destroyed 70% of my app for nothing.