Structuring Your App
When to Create a Separate App
Decide whether a second experience belongs in your current app or needs its own app, and how separate apps share work.
Decide the product boundary first, then the communication mechanism.
One product is usually one Stardeck app with Surfaces for each audience and device. A second app is the exception.
When a second app earns independence
Create a separate app when at least one of these is true:
| Boundary | Example |
|---|---|
| Separate product | An independently owned accounting product next to your storefront |
| Tenant or ownership boundary | A partner-operated fulfillment system your team does not own |
| Different data model | Systems that would only share occasional events, not the same core tables |
| Different release cadence | A product that must ship and roll back independently of the first |
If none apply, keep the work in the current app and add a Surface or a Module.
Decision table
| Question | Same app | Separate app |
|---|---|---|
| Same product ownership? | Yes | No |
| Same core data model and release train? | Yes | No |
| Mainly a different audience or device? | Surface | No |
| Needs its own launch URL, icon or access posture? | Surface | Only if the product itself is independent |
| Would you want to ship or pause them independently? | Rarely | Yes |
After you decide they are separate
Pick how the apps share work:
| Use | When |
|---|---|
| Shared Data Store | The apps operate on the same core tables and neither owns them alone. Changes show up in both at once. |
| Cross-app calls | Each app owns its own data, and one tells the other to act at a specific moment (an order is paid, so the storefront asks accounting for a journal entry). |
| Both | Two apps share a data domain, and a third, separately owned system is notified through calls. |
For different audiences or devices on the same product, use Surfaces in one app, not several apps on one store.
Next
Cross-App Communication
Let separate apps call each other through Stardeck