Bundle apps look interchangeable until you ask how the bundle exists in your catalogue.
The real fork is whether a bundle is a single new product or a rule applied to several existing ones — everything else follows from that.
Fixed bundles are simple to report on and terrible at variants; dynamic bundles handle variant choice and complicate inventory.
Inventory is where bundle apps break, because a component sold both inside and outside a bundle can be drawn down from two directions.
Since Scripts stopped running on 30 June 2026, bundle discount logic should apply through Shopify Functions, not cart manipulation.
A fixed bundle is a new product in your catalogue containing a set combination, with its own SKU, price and inventory.
The full guide has the formats, the deadlines and the worked examples.