An order in Galley changes hands four times between the tap and the door: confirmed, preparing, on the way, delivered. The customer wants each step the moment it happens. Polling can fake that, at the price of a request every few seconds from every open screen, most of them answering 'nothing new'.
Serverpod streams turn it around. The app opens one stream for the order it is watching, the server publishes a message when the status changes, and the screen redraws. Status steps, arrival time and the courier's position travel the same way, all of them typed with the same Dart models the backend uses, so a renamed field is a compile error on both sides.
Streams bring chores of their own. The connection drops in a lift, the phone sleeps, the user opens the app an hour later. So the screen starts from a snapshot, applies the stream on top, and when the stream breaks it reconnects and takes a fresh snapshot instead of trusting what it missed. That rule is what keeps 'preparing' from outliving the pizza.