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