StaticEXPERIMENTAL_Reverse-engineered primitives — may break after a WhatsApp client update.
StaticSTABLE_Schema-backed primitives — safe to build on.
FOABloksPrimitive — raw Bloks payload; most experimental primitive, fields passed through as-is.
Markdown checklist block.
Add a compact header card (avatar + title + verified + subtitle, tappable). EXPERIMENTAL.
Optionaldata: {Optionaloptions: { resolveUrl?: boolean }Optionalitems: Record<string, any>[]GenAIDividerPrimitive — plain horizontal line, no content.
GenAIFooterActionPrimitive — footer action link chips (e.g. "Join our Group").
GenAIImaginePrimitive with status GENERATING — pending-generation placeholder, distinct from addImage()/addVideo()'s READY status.
Optionaloptions: {FOATextPrimitive — large heading text, distinct from addText()'s paragraph text.
Optionalitems: (string | AIRichStackItem)[]Optionaloptions: { instant?: boolean; resolveUrl?: boolean }Optionaloptions: AddInlineImageOptionsGenAILatexUXPrimitive — has a real AI_RICH_RESPONSE_LATEX submessage (unlike most primitives here).
Optionallinks: Record<string, any>[]Build a whole card from markdown (headings/code/tables/paragraphs).
Optionaldata: Record<string, any>Optionaloptions: { resolveUrl?: boolean }Optionaldata: Record<string, any>Optionaloptions: { resolveUrl?: boolean }One-call profile card (compact header + divider + social-entity embed) — the igstalk pattern. EXPERIMENTAL.
Optionalprofile: {Optionaloptions: { divider?: boolean; resolveUrl?: boolean }Labelled text progress bar block.
Optionalmax: numberOptionaloptions: { size?: number }GenAIBotProgressStatusPrimitive — one-shot "searching/working" status chip.
Optionaloptions: {GenAIMetaSubsQuotaUpsellPrimitive — subscription-quota-limit upsell card.
Push a single raw primitive wrapped in a SingleLayoutViewModel — quickest custom-primitive escape hatch.
Optionalprops: Record<string, any>Optionalopts: AIRichViewModelOptionsOptionalreelsItems: Record<string, any>[]Optionaloptions: { resolveUrl?: boolean }Add a tappable social-entity embed (IG/FB/etc. profile card). EXPERIMENTAL.
Optionaldata: {Optionaloptions: { resolveUrl?: boolean }Optionalsources: Record<string, any>[]Optionaloptions: { resolveUrl?: boolean }GenAISpacerPrimitive — blank vertical spacing.
Optionalspacing: numberOptionaloptions: AddTextOptionsOptionaloptions: AddTextOptionsGenAIBotThinkingStatusPrimitive — one-shot "thinking" status chip.
Optionaloptions: {Optionaloptions: { autoFill?: boolean; resolveUrl?: boolean }Push a raw custom view_model section by typename (bare or fully-qualified), with one primitive or an array.
Optionalopts: AIRichViewModelOptionsOptionalitems: (string | AIRichStackItem)[]GenAI3PExtWidgetPrimitive — experimental, reverse-engineered; see JSDoc in the .js file for caveats.
Optionaloptions: { layout?: string }Optionaloptions: AIRichBuildOptionsOptionaloptions: AIRichEditOptionsOptionaloptions: AIRichSendOptionsOptionaloptions: AIRichEditOptionsProgressive text reveal ("AI typing" effect): sends once, then patches the
same bubble via EDIT protocolMessages until the full text is out. Accepts a
plain string (split at word boundaries every ~chunkSize chars) or a
pre-split array of chunks. intervalMs (min 300) paces the edits; cursor
is shown after partial text while streaming ('' disables).
Optionaloptions: { chunkSize?: number; cursor?: string; intervalMs?: number; [key: string]: any }StaticfromStaticisTrue when name is a reverse-engineered primitive with no public schema backing.
StaticnewStaticprimitiveNormalize a primitive spec into a { __typename, ... } object (Meta prefix added to bare names).
StaticsendSend an image + video as one paired-media unit (messageAssociation).
StaticsendSend a support-ticket marker message (messageContextInfo.supportPayload).
Optionaloptions: {StatictokenizerOptionallang: stringStatictoOptionaloptions: AddTextOptions
AI rich-response builder (Meta AI / GenAI message primitives).