Build1 publisher2 min readPublished
Content zones let a marketer swap a native app's hero banner without shipping a build
Salesforce's Sneha Singla describes one personalization architecture behind iOS, Android, React Native and Flutter, in which developers register the native components and the zones they may fill, and marketers choose the rest.
The Engineer · Build desk

What happened
- Salesforce's engineering blog ran a Q&A with Sneha Singla, a director of software engineering, on one real-time mobile personalization architecture serving iOS, Android, React Native and Flutter apps.
- Developers instrument an app once, creating stable placeholders called content zones and registering approved native components such as hero banners or recommendation carousels with layout constraints.
- Marketers then configure templates, content, targeting and component selection from the Salesforce UI.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- capability Campaign changes ship on the console's clock for anything the registered catalog already covers, skipping a build, a store review and customer installs.
- constraint The registry sets the ceiling. A new component type or a new zone position is still code, so the zone and constraint vocabulary chosen at instrumentation time is the expensive decision.
- cost Supporting React Native and Flutter means maintaining bridge layers against two native SDKs that keep moving. That upkeep lands on whoever owns the mobile SDK, not the marketer.
- exposure Stitching anonymous-to-known activity across web, email and mobile means a race condition could write one customer's browsing history into another customer's profile.
A Flutter call into this SDK renders in native code. The bridge layer forwards it to the native API exposed through iOS or Android, and the thing that draws on screen is a native component a developer registered in advance [4][7]. One API surface can sit in front of four stacks with different lifecycles, networking and secure storage because the rendering always resolves to native code [6]. The team also held schemas, event semantics, identity behavior and fallback handling identical across all four [5].
The boundary of the split is the registry. A marketer can pick templates, content, targeting and which registered component appears, all from the Salesforce UI [8], and the choices stop at what a developer registered [7]. Salesforce's post says the alternative path is a developer modifying the app, publishing another version, and waiting for customers to install it before the new experience arrives [9]. So the release still gates the component catalog and the positions a component may occupy; the configuration inside those positions moves at console speed. The layout constraints developers attach to each zone are what stop a console-side change from destabilizing a native screen [7].
Sneha Singla, a director of software engineering at Salesforce, said: "The nightmare was not one difficult mobile engineering problem. It was that a failure anywhere, whether identity resolution, framework integration, native rendering, consent, or deployment, could show the wrong experience, destabilize the app, or make personalization disappear when a customer changed channels." [2] The account lists six problems the team solved at once, and constrained rendering is one of them, beside cross-channel identity and marketer autonomy [3]. The post describes how the bridge layer and the instrumentation split work [4][7]. Identity stitching as anonymous users become known, prevention of race conditions and duplicate histories, and consent scope are stated as requirements [11][12][13].
The evidence offered is one early customer: two months to implement, more than 150 million decisions within three weeks [10]. Divide it out and that is more than 7.1 million decisions a day, roughly 83 a second sustained [14]. For that rate to mean the same thing in another app, a decision has to count the same thing. If each content zone evaluated on a screen view emits one, an app with four zones on its home screen books four times the decisions of an app with one, at identical traffic [7].
The scenario the post uses to justify the work is mundane and correct: a customer browses Italian food on a website, opens the brand's app seconds later, and gets a generic experience because the context did not follow them [16].
What to watch
- Whether Salesforce publishes how identity resolution and consent scoping work, which the Q&A states as requirements.
- Whether the component registry stays developer-owned, or marketers eventually add component types from the console.
- A second named customer with a decision count and a stated definition of what one decision counts.