Skip to content

CtaProps

Defined in: react/src/Hero.tsx:206

optional campaignId?: string

Defined in: react/src/useIsland.ts:75

UseIslandOptions.campaignId


optional className?: string

Defined in: react/src/Hero.tsx:207


optional enabled?: boolean

Defined in: react/src/useIsland.ts:144

Skip the stream entirely (previews, storybook, reduced-motion policies). The fallback then renders visibly as the copy.

UseIslandOptions.enabled


fallback: object

Defined in: react/src/useIsland.ts:95

The fallback: the copy that lands if live copy does not arrive in time, or if the stream fails. REQUIRED — there is no skeleton state, so this is what the visitor reads whenever adaptation does not happen.

The fallback sets the size. Each field’s fallback defines that field’s slot: its shape and its length. Its length is sent with the request as the field’s length budget, so live copy is written to fit. Copy that lands whole and would not fit the slot is not shown (the fallback lands instead, final); typed copy never grows the slot (what does not fit is clipped). A field the fallback does not have is never shown.

It is never shown first and then replaced. While live copy is coming the slot holds blank with the fallback reserving its exact space invisibly — in the server HTML too — and when the fallback does land, it stays for the rest of the view.

optional body?: string

optional cta?: string

optional greeting?: string

optional headline?: string

UseIslandOptions.fallback


optional heldBeforeMs?: number

Defined in: react/src/useIsland.ts:139

How long this island’s slot was already held blank on screen before this render, in milliseconds. Spent from the hold budget and from the 5 second maximum. Not needed after an IslandReservation: the island measures that wait itself, from the reservation’s first paint.

UseIslandOptions.heldBeforeMs


optional holdMs?: number

Defined in: react/src/useIsland.ts:165

How long a slot in view holds blank, waiting for live copy, before the fallback lands. Defaults to COPY_HOLD_MS (2.5 s), and restarts once when the stream proves it is alive, so the blank can last up to twice this.

The budget starts when the island is in view; an island below the fold keeps its slot reserved (and the stream buffering) until it scrolls in. Whatever lands when the budget runs out is final for the view: live copy arriving afterwards is not shown. 0 disables the hold: the fallback renders at once (on the server too) and is final.

UseIslandOptions.holdMs


optional href?: string

Defined in: react/src/Hero.tsx:212

Where the button goes when the server has not resolved an action.


optional initialCopy?: InitialCopy

Defined in: react/src/useIsland.ts:132

Copy already produced for THIS view, with its provenance — for example the cached live copy getIslandCopy read on your server for this visitor. It renders visibly from the first frame, settled and final: it is the island’s whole copy, and the stream writes no copy field (theme, media and the action still apply). variantId pins the page’s variant, so sibling islands tell the same story; the impression records when the island is seen, with this copy’s campaign, variant and provenance.

It fills the slots the fallback sets: a field the fallback does not have is not shown, and a field the copy lacks shows the fallback. The copy belongs to the page view it was read for: a different initialCopy in the same view is not shown until the next page view (see the provider’s serverContext and viewKey).

Pass undefined (not a stub) when there is none: the island then holds and streams as usual.

UseIslandOptions.initialCopy


optional nonce?: string

Defined in: react/src/Hero.tsx:210

See HeroProps.nonce.


optional onClick?: () => void

Defined in: react/src/Hero.tsx:213

void


optional pin?: boolean

Defined in: react/src/useIsland.ts:152

Participate in page-level variant pinning (default true). Pinning exists so sibling islands of one campaign cannot tell two different stories — the hero and its CTA must come from one draw. Pass false for an island that is MEANT to say something new for the same campaign: it neither consumes the page’s pinned variant nor writes its own draw back.

UseIslandOptions.pin


optional serverRendered?: boolean

Defined in: react/src/useIsland.ts:113

Set true only when the copy you pass in fallback is FINISHED CAMPAIGN CREATIVE your server already rendered from the platform (for example from fetchContent), not authored fallback copy. It renders visibly from the first paint and is final for the view: nothing holds, and the stream’s copy for those fields is ignored (theme, media and the action still apply).

Leave it unset for an ordinary fallback. The fallback is then reserved invisibly — in the server HTML and on the client — until live copy arrives or the hold runs out.

UseIslandOptions.serverRendered


optional sessionId?: string

Defined in: react/src/useIsland.ts:141

Conversation session id, for copy continuity. Individual surfaces only.

UseIslandOptions.sessionId


optional slot?: string

Defined in: react/src/useIsland.ts:173

Tells apart two islands that show the same campaign (or surface) and island on one page. An island remembers, for the page view, what it showed and whether its impression was recorded, so mounting it again shows the same copy and records nothing new. Islands with the same campaign, island and slot share that memory.

UseIslandOptions.slot


optional smooth?: boolean

Defined in: react/src/Hero.tsx:215

Motion — on by default (see StreamText#smooth).


optional style?: CSSProperties

Defined in: react/src/Hero.tsx:208


optional surfaceId?: string

Defined in: react/src/useIsland.ts:76

UseIslandOptions.surfaceId