Digital Experience Site for React UI Bundles
Create and configure Digital Experience Sites that host React UI bundles on Salesforce. This skill generates the minimum necessary site infrastructure — Network, CustomSite, DigitalExperienceConfig, DigitalExperienceBundle, and the
content type — so a React app can be served from Salesforce.
React sites differ from standard LWR sites: they don't need routes, views, theme layouts, or branding sets. The site acts as a thin container (
) that delegates rendering to the React UI bundle referenced by
.
Required Properties
Resolve all five properties before generating any metadata. Each has a fallback chain — work through each option in order until a value is found.
| Property | Format | How to Resolve |
|---|
| siteName | (e.g., ) | Ask user or derive from context |
| siteUrlPathPrefix | (e.g., ) | User-provided, or convert siteName to all lowercase with alphanumeric characters only |
| appNamespace | String | in → sf data query -q "SELECT NamespacePrefix FROM Organization" --target-org ${usernameOrAlias}
→ default |
| appDevName | String | metadata in the project → sf data query -q "SELECT DeveloperName FROM UIBundle" --target-org ${usernameOrAlias}
→ default to siteName |
| enableGuestAccess | Boolean | Ask user whether unauthenticated guest users can access site APIs → default |
The
and
properties connect the site to the correct React application. Getting these wrong means the site deploys but shows a blank page, so take care to resolve them from real project data.
Generation Workflow
Step 1: Resolve All Required Properties
Determine values for all five properties before constructing anything. Use the resolution strategies in the table above, falling through each option until a value is found.
Step 2: Create the Project Structure
Use available Salesforce metadata schema and field context for
,
,
, and
to ensure each file uses valid structure.
Create any files and directories that don't already exist, using these paths:
| Metadata Type | Path |
|---|
| Network | networks/{siteName}.network-meta.xml
|
| CustomSite | sites/{siteName}.site-meta.xml
|
| DigitalExperienceConfig | digitalExperienceConfigs/{siteName}1.digitalExperienceConfig-meta.xml
|
| DigitalExperienceBundle | digitalExperiences/site/{siteName}1/{siteName}1.digitalExperience-meta.xml
|
| DigitalExperience (sfdc_cms__site) | digitalExperiences/site/{siteName}1/sfdc_cms__site/{siteName}1/*
|
The DigitalExperience directory contains only
and
. Do not create any directories other than
inside the bundle.
Step 3: Populate All Metadata Fields
Use the default templates in the docs below. Values in
are resolved property references — substitute them with the actual values from Step 1.
| Metadata Type | Template Reference |
|---|
| Network | configure-metadata-network.md |
| CustomSite | configure-metadata-custom-site.md |
| DigitalExperienceConfig | configure-metadata-digital-experience-config.md |
| DigitalExperienceBundle | configure-metadata-digital-experience-bundle.md |
| DigitalExperience (sfdc_cms__site) | configure-metadata-digital-experience.md |
For URL updates, see update-site-urls.md.
Execution Note for Step 3: Load and use the docs
- Agents MUST read the full contents of each docs/*.md file referenced in Step 3 before attempting to populate metadata fields.
- Use your platform's file-read tool (for example, ) to load these files in full, then perform placeholder substitution for values in using the resolved properties from Step 1.
- Files to load:
docs/configure-metadata-network.md
docs/configure-metadata-custom-site.md
docs/configure-metadata-digital-experience-config.md
docs/configure-metadata-digital-experience-bundle.md
docs/configure-metadata-digital-experience.md
- Read entire file contents, replace placeholders (e.g. ) with the resolved values, then use the expanded templates to populate the metadata XML/JSON content.
Step 4: Do Not Modify Non-Templated Properties
Do not modify any default property values for
,
,
,
, or
metadata that are not expressed as variables wrapped in
.
Verification Checklist
Before deploying, confirm:
bash
sf project deploy validate --metadata Network CustomSite DigitalExperienceConfig DigitalExperienceBundle DigitalExperience --target-org ${usernameOrAlias}
Common Workflows
Updating Experience Site URLs
Use when user wants to update or change site URLs (urlPathPrefix).
Steps: