How reactive screen flows work in Salesforce, and how to build one with Avonni components.
.gif)
Reactive screen components arrived in Flow Builder as a beta in Summer '23 and became generally available in Winter '24. Here's what changed: components on the same screen can now react to each other without a server round-trip on every interaction. Historically, clicking "Next" sent all input to Salesforce servers, processed it, and returned results. This created friction in long-form flows: additional latency, potential validation errors, and decision fatigue.
Traditional Salesforce Flow is server-centric. Every user action triggers communication with Salesforce servers: "The user picked a value. Let me send that to the server. The server processes it. The server returns a result. Now I can show the next screen."
That's fine for simple, linear flows. But for complex, interactive scenarios, where users make selections that should immediately reveal or hide other options, it's slow. Each click means a network round-trip. On a slow connection, that's noticeable. On a fast connection, it's still unnecessary latency.
Reactive Components shift logic to the client side (the browser). When a user selects a color in a Visual Picker, the browser instantly shows or hides related Carousel components. No server involved. No waiting. No round-trip.
This is what "reactive" means: components react to each other's state changes instantly, client-side, without server communication.
Reactive Components shift this to client-side. All components read each other's state instantly. You consolidate multiple screens into one, reducing Next button clicks and keeping users in a single UI context.
Benefits:
Server round-trips aren't free. A typical flow screen with a Next button creates latency measured in hundreds of milliseconds. With a slow network, that's easily 1-2 seconds per screen. A five-screen flow might take 10 seconds just waiting for servers.
Reactive components remove most of that wait: values and visibility rules that depend on other components on the same screen update instantly, in the browser. Data that has to come from Salesforce no longer needs a new screen either. Since Winter '25, the Action Button component runs an autolaunched flow, such as a Get Records, and shows its results on the same screen.
Classic use case: Industry picklist drives Country picklist. User selects "Technology," and only countries with tech operations appear in the Country dropdown. With reactive components, that filtering happens instantly, no server call needed.
Configure this by setting the Country picklist's visibility condition: "Show only if Industry equals Technology." When the user changes Industry, Country options update instantly.
You have an Avonni Data Table showing all Opportunities. A Visual Picker above the table lets users filter by Stage. When the user selects "Closed Won," the table instantly shows only Closed Won opportunities. With the Avonni query data source, the table re-runs its query as soon as the picker changes, so the filtering happens on the server and stays fast on large datasets.
A form includes multiple sections: Personal Info, Company Info, Billing Address. A Radio Button asks "Are you an individual or company?" If "Individual," hide Company Info and Billing Address. Show only Personal Info. This happens instantly as the user toggles the Radio Button.
An input form for a quote. User enters Quantity and Unit Price. A reactive Display component instantly calculates Total = Quantity × Unit Price, showing the result without a Next button or server round-trip.
Show advanced options only when a user clicks "Show Advanced Settings." Behind the scenes, you're just toggling visibility of sections, with no server logic needed. Users see a cleaner initial form, but full power is available.
For a step-by-step tutorial on reactive filtering with Data Tables, see how to build reactive screen flows with Avonni data components.
A visibility condition only reads values already on the screen; it can't query Salesforce. When the screen needs fresh data from the server, add an Action Button that runs an autolaunched flow, or use an Avonni component with a query data source, which re-runs its query when its inputs change.
Reactive Components let you collapse many screens into one. That's powerful. But don't collapse everything. If a screen becomes too complex (too many conditional sections, too many options), users get lost. Use reactive for related, interactive elements. Use traditional Next buttons to progress through distinct logical phases.
A visibility condition like "Show if PickerA equals Value1 AND TableB has rows AND DateField is after Today" can get complex fast. Test every permutation. Make sure the right components appear and disappear as expected.
When components appear and disappear reactively, screen readers and keyboard users need clear cues about what changed. Label your components clearly. Make sure users can navigate via keyboard alone. Test with assistive technology.
Most flows use both. Start with a reactive screen for immediate, client-side interactions. Use Next buttons to progress to server-dependent logic or new logical phases.
Set up an Avonni Visual Picker (color selection) paired with multiple Avonni Carousel components (one per color). When a user selects a color, only that color's carousel renders.

Add a new Screen element to your flow canvas.
Drag the Avonni Visual Picker onto the screen. Configure with manual data source: one item per color (label + value).

Add one Avonni Carousel per color, each displaying images for that color variant.

Select each Carousel. In properties, set Set Component Visibility to respond to the Visual Picker output. Example: show the white carousel only when visualPickerColor equals "white". Repeat for each color.

Save and run the flow in Flow Builder. Toggle colors in the Visual Picker. Carousels appear and disappear instantly, with no Next button required. This delivers the interactive experience without server latency.
Start free with 10 production licenses. All 3 Avonni packages included.