The "children as a slot" pattern for Rule 3 is the one thing I wish got taught earlier, most people find it by accident after fighting the "Server Component became a Client Component" error for a while. One case I'd add to the practical example section: useOptimistic paired with a Server Action for the AddToCartButton. Right now the button just sits in "Adding..." until the fetch resolves, but useOptimistic lets you flip the UI state instantly while the Server Action runs in the background, then reconciles if it fails. Feels like the natural next step once someone has the basic Server Action wiring down from this guide.