Releases: SalesforceCommerceCloud/storefront-next-template
Release list
1.0.1 SDK / June 2026 template
template-retail-rsc-app
Patch Changes
-
Generated projects now ship with Einstein and Active Data analytics adapters disabled by default, with the analytics site identifiers (realm/siteId/einsteinId/etc.) blanked in
config.server.ts. Reconfigure these with your own credentials to enable the adapters — Einstein-powered recommendation carousels stay offline until then. -
Updated dependencies:
- @salesforce/storefront-next-dev@1.0.1
- @salesforce/storefront-next-runtime@1.0.1
Full Changelog: v2026.6.0...v2026.6.1
@salesforce/storefront-next-dev
Patch Changes
-
Remove pilot/beta service disclaimers and pilot-only documentation links from package READMEs now that Storefront Next is generally available at v1.0.0. The retail template README now points to the published developer docs at developer.salesforce.com instead of the gated pilot docs site.
-
Updated dependencies:
- @salesforce/storefront-next-runtime@1.0.1
@salesforce/storefront-next-runtime
Patch Changes
- Remove pilot/beta service disclaimers and pilot-only documentation links from package READMEs now that Storefront Next is generally available at v1.0.0. The retail template README now points to the published developer docs at developer.salesforce.com instead of the gated pilot docs site.
1.0.0 SDK / June 2026 template
template-retail-rsc-app
Minor Changes
-
Move
<WishlistProvider>from the global_app.tsxshell to route-local mounts via a new<DeferredWishlistProvider>helper. Routes that render wishlist UI (home, PDP, PLP, search, cart) hydrate their own provider via the loader; routes without wishlist UI (about-us, account/* non-wishlist pages, order confirmation) no longer pay the SCAPIgetOrCreateWishlistcost on cold load.<WishlistMergeToast>stays at the app shell. -
Add
useScapiFetchClient/useScapiFetchHelperhooks and<WishlistProvider>: small UI mutations (e.g. PLP heart click) now hit a generic SCAPI resource route viafetchinstead ofuseFetcher, so they no longer trigger React Router loader revalidation. Wishlist initial state is seeded once at the app shell behind<Suspense>/<Await errorElement>, so SCAPI failures still render the page 200 with empty hearts. Hydrates wishlists for both guest (gcid) and registered (rcid) sessions. Provider exposes topic-scoped subscription hooks (useIsInWishlist,useWishlistEntry,useWishlistCount,useWishlistIds,useWishlistActions) backed byuseSyncExternalStoreso a single heart toggle re-renders only that one tile, not every other heart in the grid -
Tighten the
@salesforce/storefront-next-runtime/configpublic surface for V1 GA.**Removed from public exports** (followups to): - `ConfigContext` — internal React context backing `useConfig`. Read config via `useConfig` instead. - `createAppConfig` — one-line `.app` accessor with no semantic value. Use `staticConfig.app` directly. - The `middleware.ts` source file and `createAppConfigMiddleware` factory were also deleted; they had B2C-Commerce-specific validation hardcoded in (`commerce.api.{clientId,organizationId,shortCode}`, `SCAPI_PROXY_HOST`) and the retail template ships its own validating middleware. Future templates write their own. **Added** — `AppConfigShape` interface as a module-augmentation hook for `getConfig` / `useConfig` typing. Each template `declare module`s once in its own types file and gets typed access without the per-call `<AppConfig>` generic: ```ts // In your template's src/types/config.ts: declare module '@salesforce/storefront-next-runtime/config' { interface AppConfigShape extends AppConfig {} } ``` **Other changes** - `Locale`, `Site`, `Url` JSDoc reframed as opt-in baseline shapes — `BaseConfig<App>` is generic so future templates can ignore them. - `defineConfig` JSDoc now explicitly notes it reads `process.env` at call time (server-only side effect). - `mergeEnvConfig`'s engagement-specific protected-paths error message is now generic. - Retail-flavored examples in `schema.ts` / `utils.ts` JSDoc neutralized. - Template (`template-retail-rsc-app`): all 110+ `getConfig<AppConfig>` / `useConfig<AppConfig>` call sites now use the augmented hook (no per-call generic). - Template `commerce.sites: Site[]` now imports the richer `Site` shape from `@salesforce/storefront-next-runtime/site-context` (reconciles the duplicate `Site` types that existed across both subpaths). - `contact-info.tsx` migrated from `useContext(ConfigContext)` to `useConfig` (the only production caller of the bypass pattern). - README-CONFIG.md fixed: `loadConfig` subpath was wrong (`/load-config` → `/config/load-config`); `appConfigContext` now documented for custom middleware composition; `AppConfigShape` augmentation pattern documented. Public surface delta: 13 runtime + 5 type exports → 5 + 6 (plus `loadConfig` at the separate `./config/load-config` subpath). > **Semver note for future maintainers:** This entry is a `minor` bump _only because the package is still pre-V1 GA_. Removing public exports is a `major` once V1 ships — do not paste this pattern after lock-in. -
Replace current icons with actual brands logos that adhere to their design guideline
-
Centralize all route path strings into
src/route-paths.ts. Renaming a route segment (e.g.,/product→/p) now requires changing a single constant instead of updating 60+ files across the codebase. -
Support wildcard (
*) patterns inPUBLIC__app__hybrid__legacyRoutes.*matches any path content (including/) — so/categoryLv1/*matches the entire subtree instead of having to enumerate every URL. Combinable with named params (e.g./category/:cat/*), and*may appear anywhere in the pattern, not just trailing. Note that/parent/*does not match the bare/parent(no trailing slash) — list/parentseparately if you need both. Exact paths and:parampatterns are unchanged. -
Add a
.devcontainer/devcontainer.jsonso customer-generated retail projects open one-click in GitHub Codespaces or any Dev Containers-compatible IDE. Pins Node 24 (mcr.microsoft.com/devcontainers/typescript-node:24-bookworm) and activatespnpm@10.28.0via Corepack, forwards the dev server (5173, auto-opens preview) and Storybook (6006), and auto-installs the recommended VS Code extension pack (ESLint, Prettier, Tailwind, Playwright, Vitest, Salesforce DX, Commerce Vibes). The Commerce Vibes VSIX is downloaded from a versioned GitHub Release asset and verified against a sha256 checksum, so the installed extension can't drift if the upstream tag is moved or the asset replaced; the install runs inpostAttachCommandso it survives Codespace restarts that wipe/tmp. Workspace ESLint config also disablesjsonc/no-commentsfordevcontainer.jsonsince the Dev Container spec defines the file as JSONC. -
Add a heart icon to the header that takes shoppers to their wishlist. Guests land on
/wishlist; signed-in shoppers land on/account/wishlist. -
Add a public Wishlist page so guest shoppers can view items they've saved before signing in. Signed-in customers continue to see their wishlist under the account section. An empty guest wishlist now shows a Sign in link to load saved items from the account.
-
Add
action.otp-requestandaction.otp-verifyroutes for OTP verification flow -
Add Einstein product recommendations to the cart page: render "You might also like" (driven by basket items) and "Recently viewed" carousels below the cart line items, reusing the existing
<ProductRecommendations>component and theEINSTEIN_RECOMMENDERS.CART_*constants -
Add server action hooks extension system: extensions can register handlers that run at specific points in checkout server actions (fraud checks, address verification, payment tokenization, shipping method filtering) via
target-config.json -
Add support for optional hard request timeouts to the SCAPI clients
-
Added wishlist analytics events for add, remove, view, merge.
-
Align auth cookie names with PWA Kit so hybrid sf-next + SFRA storefronts share session semantics:
customerId→customer_id,encUserId→enc_user_id,cc-idp-at→idp_access_token. Sf-next now reads, writes, and clears the new names; older browsers may still hold the legacy cookies for one TTL window (up to 90 days forencUserId, ~30 min forcc-idp-at) — they are ignored and expire on their own.customer_idremains write-never (derived per request from the SLAS access token JWTisbclaim); the destroy path clears it on logout/error. HttpOnly posture and the missing PWA Kit cookies (cc-at-expires,cc-nx-expires,customer_type,idp_refresh_token,id_token,uido) are out of scope and tracked for follow-up. -
Align CSS color tokens with the Figma design system: rewrite
core.cssfrom the Figma "Market Street" tokens JSON, split nested palettes (sidebar,agentic) into dedicated files, dedupestatus.css, fix dangling Tailwind aliases, replace remaining hard-coded hex usages -
Allow guest shoppers to add and remove items from the wishlist without signing in: clicking the heart on a product no longer redirects to login, the secondary "Add to wishlist" CTA on the product detail page works for guests, and cart line wishlist hearts stay filled across refresh for guests. The guest
/wishlistpage and merge-on-sign-in flow ship in follow-up PRs. -
Block checkout when cart items exceed available inventory: added cart-wide validation that disables the "Continue to Checkout" button and displays an error banner when any items exceed available stock (ATS or store inventory for BOPIS). Supports bonus product exclusion and proper ARIA attributes for accessibility
-
Cart line right column: Reworked the
ProductItemprice column so list and sale prices stay on one horizontal row with right alignment, hid theProductPricepromotion callout on cart lines (no long promo copy under prices), and tightened the Saved badge with smaller typography plus analignEndwrapper so it sits flush right. The quantity block usesCartQuantityPickerwith aw-fitwrapper and right-aligned desktop stacking (items-end). Line-item trailing adds the gift row at the end of the right column: checkbox, "This is a gift." label, and a "Learn more" text control (no URL) styled like the label with a narrow gap between label and learn-more; locale strings drop the colon from the quantity label and carry gift copy only. -
Email Verification Feature - Account Details
-
Implement change email flow for passwordless shoppers. Passwordless shoppers are prompted for OTP verification before editing their email and again after the update to verify ownership and reauthenticate the session
-
Merge a guest's wishlist into their account wishlist on sign-in, sign-up, OTP verification, or social login. Items the shopper saved while browsing as a guest are copied to the account wishlist (skipping duplicates by product), the guest list is cleaned up, and a confirmation toast appears on the destination page. Items that fail to copy are skipped without blocking the redirect, and a partial-success message tells the s...
0.4.2
template-retail-rsc-app
- Version bump to v0.4.2
Full Changelog: v0.4.1...v0.4.2
storefront-next-runtime
- Bump
@salesforce/mrt-utilitiesto 0.2.1
0.4.1
template-retail-rsc-app
- Version bump to v0.4.1
Full Changelog: v0.4.0...v0.4.1
storefront-next-runtime
- Make
@react-router/devand@react-router/fs-routesoptional peer dependencies to avoid dependency conflicts for consumers that only use the/designexports
0.4.0
template-retail-rsc-app
- Design layer: Wire
contentLinkUuidthrough regions and story fixtures to support content blocks - Cart line item: Restore the edit button for non-standard, non-bonus products alongside the newly added wishlist toggle and remove action.
- Broke down app.css into a more organized system for readability and discoverability
- Cart line item: Removed the edit action from the line card, added an inline wishlist add/remove toggle, removed the product description block, and removed the delivery pill so the row focuses on image, title, attributes, price, and quantity.
- Fix promotions always showing as 0 in order summary and order confirmation when only item-level discounts are applied — now includes
productItems[].priceAdjustmentsalongsideorderPriceAdjustments - Remove dead
ssr.noExternal/ssr.targetblock fromvite.config.ts— production SSR inlining is handled by the SDK'smanagedRuntimeBundlePlugin, and dev works with Vite's default ESM externalization - Standardize SCAPI requests error handling - Homepage
- Add
LoginModalcomponent with support for password, passwordless, and social login modes - Move locale chunking from
vite.config.tsinto SDKi18nPlugin; remove TODO comment - Add login preferences middleware and context for managing email verification preferences
- Remove manual
contentLinkUuidtype extensions in favor of SCAPI typesComponentTypenow usescontentLinkUuid,fragment,localized,visiblefrom Shopper Experience API v1.3.0
- Document the use of dynamic images
- Update Page Designer middleware and
vite.config.tsto align with upstream@salesforce/mrt-utilitiesconditional export flow (no local Vite alias requirement) - Standardize behaviors of API errors in Checkout
- Migrate i18n infrastructure to SDK: replace
src/lib/i18next.ts,src/lib/i18next.client.ts, andscripts/aggregate-extension-locales.jswith imports from@salesforce/storefront-next-runtime/i18nandsfnext locales aggregate-extensions - Fix locale bundle bloat, SSR 404 plain-text response, and homepage links ignoring active locale on error pages
- [UX Fix] Promo code component to match design
- Mini cart item UX refresh: update product/price hierarchy, stack quantity controls, and improve long promotion wrapping behavior
- Standardize action error handling with semantic error codes: actions return structured
{ code, message }errors instead of plain strings - Extract Vitest config into dedicated
vitest.config.ts, inline coverage thresholds - Add support for optional
shparameter to dynamic images - [UX Fix] Fix broken radius overriding system, and minor UX changes according to design
- Prefix all checkout UITarget targetIds with
sfcc. - Analytics: emit
commerce_agent_engagementwhen shoppers open agentic commerce from the header or search assistant; adduseAnalytics().trackCommerceAgentEngagement, Einstein (viewPage+ syntheticcurrentLocation) and Active Data (sfn-cagent-surface) adapter handling, defaulteventToggleskeys, and config docs - Flatten default
Cardstyling (drop default radius/shadow) - Multiship Guest Add Address now supports different addresses with same name
- Standardize layout with
section-containerutility: consolidate responsive padding, max-width, and centering into a single reusable class - Update checkout CTA text
- Update performance-related documentation
- Ensure
<Link/>,<NavLink/>, and<useNavigate/>also rewrite index routes - Prevent unnecessary navigation menu re-renders
- My Account: overview "rate recent purchases" card (below recent orders) linking to order details; order details per-line Rate & Review using the PDP write-review modal, with "Review submitted" state after submit
- Update style for Deliver to Multiple Addresses button
- Fix re-render cycles on PDP due to shared Suspense boundary
- User registration verified badge and spinner
- Update order summary UX
- UX changes on checkout page
- Bug fix to allow Canadian saved shipping address
- My Account: Hide auto-generated address IDs and remove Address Title field; show customer name with Default badge instead
- Add
config:inspect,config:push-env, andb2cnpm scripts; add@salesforce/b2c-clidev dependency for MRT environment variable management - Add support for OOTB API Key for Google Address Autocomplete feature in production instances
- Remove unused /callback route
- Remove unused Page Designer dev proxy from vite.config.ts
- Rename server-only source files to
.server.tsso the React Router build plugin enforces the server/client boundary at compile time - Checkout: Shipping method styling as per UX
- Added SDD (Spec-Driven Development) support with multi-agent code generation
- ProductCarousel: fix category-driven product fetching in Page Designer — loader now correctly invoked when
categoryIdattribute is set - ProductCarousel: hide empty-state placeholder on live storefront; "Select a product" now only shown in Page Designer design mode
- ProductCarousel: add
categoryIdandlimitPage Designer attribute definitions; update cartridge metadata - Fix social login redirect flow and callback handler
- Extend
useSite()to return{ site, language, locale, currency }and removeCurrencyProvider/useCurrency() - Add Cloudflare Turnstile bot protection integration for passwordless login with graceful degradation
- Remove
'use client'directives from template app source files - Save checkout user info for new user consistently
- Save phone number to
phoneMobilein addition tophoneHomeon customer profile update - Calculate basket after OTP verification
- Update accessibility baseline and fix accessibility violations on order list page
- Consolidate
action.set-site,action.set-locale, andaction.set-currencyinto a singleaction.set-site-contextroute - Clean up RSC/React Server Components references from documentation, comments, and config
- Remove internal "odyssey" codename references from codebase
- Add template support for registering and calling custom APIs through generated SCAPI clients
- Add configurable navigation menu options
rootCategoryId,maxDepth - Fix Vite dev server warnings for font loading from public directory
- Restored Page Designer aspect definitions for PDP and PLP
- Added fallback functionality for Core Region component and added two regions on AboutUs page region (
headlineandadditionalinformation) - Handle all Page Designer API errors gracefully in
pageLoader.tsto prevent dev server crashes - Add comprehensive checkout E2E tests for registered shopper flows: saved/new payment methods, View All/View Less pagination, save card to profile, shipping address modal (add/edit), non-default address selection, shipping method change, billing address selection, basket persistence across sessions, and Place Order button visibility
- Add SCAPI helper utilities for API-based registered shopper setup (register, login via PKCE, create address, update profile, add payment instrument) to speed up E2E test setup
- Page Designer:
storefrontnext_basedefault@Componentgroup, Layout/Content groups, resolved region type refs for inclusions/exclusions; updated cartridge metadata and static registry - Hero Banner: Page Designer Overlay Position (nine placements: top/middle/bottom × left/center/right) and Overlay Alignment (text/CTA left, center, right); updated cartridge metadata
- Hero Banner: Page Designer Title Typography, Subtitle Typography, optional Title/Subtitle Color (hex), and Button Style (Primary/Secondary/Tertiary) for the CTA; hide CTA when link is empty; derive default CTA label from URL; legacy horizontal overlay values map to the nine-position grid; updated cartridge metadata
Full Changelog: v0.3.1...v0.4.0
storefront-next-dev
- Move
pnpm-workspace.yaml.hbs → .yamlconversion fromcreate-storefrontCLI into mirror sync scripts;prepare-standalone-template.jsnow pins exact versions inminimumReleaseAgeExcludefor all exempted packages - Extract i18n locale chunking into SDK Vite plugin (
i18nPlugin): splits translation files into per-language chunks automatically - Add
sfnext locales aggregate-extensionsCLI command: generates per-locale barrel files aggregating extension translations underextPascalCasenamespaces - Remove local data-store provider export/build artifacts and rely on
@salesforce/mrt-utilitiesdata-store behavior - Update
sfnext devto forward Node--conditions(fromprocess.execArgvandNODE_OPTIONS) into Vite client + SSR resolution for conditional exports - Fix HMR cascade in static registry plugin: skip unnecessary file writes and module reloads when registry content is unchanged
- Add
dw.jsonto.gitignoreto prevent credentials from being accidentally committed - Replace
dotenvdependency with Node built-inutil.parseEnvandprocess.loadEnvFile; consolidate.envloading into the oclifinithook - Add
sfnext config inspectcommand: shows aconfig.server.tsoverride summary — which values are overridden by.envand MRTPUBLIC__vars - Remove unused /callback route
- Enable
future.unstable_optimizeDepsin React Router preset to fix duplicate React module crash on dev server startup - Add local dev support to MRT Data Layer
- Clean up RSC/React Server Components references from documentation and comments
- Fix incorrect SSR sourcemaps for files sharing a basename in local dev debugger
- Remove internal "odyssey" codename references from codebase
- Add
sfnext scapiCLI used to support generating and managing custom API clients in template projects - Fix
generate-cartridgeto scanconfig-metadata/for aspect type definitions (pdp.json, plp.json) after recent move fromsrc/ - Align...
0.3.1
template-retail-rsc-app
- Fix fresh installs —
pnpm installno longer fails on newly generated storefronts due totrustPolicyandminimumReleaseAgeconflicts with certain packages. - Update GitHub workflows — Fixed
build-bundleaction anddeploy.ymlfor Page Designer CI.
Full Changelog: v0.3.0...v0.3.1
storefront-next-dev
- Fix fresh installs —
create-storefrontnow copiespnpm-workspace.yamldirectly from the template instead of generating it dynamically, ensuring generated storefronts always have the correct supply chain settings.
storefront-next-runtime
No changes.
0.3.0
Template
Features
- Add multi-site URL integration with locale-aware routing
- Add URL base path prefix support
- Add
hreflangmanagement for multi-locale SEO - Add canonical tags for SEO
- Add meta tags support
- Add Open Graph and social metadata
- Add JSON-LD structured data placement at bottom of body
- Add OTP (one-time password) login
- Add password reset via email mode
- Add user registration flow
- Returning user checks out as guest
- Add returning shopper one-click checkout
- Add save payment for registered shoppers
- Add change payment in checkout
- Add view all saved payments on account page
- Add multiple addresses: add new address
- Add multiple addresses: edit address
- Save newly registered user's address and payment information
- Add wishlist item controls
- Add wishlist and share icons to PDP
- Add wishlist functionality on PLP matching PDP behavior
- Add PLP filters section
- Add quick filters for PLP
- Store PLP filter options and open/close state in URL
- Add order and shipping status display
- Add order details enhancement for Market Street
- Add order history pagination
- Add cart item allocation limit enforcement
- Add checkout code splitting for improved performance
- Add checkout activity event tracking
- Add app download QR code component
- Add shopper agent component
- Integrate shopper agent icon on header
- Add FAQ UI component on PDP
- Add shopping assistant on search
- Integrate FAQ and shopping assistant on search with chat window
- Add account agent help
- Add suggested products section in account pages
- Add server-side basket prefill
- Add support for editing marketing consent with bulk update
- Add support for making phone number editable
- Add
contentLinkUuidsupport for Page Designer components - Add localized and visible flags to Page Designer component processing
- Add content manifest locale-aware visibility and content resolution
- Add collapsible product sections on PDP
- Add more Smart Connector qualifiers support
- Add OpenTelemetry server-side instrumentation
- Add pino structured logging for server-side requests
- Add structured logging to middlewares, loaders, and actions
- Standardize template logging with centralized logger
- Add fetch logging for SCAPI requests
- Pass dynamic site/locale to ActiveData adapter
- Add guard rail for multi-site middleware
- Remove
config.commerce.api.siteIdin favor of multi-site context - Add axe-core full-page accessibility testing with desktop and mobile coverage
- Move E2E tests and testing framework to the template
- Add e2e tests for shipping address modal add/edit
- Add Playwright tests for passwordless login
- Enable source-mapped stack traces for production builds
UX & Styling
- Update cart components to match design system
- Cart and mini cart UX updates
- Update OrderSummary and ProductCartActions components
- Upgrade PDP main section with UX uplift
- PDP fit and finish UI improvements
- Refactor ProductTile to match latest designs with functional and a11y changes
- UX changes in product card on PLP
- Market Street UX uplift
- Update header and home page components for Market Street design
- Update footer to match Market Street design
- Remove theme switcher from footer
- Remove foundations themes
- Remove site-switcher from header
- Update app.css to have Market Street as the default
- Update font families and sizes to match Figma design system
- Make fonts
display:optionalfor bots to improve TBT - Update mega-menu default orientation to vertical with animation updates
- Update contact info section styling and validations
- Update shipping address component styling and validation
- Update shipping method component styling
- Update payments and billing address styling
- Update Place Order styling with conditional and responsive layout
- Update user registration box styling
- Update Order History styling for Market Street
- Update quick links layout to match Figma
- Update payment methods and store preferences on account page
- Fixed styling of search suggestions section
- Radio control shape on store locator
- Remove variant styling on alert and buttons
- Express payment buttons refactoring
Fixes
- Remove internal "odyssey" codename references from codebase
- Remove redundant customer lookup
- Fix bundle size and set add to cart
- A11y fixes
- Fix basket prices not recalculating on currency change
- Fix CLS in checkout
- Fix race condition in checkout by showing loading state
- Merge basket after standard login
- Fix multiple session cookies when tracking consent is accepted
- Fix multi-site stale cookie updates
- Fix customer ID not updating on login state change in hybrid mode
- Fix shipping option currency
- Fix custom payment info not handled properly
- Keep payment fields blank for new checkout
- Fix user registration box layout
- Fix shipping address creating duplicates for returning shoppers
- Fix BOPIS PLP store selection
- Fix Popular Categories component in Page Designer
- Fix dynamic image rendering in Page Designer
- Fix horizontal aligned components rendering vertically in design mode
- Fix Page Designer default value mismatches and eliminate default duplication
- Revert hardcoded badge in Page Designer
- Remove pd-button from droppable component list
- Fix Grid column naming
- Fix error page text overflow on long error messages
- Remove hard-coded locale from i18next middleware and locale-switcher
- Remove nested basket provider in checkout
- Prevent URL prefix settings from being overridden by env variables
- Fix config import error messages and soften env var validation
- Rename
MultiSitetoSiteContextacross SDK and template - Rename
SFNEXT_LOG_LEVELenv var toSFCC_LOG_LEVEL - Update default site name to "Storefront Next: Market Street"
- Simplify
baseUrlto always use direct SCAPI URLs - Refactor store locator to server-first cookie management
- Fix type checking for generated storefronts
- Fix duplicate slashes in E2E URLs when
BASE_URLhas a trailing slash - Pin axios to exact version 1.13.4 in e2e package
- Fix tsconfig not found error in e2e package
Full Changelog
storefront-next-dev
Features
- Add hybrid proxy for Storefront Next local development
- Add multi-site compatibility for hybrid proxy and legacy-routes middleware
- Add
validate-cartridgecommand for Page Designer metadata validation - Add plugin to strip server-only code from client bundles and vice-versa
- Add MRT-compatible console span exporter for OpenTelemetry
- Add health check endpoint handler with package metadata
- Standardize SDK development logging
- Modernize deploy workflow and update env var precedence
- Add URL base path prefix support to dev server, Vite config, and build plugins
- Supply chain hardening
- Upgrade Express to 5.x for MRT utilities compatibility
Fixes
- Suppress benign sourcemap warnings in production builds
- Clean up
resolveConfigusage and add missingdeploy-cartridgeflags - Use runtime config for MRT bundle globs
- Fix create-storefront E2E first-time experience
storefront-next-runtime
Features
- Move config setup into runtime package
- Add multi-site URL integration with locale-aware routing
- Move
stripPathPrefixutility to runtime
Fixes
- Rename
MultiSitetoSiteContextacross SDK and template
0.2.0
0.1.1
v0.1.0
Initial release of Template Storefront Next
Important
Storefront Next is a pilot or beta service that is subject to the Beta Services Terms at Agreements - Salesforce.com or a written Unified Pilot Agreement if executed by Customer, and applicable terms in the Product Terms Directory. Use of this pilot or beta service is at the Customer's sole discretion.
What's Included
- React Server Components (RSC) architecture with Vite
- React Router v7 with file-based routing
- Tailwind CSS v4 for styling
- Salesforce Commerce Cloud SDK integration
- Reference retail storefront implementation
Packages
| Package | Version |
|---|---|
template-retail-rsc-app |
0.1.0 |
@salesforce/storefront-next-dev |
0.1.0 |
@salesforce/storefront-next-runtime |
0.1.0 |
Getting Started
# Clone using the release tag for version pinning
git clone --branch v0.1.0 --depth 1 \
https://github.com/SalesforceCommerceCloud/storefront-next-template.git my-storefront
cd my-storefront
# Set up environment
cp .env.default .env
# Edit .env with your Commerce Cloud credentials
# Install dependencies
pnpm install
# Start development server
pnpm devAlternatively, checkout the release-0.1.x branch for the latest patches:
git clone --branch release-0.1.x \
https://github.com/SalesforceCommerceCloud/storefront-next-template.git my-storefrontFull Changelog: First release