FirstflowWidget is the drop-in shell that renders whatever experience is active. It reads runtime state from the provider, so it takes no experience props just placement options. Render it once, anywhere inside FirstflowProvider.
Props
Start in the collapsed (resting) state. A newly-started experience always
opens expanded regardless, so a minimize from a previous run never hides the
next one.
Anchor the widget above the next DOM sibling of the mount and inherit its
top-left border radius as horizontal inset. Place the widget element directly
before your chat composer.
Anchor above a specific element by ref, using the same border-radius inset.
Takes precedence over
alignWithNextComposerSibling.Placement
By default the widget floats bottom-right. In anchored mode it grows upward from a zero-height mount slot useful for embedding above a chat input:Minimize
The shell has a minimize toggle, and theminimize action can collapse it from inside a step. Minimizing keeps the experience alive on its current step (unlike dismiss, which ends it). Re-expand from the header.
Minimize as an action
A CTA or option can run aminimize action. It is non-terminal it collapses the widget without advancing or ending the run:
SCHEMA.md.
Custom shell
If you need different markup, skipFirstflowWidget and render BlockRenderer inside your own panel driven by useFirstflow. See Blocks & custom shells.