I do something a bit different:
I have a Surface Pro, which is OK in its own right. But I don’t develop straight on it. Instead, I spin up a VM on Azure with all my dev tools. I use RDCMan as a RDP client to connect to that, and code there. When at home or office, I dock the surface and have 2 big screens and a nice keyboard. When at a coffee shop, I just use the Surface as-is. If I upgrade my laptop or decide to use my MacBook etc, I just use that to remote into the dev VM instead. My dev environment is agnostic to the screen I use to connect to it. I’ve been doing this 5+ years and wouldn’t go back. I will say I’m more productive with 2 screens, but I routinely worked from coffee shop just fine.