@timapple @codesections interesting discussion. My approach is usually "cloud" (actually self hosted stuff at home) with local caching. So my laptop/phone etc can catch up with other changes when online, but work continues when offline.
Two good examples - I use Taskwarrior for to do lists, synced between devices using the Taskd server. For files/contacts/calendars etc, I use @nextcloud which will keep specific directories in sync across devices. Very handy.