Advantages of umbrella applications?

I’m not necessarily any kind of authority here, but one point of reference here is Saša Jurić’s “boundary” library…

Umbrella apps can be a slightly more built in way of enforcing boundaries, and/or for composing your applications from components that you might wish to extract/reuse as libraries or open source projects in the future. That said, you do need to be careful about the boundaries you create in them, and when developing locally it often won’t stop you from violating those boundaries until you run on CI or build a release, at which point boundary violations will surface, somewhat the opposite of the boundary library which will always tell you at compile time (at the cost of some additional explicit declarations). I think when in doubt, having a single application is probably a good bias, as if you aren’t certain about some boundaries, getting them wrong can be a little messy to untangle/reorganize later, but if you already have an umbrella app structure, adding (or moving) one application around within it is pretty easy. There are some downsides for sure though, like how testing works in umbrella apps, and possibly managing dependencies since there’s still a single global mix.lock but possibly duplicated dependencies in different umbrella apps.

4 Likes