A placeable surface is a product UI descriptor. It says what can appear, where it can appear, and which named data reads or targets the surface may use. The shell reads that descriptor and places the surface without importing the feature’s private screens, stores, actions, or file layout.
What this explains
This page explains the primitive. It is not the Runtime Kit Cookbook recipe.Your product grows from one launch surface into launch, help, support, settings, and billing. The shell should still behave like a generic place to put surfaces, not like a product-specific switchboard.Use this page when you need to understand why the architecture stays clean. Use Placeable surface product loop when you want the full example succession with files and code.The separation
The shell should not import launch dashboard code. It should not import support behavior. It should not import the package that owns help search.The shell should only use this descriptor data:Visual map
The flow has four jobs. Each job stays separate.Records, stored bytes, and named targets enter through package files.
Package material becomes named data reads and callable action names.
Descriptors say which region, component, inputs, and targets each surface uses.
The shell renders labels, regions, and active surface ids without product branches.
Ownership lanes
Owns the records, package-owned bytes, and callable targets.
Turns package material into public reads and requests.
Declares where a surface belongs and what it may touch.
Places surfaces. It does not import package-specific UI code.
The product map
Placement sketch
welcome-copy + launch-checklist → launch.next-step
help.search