Two different units of code, delivered two ways: ship the whole app, or publish one reusable piece.
App delivery methods — start here
Two different units of code, delivered two ways. Ship the whole app — a complete, versioned project promoted through environments — or publish one reusable piece — a package the whole team installs and upgrades in one place. Pick by what you're shipping: the app, or a part of it.
Snapshots & pipelines
Promote a complete, versioned project through dev → staging → prod to every place that runs it.
Dev · one build
Dev instance
build & test once
snapshot · pipeline
Fleet · one instance per place, each pointed at its own data
Remote Instance
Site A · env A
Remote Instance
Site B · env B
Remote Instance
Site C · env C
Managed
Snapshot / pipeline
Take the whole app — every flow, setting and dependency — as a versioned snapshot, then promote that one controlled build through pipeline stages to every place that should run it.
Use it when
You're shipping a complete application and every site should run the same, controlled version.
How it works
A pipeline promotes a snapshot dev → staging → production; each target is parameterised by its own env vars, so one controlled build serves every site.
Major components
Snapshot — the whole app, frozen as one versioned build
Pipeline — promotes that snapshot through dev → staging → prod
Dev instance — where you build and test the project
Remote / Hosted Instances — the fleet each snapshot rolls out to
Where config & data live
Config — each target is parameterised by its own env vars.
Rollout — Device Groups + pipeline promotion: one controlled build, many places.
Dev and prod on separate servers — dev in IT or the cloud, prod in OT or air-gapped? A GitHub bridge carries the same versioned code across the boundary. That's an architecture decision.
Publish one piece as a package the team installs, like a shared library.
Team · one versioned library, version-tracked
Subflow
reusable block
export / publish
Team Library
Team Library
installable node
install
Apps that install the piece
Instance
App A · v1.2
Instance
App B · v1.2
Instance
App C · v1.1
tracked in
Bill of Materials
Bill of Materials
which version each app runs
install
version-tracked
Package a single piece of a flow — a block of logic or UI — as a reusable subflow, and publish it to the Team Library as an installable node other apps pull in, instead of copying code between projects.
Use it when
A part of an app should be reused across many apps and upgraded in one place — a shared library, not a whole application.
How it works
Export the subflow as importable JSON, or publish it to the Team Library as an installable package with an example flow. Apps install it like a library dependency, and the Bill of Materials tracks every version in use.
Major components
Subflow — the one reusable piece you package
Team Library — the catalogue you publish the package to
Instances — the apps that install and run the piece
Bill of Materials — tracks which version each app runs
Where config & data live
Config — the subflow's instance properties / env where it's installed.
Distribution — publish once to the Team Library; apps install and upgrade from it, like a library.