Deferred Regions
poetry_deferred(src:) — Turbo owns the loading physics (lazy fetches on visibility, so hidden Tabs panels and HoverCards defer for free); Poetry owns the states: a Skeleton placeholder and a retryable error card.
Error retry
Open Error retry standalone
This section failed to load.
<%# The src 404s: poetry--core--deferred turns Turbo's silent failure into
data-error + a visible card with a real Retry button. %>
<div class="w-full max-w-md">
<%= poetry_deferred(src: "/deferred/missing", id: "demo-broken") %>
</div>
In tabs
Open In tabs standalone
The Activity panel below is a lazy frame - it has not been fetched yet.
This section failed to load.
<%# A hidden panel is not visible - so a deferred panel loads on FIRST
ACTIVATION with zero extra wiring (with_tab defer:). Switch to
Activity and watch the fragment arrive. %>
<div class="w-full max-w-md">
<%= poetry_tabs(label: "Deferred panel demo") do |tabs| %>
<% tabs.with_tab("Overview", value: "overview") do %>
<p class="text-sm text-muted-foreground">
The Activity panel below is a lazy frame - it has not been fetched yet.
</p>
<% end %>
<% tabs.with_tab("Activity", value: "activity", defer: deferred_fragment_path) %>
<% end %>
</div>
Lazy
Open Lazy standalone
This section failed to load.
<%# The frame fetches when it becomes visible; until then the Skeleton
placeholder holds the box. The endpoint echoes the requesting frame id
(the standard Turbo pattern), so one fragment route serves any region. %>
<div class="w-full max-w-md">
<%= poetry_deferred(src: deferred_fragment_path, id: "demo-activity") %>
</div>