Skip to content

0.4.0

Choose a tag to compare

@github-actions github-actions released this 06 May 02:56

template-retail-rsc-app

  • Design layer: Wire contentLinkUuid through 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[].priceAdjustments alongside orderPriceAdjustments
  • Remove dead ssr.noExternal / ssr.target block from vite.config.ts — production SSR inlining is handled by the SDK's managedRuntimeBundlePlugin, and dev works with Vite's default ESM externalization
  • Standardize SCAPI requests error handling - Homepage
  • Add LoginModal component with support for password, passwordless, and social login modes
  • Move locale chunking from vite.config.ts into SDK i18nPlugin; remove TODO comment
  • Add login preferences middleware and context for managing email verification preferences
  • Remove manual contentLinkUuid type extensions in favor of SCAPI types
    • ComponentType now uses contentLinkUuid, fragment, localized, visible from Shopper Experience API v1.3.0
  • Document the use of dynamic images
  • Update Page Designer middleware and vite.config.ts to align with upstream @salesforce/mrt-utilities conditional 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, and scripts/aggregate-extension-locales.js with imports from @salesforce/storefront-next-runtime/i18n and sfnext 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 sh parameter 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_engagement when shoppers open agentic commerce from the header or search assistant; add useAnalytics().trackCommerceAgentEngagement, Einstein (viewPage + synthetic currentLocation) and Active Data (sfn-cagent-surface) adapter handling, default eventToggles keys, and config docs
  • Flatten default Card styling (drop default radius/shadow)
  • Multiship Guest Add Address now supports different addresses with same name
  • Standardize layout with section-container utility: 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, and b2c npm scripts; add @salesforce/b2c-cli dev 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.ts so 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 categoryId attribute is set
  • ProductCarousel: hide empty-state placeholder on live storefront; "Select a product" now only shown in Page Designer design mode
  • ProductCarousel: add categoryId and limit Page Designer attribute definitions; update cartridge metadata
  • Fix social login redirect flow and callback handler
  • Extend useSite() to return { site, language, locale, currency } and remove CurrencyProvider/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 phoneMobile in addition to phoneHome on 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, and action.set-currency into a single action.set-site-context route
  • 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 (headline and additionalinformation)
  • Handle all Page Designer API errors gracefully in pageLoader.ts to 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_base default @Component group, 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 → .yaml conversion from create-storefront CLI into mirror sync scripts; prepare-standalone-template.js now pins exact versions in minimumReleaseAgeExclude for all exempted packages
  • Extract i18n locale chunking into SDK Vite plugin (i18nPlugin): splits translation files into per-language chunks automatically
  • Add sfnext locales aggregate-extensions CLI command: generates per-locale barrel files aggregating extension translations under extPascalCase namespaces
  • Remove local data-store provider export/build artifacts and rely on @salesforce/mrt-utilities data-store behavior
  • Update sfnext dev to forward Node --conditions (from process.execArgv and NODE_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.json to .gitignore to prevent credentials from being accidentally committed
  • Replace dotenv dependency with Node built-in util.parseEnv and process.loadEnvFile; consolidate .env loading into the oclif init hook
  • Add sfnext config inspect command: shows a config.server.ts override summary — which values are overridden by .env and MRT PUBLIC__ vars
  • Remove unused /callback route
  • Enable future.unstable_optimizeDeps in 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 scapi CLI used to support generating and managing custom API clients in template projects
  • Fix generate-cartridge to scan config-metadata/ for aspect type definitions (pdp.json, plp.json) after recent move from src/
  • Align generate-cartridge and static registry with template Page Designer defaults: storefrontnext_base default group, Layout/Content component folders and type ids

storefront-next-runtime

  • Design layer: Add contentLinkUuid support for duplicate component handling
    • Make contentLinkUuid required on component interaction events (select, delete, move, hover, focus)
    • Add fragmentId support to drag-and-drop events for content block instances
    • Design state fields (selected, hovered, focused) now expose contentLinkUuid as the primary identifier instead of componentId
    • Regions track contentLinkUuids instead of componentIds, enabling correct self-drop detection and drag validation for duplicate components
  • Bump @salesforce/mrt-utilities to 0.1.6 to fix strict express@5.1.0 peer dependency (now accepts ^4.0.0 || ^5.0.0)
  • Update Shopper Experience API spec to v1.3.0 with contentLinkUuid field support
    • Add contentLinkUuid to Component schema for content link UUID tracking
    • Add name, fragment, localized, visible fields to Component schema
    • Regenerate TypeScript types for all SCAPI clients
    • Remove unused @ts-expect-error directives from page processor now that schema includes the missing fields
  • Add /i18n and /i18n/client subpath exports: createI18nMiddleware, getTranslation, getLocale, mockI18nContext, initI18next, and shared defaultInterpolation
  • Unify data-store access on DataStore.getDataStore().getEntry() from @salesforce/mrt-utilities/data-store; remove legacy provider abstraction/local fallback paths and related tests
  • Re-export DataStore and data-store error types from @salesforce/mrt-utilities/data-store to align runtime APIs with upstream package structure
  • Add CommerceAgentEngagementEvent (commerce_agent_engagement) to the AnalyticsEvent union for agentic commerce usage tracking (surface: header | search)
  • Add login preferences middleware and context to data store
  • Extend SiteProvider to accept site, language, locale, currency props and useSite() to return SiteContextValue
  • Add support to MRT Data Layer access
  • Add currency detection to site-context middleware
  • Add runtime support for custom API client typing and proxy client composition
  • Add support for OOTB API Key for Google Address Autocomplete feature from MRT Data Layer