Native defaults and configuration
The deferred API always wires required native references. Omitted native props keep constructor defaults; layouts do not silently enable child sizing. Set childControlWidth, childControlHeight, LayoutElement sizing and expansion explicitly when needed.
P.DefaultFont supplies a code-selected TMP font; otherwise Pine resolves its bundled/project TMP fallback. CanvasOptions configures automatically created canvases. An explicit P.Canvas(...).With(P.CanvasScaler(...), ...) uses its own declared native settings. Native structs pass through unchanged.
P.Strict, P.Defaults and P.DeferNestedProperties govern advanced imperative property processing. Defaults only controls Create wiring; it does not disable wiring for deferred views. Duplicate explicit same-object declarations and Graphic conflicts are always rejected. Mount reference.
Make layout ownership explicit
Set container dimensions with native transform props such as sizeDelta, then decide whether the layout controls its children's width and height. Give children P.LayoutElement declarations for their preferred sizing. Set expansion separately: controlling height and forcing children to expand are different native layout choices.
The counter example uses a vertical container with childControlWidth and childControlHeight enabled, childForceExpandHeight disabled, and a preferred height for each child. Copy that complete example when diagnosing a zero-sized interface; changing state bindings does not fix native layout sizing.
Automatic or explicit canvas
Use the generated App.Mount host when you want Pine to supply the canvas and compatible EventSystem. Return an explicit P.Canvas root when the view needs its own declared canvas and scaler settings. CanvasOptions applies to automatically created canvases, while a declared canvas uses the props you supplied. The mount reference lists those options, including persistence across scene changes. The installation tutorial covers automatic startup and existing input ownership.
For native Inspector settings and their Unity version gates, use the controls reference. Advanced imperative switches do not change the deferred API's required wiring or allow conflicting same-object declarations.
