Sub applications are a powerful feature available in the Production plan. The feature sets up a relationship between a “main app” and one or more “sub applications” and makes it easier to push any changes from the main app to its sub apps, while all main and sub apps have their own database. This is especially useful for certain ideas that involve setting up different (sub/)domains for different clients, which is common in SaaS applications.
Creating new sub apps
The feature can be found in Settings > Sub apps. There, you can create a sub app using the current app as the main app. This will create a copy of the main app with the new name that you pick. The new sub app will appear in your “My apps” dashboard (and will note which app is the parent), but from that point on, it generally functions as its own app. You cannot create a sub app off of a sub app, but one main app can have multiple sub apps.
Pushing from the main app to sub apps
However, one of the main features of a sub app is that at any time, you can “push” the current version of your main app to all of its sub apps. Note that this will overwrite any changes made to a sub app individually. (This feature can take a relatively longer time for complex apps.)
Certain settings on an app will not transfer from the main app to a sub app upon a push. These include:
Custom domain (i.e. every sub app can have its own domain)
Plugin key values inputted in the Plugin tab
Page load times can take a while and use more capacity than normal when a complex page is loaded for the first time after that page has major changes, after that page is updated after not being updated in a long time, or if that page is newly created via copying.
Bubble does a lot of computation and optimization behind-the-scenes to figure out how to generate a page and its data for a visiting end-user. As part of this, occasionally Bubble will go through a longer, deeper recalculation - this can happen when a page is viewed in run-mode after getting major changes, if a page is edited for the first time in a long time, or if a page is newly created via copying, for example. This longer recalculation does not have to be repeated often for a given page because Bubble remembers the result. But, while the recalculation is going on, you may see page load times in run-mode taking much longer than normal, as well as spikes in capacity usage. This should be temporary and should resolve itself after the recalculation finishes, which usually takes a handful of minutes.
Main app vs sub app databases
Sub apps have separate databases from the main app, but can connect with the main app’s database through the App Connector just like any other app. In other words, the main app’s database will not transfer to sub apps upon a push. Default values, however, are stored in the app rather than directly in the database, so they will transfer to sub apps on a push.
Sub app subscriptions
Each sub app would be on its own Bubble subscription, but sub apps do not need to be on the Production plan - only the main app does.
If you have a subscription to a plugin on your main app, it would not carry over to your sub-app(s) and your sub-app(s) would need to re-purchase that plugin.