Skip to main content
Register that definition as usual. The child factory configures the declared renderer through its public PHP API:
Render the children inside your real parent schema. Use the public schema child renderer rather than copying the child Blade template:
configurationMap maps only named parent options. It never forwards the parent’s entire configuration. Explicit mapped values take precedence over child instance options; absent parent options do not inject null. Child paths are relative to the parent Filament schema. Their stable keys determine independent state paths, native error paths. DOM IDs include the actual native container key as well as the stable child key, keeping cloned repeater rows distinct. Use persisted item keys for repeaters, not their changing numeric position. Keep one ChildRenderer session per parent render; a duplicated slot/key is rejected. Recreating a session with the same owner/key retains identity across reorder and locale changes. By default, children have independent state. shareState: true explicitly uses the parent schema’s state path; choose it only for a renderer designed for that value shape. Pass disabled: true or readOnly: true to enforce a parent write restriction after the child factory runs. The factory must return the declared renderer class; failure releases the key claim so you can retry. Native Filament state, validation and accessibility remain owned by the actual child component. Slots can declare field, display, column, entry or action renderers. The parent still needs the appropriate native surface/container. Selected capabilities are validated against the child’s definition and passed to its factory; enable the corresponding public child option there. Declaring them does not turn on a field feature or replace the child’s emitted per-instance asset plan. Each definition supports up to 128 slots; a composition session supports up to 256 rendered children. The complete compiled graph permits 4096 child slots and 4 MiB of child contract metadata. Cycles, missing children, mismatched surface kinds, undeclared capabilities and conflicting registered family renderers reject before commit. Registration does not load closed surfaces or render their HTML.

Continue reading

Extension guides · Definition and registration reference
Last modified on October 16, 2026