The wait is officially over. Salesforce Multi-Framework is Generally Available (GA) as of July 16, 2026.
For years, building web applications directly on the Salesforce platform meant adhering exclusively to Lightning Web Components (LWC) or Aura. While LWC remains the high-performance default for declarative, Lightning App Builder-driven experiences, enterprise teams have increasingly asked for flexibility: Can we run our existing React component libraries natively on Salesforce without hacky iFrames or external hosting?
Today, the answer is a resounding yes.
Multi-Framework brings a framework-agnostic runtime to the platform. You can now build, deploy, and execute React applications natively on Salesforce-backed by automatic authentication, platform governance, and direct access to CRM data via GraphQL and Apex.
Multi-Framework isn't just a container; it's a first-class execution environment built into the salesforce.app domain origin, ensuring hard browser security boundaries via the native Same-Origin Policy.
When you initialize a net-new Multi-Framework project using the ui-bundle template in the SFDX CLI or Agentforce Vibes, you get a modern web stack pre-configured out of the box:
sf template generate ui-bundle --name myReactApp
The resulting bundle lives in force-app/main/default/uiBundles and includes:
One of the biggest friction points of running React externally was managing OAuth flow, token refreshes, and API gateways.
With Multi-Framework running natively inside the authenticated org context, authentication is implicit. The updated Data SDK leverages native platform session context-meaning your code never touches, stores, or refreshes access tokens.
Here is how straightforward a GraphQL query looks inside a React component:
import { useEffect, useState } from 'react';
import { DataSDK } from '@salesforce/platform-sdk';
export default function AccountList() {
const [accounts, setAccounts] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
async function fetchAccounts() {
const QUERY = `
query getAccounts {
uiapi {
query {
Account(first: 10) {
edges {
node {
Id
Name { value }
Industry { value }
}
}
}
}
}
}
`;
try {
// Direct .query() call using implicit org session context
const response = await DataSDK.query({ query: QUERY });
const recordList = response.data.uiapi.query.Account.edges.map(e => e.node);
setAccounts(recordList);
} catch (error) {
console.error('Error querying Salesforce data:', error);
} finally {
setLoading(false);
}
}
fetchAccounts();
}, []);
if (loading) return Loading records...;
return (
{accounts.map(acc => (
-
{acc.Name.value}
{acc.Industry.value || 'N/A'}
))}
);
}
If you started building during the open beta, here are the key updates you need to account for in production deployments:
@salesforce/platform-sdk, splitting read/write calls explicitly into .query() and .mutate() methods.Multi-Framework doesn't deprecate Lightning Web Components. LWC remains the foundational, highly optimized framework for standard Lightning pages, App Builder drag-and-drop flexibility, and base SLDS component usage.
| Capability | Lightning Web Components (LWC) | React (Multi-Framework) |
|---|---|---|
| Primary Data Access | @wire & Lightning Data Service | @salesforce/platform-sdk (GraphQL / Apex) |
| Component Ecosystem | 80+ Native Salesforce Base Components | Full npm ecosystem (shadcn/ui, MUI, Tailwind) |
| App Builder Support | Full drag-and-drop placement (GA) | Programmatic / Custom App (App Builder in preview) |
| Target Audience | Salesforce Specialists & Admins | Cross-platform Web & React Engineers |
| Local Dev Tooling | LWC Local Development | Native Vite & Vitest at localhost:5173 |
Use LWC when building standard CRM extensions that require App Builder placement or rely on standard Salesforce UI patterns. Reach for React when onboarding frontend engineering teams, migrating existing React web apps into Salesforce, or building highly custom user interfaces using standard web packages.
To start building today, verify that your org has Multi-Framework enabled under Setup > React Development with Salesforce Multi-Framework, pull down the latest sf CLI plugin, or explore the updated samples in the Salesforce Multi-Framework Recipes Repo.