OmniStudio  ·   ·  6 min read

Omnistudio vs Custom LWC: How to Choose per Use Case

When to build with OmniScripts, FlexCards, Integration Procedures and Data Mappers, and when custom LWC and Apex win on performance, testing and skills.

On orgs with Industries licences we see two failure patterns. Either everything is an OmniScript, including screens that fight the designer at every step, or the developers quietly bypass Omnistudio and build LWCs that duplicate what an Integration Procedure already does. Both are expensive to maintain. The right answer is usually a mix, decided screen by screen.

A note on names: Salesforce now styles the product as Omnistudio in current docs, and DataRaptors became Data Mappers in Spring '24. We use the current names below.

What each tool is built for

OmniScripts

Guided, multi-step processes with branching: a broadband move, a claim intake, a policy endorsement. They give you step sequencing, conditional views, validation, save and resume, and prefill from Integration Procedures without writing UI code. They are generated as LWCs, so they run on Lightning pages and in Experience Cloud.

FlexCards

Data-bound cards that show a summary and offer actions: a customer's active subscriptions with "change plan" and "report fault" buttons. Their data sources are typically Integration Procedures, Data Mappers, Apex or SOQL. They are ideal for console layouts where an agent needs several small views of related data.

Integration Procedures

Server-side orchestration defined declaratively. One call can run several Data Mappers, HTTP callouts, conditional blocks and transforms, then return a single JSON response. They support response caching through Platform Cache, which matters a great deal for catalog and eligibility lookups.

Data Mappers

Declarative read, write and transform. Extract reads across related objects, Turbo Extract reads a single object quickly, Transform reshapes JSON or XML, and Load writes records.

Custom LWC and Apex

Full control over UI behaviour, client-side state, rendering and server logic. You write it, you test it, you own it.

Side-by-side comparison

FactorOmnistudioCustom LWC and Apex
Best fitGuided multi-step processes, data-bound cards, declarative orchestration of several data sourcesHighly interactive UI, complex client state, unusual layouts, heavy computation
Speed to first versionFast for standard patternsSlower; everything is built
Runtime performanceGood if Integration Procedures are cached and steps are lean; degrades with many sequential calls per stepAs fast as the code; Lightning Data Service and cacheable Apex help
MaintainabilityChanges in a designer; definitions are JSON, so code review and merge are harderCode in source control with normal review, linting and refactoring
SkillsOmnistudio developers and consultants; the JSON data model takes time to learnJavaScript and Apex developers, a larger hiring pool
LicensingIncluded with most Industry Cloud licences; usage metered in callsNo extra licence
TestingDesigner preview; Apex can call Integration Procedures; UI needs end-to-end automationJest for components, Apex unit tests with coverage gates
DeploymentMetadata API on the standard runtime; DataPacks on the managed packageMetadata API and Salesforce CLI

Performance: where Omnistudio gets slow

Omnistudio performance problems are almost always self-inflicted.

  • Too many calls per step. An OmniScript step that fires four Data Mappers and two Integration Procedures on load makes six server round trips. Collapse them into one Integration Procedure that returns everything the step needs.
  • No caching on reference data. Eligibility, product lists and address lookups rarely change within a session. Cache them in the Integration Procedure with session or org cache and the step loads in a fraction of the time.
  • Extract where Turbo Extract would do. For single-object reads without formulas, Turbo Extract is lighter.
  • Huge data JSON. OmniScripts carry their whole data JSON through every step. Prefill only what the process uses; do not pull an account's full order history into a five-step address change.

Custom LWCs have their own traps (unbounded Apex queries, chatty imperative calls), but the developer controls each one directly. When a screen needs sub-second interaction across hundreds of rows, such as a configurable grid with live recalculation, a custom LWC will outperform anything you can configure.

Maintainability is about review, not tooling

The underrated issue with Omnistudio is code review. An OmniScript or Integration Procedure is a large JSON definition. Two developers editing the same Integration Procedure in parallel produce merge conflicts that are hard to read and harder to resolve. Diffs in a pull request rarely tell a reviewer what actually changed in behaviour.

Mitigations that work:

  • One owner per Integration Procedure at a time, enforced through the work tracker.
  • Small, single-purpose Integration Procedures composed by a parent, rather than one 60-element monolith.
  • Strict versioning discipline: activate a new version, never edit the active one in production.
  • Moving to the standard runtime, where components deploy through the Metadata API and Salesforce CLI like everything else. If you are still on the managed package, our Vlocity to Salesforce Industries guide covers the move.

LWC and Apex fit standard engineering practice: pull requests, static analysis, unit tests and readable diffs. That is a real advantage on teams with strong developers and a mature pipeline, as described in our Salesforce DevOps best practices.

Skills and licensing shape the decision

Omnistudio rewards specialists. A good Omnistudio developer builds a guided process in days that would take weeks in LWC. A generalist JavaScript developer dropped into a large OmniScript is slower than they would be writing code.

Licensing is simpler than it looks. If you hold an Industry Cloud licence, Omnistudio is almost certainly included, with usage metered in calls against an org allowance. Confirm your call allowance before designing a high-volume public-facing script on it, since an Experience Cloud script hit by thousands of visitors a day consumes calls quickly. If you are on Sales Cloud or Service Cloud alone, Omnistudio is generally not included by default, and the case for buying it rarely rests on a handful of screens.

Testing is the weakest point of Omnistudio

There is no Jest equivalent for OmniScripts. In practice we test at three levels:

  • Integration Procedures through Apex. Write Apex tests that invoke the Integration Procedure with known input and assert on the output JSON. This catches most regressions and runs in your pipeline.
  • Data Mappers through the Integration Procedures that call them. Testing them in isolation adds little.
  • OmniScripts end to end. UI automation of the full process in a sandbox, on a small set of critical paths.

Custom LWCs get Jest tests for component logic and Apex tests for server code, both fast and both enforceable in CI. For teams that are serious about automated testing, this alone can tip a borderline screen towards LWC. The same trade-off shows up in automation, covered in Apex vs Flow.

The hybrid pattern most mature orgs settle on

The best Industries orgs we see do not choose one side. They use each where it is strongest:

  • OmniScript shell, custom LWC step. Step sequencing, branching and save/resume come from the OmniScript. The one hard step, such as a seat map or a network topology picker, is a custom LWC that extends OmniscriptBaseMixin and reads and writes the script's data JSON.
  • Custom LWC front end, Integration Procedure back end. A highly interactive component that calls a cached Integration Procedure for its data, so orchestration stays declarative and shared with other channels.
  • FlexCards in the console, LWC for the workbench. Summary cards with actions for service agents; a custom component for the dense, editable views specialists use all day.
  • Apex behind Integration Procedures for heavy logic. Remote Actions (implementing System.Callable on the standard runtime) for rules that would be painful to express as elements.

Our rule of thumb

Use Omnistudio when the screen is a guided process or a data summary with actions, when the same orchestration is reused across channels, and when your team has Omnistudio skills. Use custom LWC and Apex when the interaction is dense, the logic is algorithmic, or the component must be unit tested to a high standard. When in doubt, build the server side as an Integration Procedure. It keeps both options open for the front end.

Telecom examples of both patterns are in Communications Cloud for telecom use cases.

Fixholics builds OmniScripts, FlexCards and custom LWC and Apex components, and we regularly refactor slow OmniScripts and untestable Integration Procedures in existing orgs. If you need a second view on a specific screen or a full Omnistudio review, see our Omnistudio services.

Frequently asked questions

Are OmniScripts built on Lightning Web Components?

Yes. LWC OmniScripts and FlexCards are generated as Lightning Web Components at activation, which is why they can run in Lightning pages and Experience Cloud sites. You configure them in a designer rather than writing the component code, and you can embed your own LWCs inside them for steps the designer cannot handle.

Do I need an Industries licence to use Omnistudio?

Omnistudio access is included with most Industry Cloud base licences, and usage is metered in calls against an allowance tied to your edition. Orgs on Sales Cloud or Service Cloud alone generally do not have it by default. Confirm your entitlement with your Salesforce account team before designing around it.

Is a DataRaptor the same as a Data Mapper?

Yes. Salesforce renamed DataRaptors to Omnistudio Data Mappers in the Spring '24 release. The four types (Extract, Turbo Extract, Transform and Load) work the same way, and API names, fields and URLs that contain "dataraptor" were left unchanged so existing integrations keep working.

Can a Lightning Web Component call an Integration Procedure?

Yes. A custom LWC can invoke Integration Procedures and Data Mappers through the Omnistudio action framework, and an LWC embedded in an OmniScript can share the script's data JSON. This lets you keep server-side orchestration in an Integration Procedure while building a custom front end.

Talk it through with us.

If this describes your situation, a senior consultant will reply within one business day with a practical next step.