Dynamic Blocks. Ship content, not releases.
Reusable in-app content blocks controlled from the server.

One block, many places.
The app requests its blocks at runtime and renders them with its own components, so a content change reaches users without a new app version. The banner, the card and the toast under the carousel are blocks on the same screen, each published the same way.
One screen, four blocks.
What a block can hold.
Native app rendering
The host app renders each block.
Multiple block formats
Teams can manage cards, banners, carousels, modals, toasts, and tooltips.
Reusable block definitions
A defined block can be used across suitable screens.
Remote content updates
Content can change without submitting a new mobile app version.
Block variants
Alternative content versions can be prepared.
Register once, render anywhere.
Connect the REST API
Connect the application through the REST API so it can request content for named interface locations.
Register content slots
Define each slot, its accepted content structure, and the fallback shown when no block is returned.
Build content variants
Create the copy, media, links, and contextual variants allowed within each registered slot.
Test and publish
Preview each variant against the intended slot before publishing it to the selected audience.
Where a block earns its place.
Contextual Financing Prompts
A Saudi bank could show different financing prompts on its home screen based on account context.
Claim Status Guidance
An insurer could change the guidance block shown at each stage of a motor claim.
Roaming Pack Offers
A regional telecom operator could present a roaming pack block when an eligible user opens the travel section.
The API ships it, the app renders it.
REST API required
Production integration today uses the REST API. Native SDKs for React Native, iOS, Android and Web are in preview and are not generally available. The @contentflow/cli package is not published yet.
Rendering Stays Client Side
The host application remains responsible for layout, accessibility, interaction handling, and safe fallback behaviour.
App store review
Publishing content through ContentFlow does not require a new build or a new store submission. Any change to your app's own code still goes through Apple and Google review, and remotely delivered content has to stay inside the purpose your app already declares and the store policies that apply to it.
Offline and connectivity
Production integration today uses the REST API, built directly by the integrating team. Offline behaviour for that integration is whatever the team implements; ContentFlow provides none of it.
The fallback described elsewhere on this page is what renders when no block is returned for a slot; connectivity is a separate condition. With no network at all, the app renders the fallback content compiled into its own build. No ContentFlow content change, published or scheduled, can reach a device that has no network.
ContentFlow has also written a JavaScript and React Native package with additional caching behaviour, but that package is not published and is not available to install today. As written, it persists the last successful payload (localStorage on web, async storage on React Native) with no expiry and reuses it on a failed request; falls back to the same build-compiled content if nothing has ever been cached; and treats an HTTP 200 response with no blocks field as a failure rather than an empty catalogue. None of that is available until the package ships.
What engineers ask first.
Does every block update require engineering?
No. Engineering is needed to define and integrate each supported block location, but content teams can manage later updates within that structure.
How is the app integrated?
Production integration today uses the REST API. Native SDKs for React Native, iOS, Android and Web are in preview and are not generally available. The @contentflow/cli package is not published yet.
How do Dynamic Blocks relate to Campaigns?
Dynamic Blocks define what the app can render, while Campaigns control targeting, scheduling, approvals, and experiments.
Shows up inside Campaigns.
Campaigns
Campaigns deploy Dynamic Blocks to selected audiences under controlled schedules and approval flows.
Dynamic Blocks is one of eight.
Production integration today uses the REST API. Native SDKs for React Native, iOS, Android and Web are in preview and are not generally available. The @contentflow/cli package is not published yet.