- Updated search UX - prices, images, suggestions new layout #3271
- Updated the UI for StoreDisplay component which displays pickup in-store information on different pages. #3248
- Added warning modal for guest users when toggling between multi ship and ship to one address. [3280] (#3280) [3302] (#3302)
- Add support for environment level base paths on /mobify routes #2892
- Remove deprecated properties from useDNT in commerce-sdk-react #3177
- This feature introduces an AI-powered shopping assistant that integrates Salesforce Embedded Messaging Service with PWA Kit applications. The shopper agent provides real-time chat support, search assistance, and personalized shopping guidance directly within the e-commerce experience. #2658
- [Breaking] Added support for Multi-Ship #3056 #3199 #3203 [#3211] (#3211) #3217 [#3216] (#3216) [#3231] (#3231) [#3240] (#3240)
- The feature toggle for partial hydration is now found in the config file (
config.app.partialHydrationEnabled) #3058 - Mask user not found messages to prevent user enumeration from passwordless login #3113
- [Bugfix] Pin
@chakra-ui/reactversion to 2.7.0 to avoid breaking changes from 2.10.9 #2658 - Introduce optional prop
hybridAuthEnabledto control Hybrid Auth specific behaviors in commerce-sdk-react #3151 - Inject sfdc_user_agent request header into all SCAPI requests for debugging and metrics prupose #3183
- Fix config parsing to gracefully handle missing properties #3230
- [Bugfix] Fix unit test failures in generated projects 3204
- Improved the layout of product tiles in product scroll and product list #2446
- Update the configuration of datacloud #2467
- [a11y] Ensure voiceover announces contents of the email confirmation modal #2540
- Updated 6 new languages #2495
- Fix Einstein event tracking for
addToCartevent #2558 - Password Reset and Passwordless Integration Test #2669
- Update latest translations for all languages #2616
- Added support for Buy Online Pick up In Store (BOPIS) #2646 #2716 #2726 #2629 #2823
- Load active data scripts on demand only #2623
- Provide base image for convenient perf optimizations #2642
- Support saving billing phone number on user registration from order confirmation #2653
- Support saving default shipping address on user registration from order confirmation #2706
- Minor updates to support BOPIS E2E tests #2716
- Provide conditional support for partial hydration (feature flag
PARTIAL_HYDRATION_ENABLED) #2696 #2846 - Show Automatic Bonus Products on Cart Page #2704 #2760 #2815
- [Breaking] Support Standard Products 2697
- Introduce store locator #2542
- Fix passwordless race conditions in form submission #2758
- Use
<picture>element for responsive images #2724 - Add Data Cloud partyIdentification events and improve error handling #2811
- Introduce the cursor rules to assist project developers #2820
- Fix hreflang alternate links #2269
- PDP / PLP: Add page meta data tags that have been defined in BM #2232
- Send PWA Kit events to Data Cloud #2318
- Fix dependencies vulnerabilities #2338
- Fix accessibility issues #2375
- Update cc-datacloud-typescript package to use a fixed lock version #2392
- Add Confirm New Password input field to Reset & Change Password flows #2395
- Update the configuration of datacloud #2467
- Update PWA-Kit SDKs to v3.9.1 #2301
- DNT Consent Banner: #2203
- Support Node 22 #2218
- Implemented opt-in Social & Passwordless Login features and fixed the Reset Password flow which now leverages SLAS APIs [#2079] (#2079)
- Allow store to be selectable in StoreLocator #2187
- Replace transfer basket call with merge basket on checkout #2138
- [BUG] Fixed GET /shopper-context API calls being made without the usid #2206
- Update test data references to 2024, and unify to 01/2040 #2196
- Fixed failing checkout tests #2195
- [BUG] Fixed "getCheckboxProps is not a function" when rendering checkout page in generated app.#2140
- [BUG] Fix images being fetced multiple times on Safari #2223
- [a11y] Fix LinkList component to follow a11y practise [#2098])(#2098)
- Implement ability to set Shopper Context via search parameters in the Retail React App #1986
- Display a promo banner from Page Designer in the PLP page of the Retail React App #2016
- Clear auth state if session has been invalidated by a password change #2092
- PLP: When products are being refetched, only the pricing and promotions sections will display a skeleton in the ProductTile #2064
- Remove ocapi session-bridging on phased launches #2011
- [Server Affinity] - Attach dwsid to SCAPI request headers & remove OCAPI proxy #2090
- Announce wishlist change in total for screen readers (a11y) #2033
- Fixed a bug that incorrectly imports uninstalled package
@chakra-ui/layout#2047 - Replace getAppOrigin with useOrigin to have a better support for an app origin building. #2050
- PWA Kit projects have Active Data tracking set to "true" by default #1983.
- The unused
njwtnpm package had a security vulnerability, since it was unused, the package has been dropped - Remove save/edit billing action in checkout page for the registered user #1976
- Product scroller: don't skip tiles if window is too large #2003
- PDP / PLP: Render non HTTP 404 erros #2003
- Error page: Render home page when clicking nav icon #2003
- Encode non ASCII HTTP headers when
encodeNonAsciiHttpHeadersflag is set to true inssr.js#2009 - Updated @salesforce/commerce-sdk-react to 3.0.1 to fix an issue with the expires attribute of cookies, ensuring it uses seconds instead of days #1994
- [a11y] Hide svg from screenreader as they are decorative on homepage #1980
- [a11y] Hide log out svg from screenreader as they are decorative #2000
- [a11y] Ensure heading level matches the heading's visual importance/level #2000
- [a11y] Provide a descriptive dialog title for Mobile Navigation Header #2000
- Hide breadcrumb chevrons from screen readers #1965
- Add descriptive text for screen readers on product edit modal in cart page #1965
- A11y: Fix search bar header element focus order #1969
- A11y: Order Details - hide decorative image and convert some p tags as proper headings #2026
- Add aria-labels for buttons in product item wishlist component to ensure they are unique and descriptive. #2023
- Focus onto the
ToggleCardtitle whenever the component is opened to be editted #2029 - Add descriptive acccessibility label for edit/remove buttons on account addresses and checkout pages #2037
- [a11y] Mobile view account menu a11y adjustments #2059
- [a11y] PLP - Use header tags for filter options #2065
- Update serialized query data via
beforeHydrateto prevent data re-fetching on load #1912 - Out of stock and low stock items are removed from cart and checkout as unavailable products #1881
- Fix infinity sign price on product tile #1903
- Remove unecessary params from product search #1873
- Improve accessibility readout for strikethrough price on shipping options in checkout page #1892
- Ensure credit card informational tooltip on checkout page persists after the user is no longer hovering over it #1890
- A11y: Add aria-label to the address form based on the address type #1904
- A11y: Account Nav fixes #1884
- A11y: Replace
<p>tags with header tag in home page Features section #1902 - Add aria-label for Checkout's action buttons #1906
- Avoid forced focus changes that are not user-initiated #1940
- Fix StorefrontPreview component add siteId query parameter to shopper context calls #1891
- Ensure that the email field on the checkout page receives focus after content updates #1894
- Fix basket transfer during checkout login #1887
-
Product Tile Revamp
- Display different pricing for various products on Product tiles and PDP #1760
- Display pricing for cart, checkout and wishlist page #1796
- Shows promotional callout message on Product List and Product Detail pages #1786 #1804
- Display selectable swatch groups for attributes like color #1773
- Show badges #1791
-
Lazy basket creation #1677
-
Use
stale-while-revalidatecache control directive #1744
- Added live region support to components #1825
- Replace p tag with heading tags in cart page #1818
- Fix product tile img alt text #1769
- Add aria-hidden to search icon #1809
- Add explicit headers to cart modal #1811
- Add autocomplete to text input fields #1840
- Add error icon to error messages #1839
- Fix seo component not settings keywords meta tag #1762
- Fix RecommendedProducts' toggling of the favourite icon #1861
- Update dependency commerce-sdk-react to 1.4.1 to have access to all params keys for Shopper Search #1750
- Add Support for SLAS private flow #1722
- Fix promo codes not being properly applied in cart #1692
- Fix checkout shipping method fetching #1693
- Fix invalid query params warnings #1655
- Fix internal server error on account pages #1675
- Fix
product-itemcomponent imports to ensure that it is overridable. #1672 - Fix locale selector navigating back to default locale #1670
- Fix handling of offline products on Cart, Checkout, Order History, and Wishlist pages #1691
- Fix tracking of
viewSearchevent for Einstein analytics, in the case of no-search-results #1702 - Remove invalid header
_sfdc_customer_iddue to recent MRT HTTP3 upgrade #1731
- Fix
extract-default-translationsscript #1647
- Add correct keyboard interaction behavior for variation attribute radio buttons #1587
- Change radio refinements (for example, filtering by Price) from radio inputs to styled buttons #1605
- Update search refinements ARIA labels to include "add/remove filter" #1607
- Improve focus behavior on my account pages, address forms, and promo codes #1625
- Add local development support for node 20 #1612
- Support for node 20 is not yet available on Managed Runtime
- Display selected refinements on PLP, even if the selected refinement has no hits #1622
- Ensure the ListMenuTrigger component applies ARIA attributes to the correct element for the trigger icon #1600
- Ensure form fields and icons have accessible labels #1526
- Ensure active user interface components have sufficient contrast #1534
- Fix outline on keyboard focus #1536
- Fix improper nesting of elements in product tile #1541
- Ensure all interactive functionality is operable with the keyboard #1546
- Make security code tooltip receive keyboard focus #1551
- Improve accessibility of quantity picker #1552
- Improve keyboard accessibility of product scroller #1559
- Fix focus indicator for hero features links on homepage #1561
- Ensure color is not the sole means of communicating information #1570
- Improve keyboard accessibility of account menu and nav bar #1572
- Add Active Data files, update pages (app index.jsx, product list and product details pages) to trigger events on product category and product detail views #1555
- Replace max-age with s-maxage to only cache shared caches #1564
- Implement gift option for basket #1546
- Added option to specify
isLoginPagefunction to thewithRegistrationcomponent. The default behavior is "all pages ending in/login". #1572 - Update
extract-default-messagesscript to support multiple locales #1574 - Update engine compatibility to include npm 10 #1597
- Add support for localization in icon component #1609
- Fix checkout allowing you to proceed to review with invalid billing address #1632
- Fix password change functionality #1634
- Remove internal linter rule that is missing in generated projects #1554
- Fix bug where you can add duplicates of the same item to the wishlist. Also fixes bug where skeleton appears when removing last item from the wishlist. #1560
- Replace max-age with s-maxage to only cache shared caches #1564
- Fix PLP filters for mobile #1565
- Use the new opt-in mechanism for enforcing the default security headers required by PWA Kit projects. #1528
- Support Storefront Preview
- Show discounted and strikethrough prices when there is a promotion on product detail page 1455
- Move Content-Security-Policy logic to pwa-kit-runtime 1457
- V3 Fix checkout card number #1424
- Cleanup wrong import path for page-designer component #1441 @clavery
- Modularize country code source for targeting via extensibility #1445 @bfeister
- Export icon helper function for target via overrides #1420 @cbrother-csu
- Migrate Page Designer core types to commerce-sdk-react #1441 @clavery
- Fix price display when a discounted price is zero #1361
- Fix price adjustments of a line item when more than one is present #1362
- Registered user checkout should set order with an email #1363
- First public release of package on npm under
@salesforce/retail-react-app - Upgrade React v18, React DOM v18, React-hook-form v7, and Chakra 2 libraries #1166
- Add app
above-headerand product-listabove-page-headerconvenience components #1183 - Migration to "hooks" /
@salesforce/commerce-sdk-reactintegration follow the upgrade guide and view the diff
The versions published below were not published on npm, and the versioning matched that of the PWA Kit SDK. These versions did not use the @salesforce namespace.
- Replace invalid row value with nowrap #1179
- Add a redirect to login page after user signs out from checkout page #1172
- PWA Kit should have a mechanism for replacing the access token when a SFRA login state is changed #1171
- Added session bridge call to login for phased launch #1159
- Fix Page Designer ImageWithText Link component #1092
- Remove site alias and locale from location.state.directedFrom path #1065)
- Product list refinements #957
- Prevent modal to open when it fails to add an item to cart #1053
- Make
mergeBasketconditional more robust #1048 - Fix addresses not having preferred address first. #1051
- Changed type of the phone number field to bring up numberic keyboard on mobile devices - W-9871940 #1016)
- Add Page Designer ImageTile component #967
- Add Page Designer ImageWithText component #991
- Add Page Designer carousel component #977
- Add Page Designer layout components #993
- Support the product-set type #1019
- Mega menu fixes #875 and #910
- Cache SLAS callback using request processor #884
- Fix padding of footer drawer component #899
- Update createOrder to send SLAS USID #920
- Fix PropTypes #924
- Remove unnecessary map statement #929
- Add instanceType to Einstein activity body #858
- Do not use a proxy to call Einstein #857
- Einstein handle variants #867
- Fix cc exp year #874
- Dynamic footer Copyright date #741
- Footer copyright: remove the remaining hardcoded year #760
- ImageGallery uses image.link when DIS is not set #786
- Use default locale as target if none is specified #788
- Password change bug fix #803
- pwa-kit-dev command for tailing logs #789
- Update usages of zzrf-001 ODS instance to the new short URL format #816
- Fix locale
aliasby includinglocaleobject inside the MultiSite Context. #716 - Updated translations. #725
- Add new Einstein API activities. #714
- Fix search field to recognize
“&”character. #736 - Fix filters on search results page. #742
- Dynamic footer copyright date. #741
- Bugfix: image gallery thumbnails not working without DIS #786
- Ensure that a valid target locale is use if none is provided #788
- Update zzrf-001 url #694
- Optimize Server-side performance #667
- Remove references to session bridging #684
- Update translations #643
- Update translations #653
- Add bundlesize test back into CI #652
- Fix UI bug on notifications badge #620
- Update translation docs #570
- Fixed loading correct amount of skeletons [#576] (#576)
- Remove manifest path #582
- Fix Verbose ShellJS Command #588
- Drop node 12 support for #589
- Multi-site, Fix the case when no site aliases is set #551
- Fix invalid refresh token #528
- Add valid token check before using refresh token on login #533
- Fix localization scripts to output to the correct default locale #539
- Merge guest cart and registered cart #540
- Move retail react app jest setup out from pwa-kit-dev #545
- Remove legacy remote proxy, which allowed remote environments to use proxy configs in package.json #425
- Rename 'pwa' directory into 'template-retail-react-app' #485
- Optimize visibility-off.svg #512
- Support Multi-site implementation using dynamic config #469
- Service worker loading for dev server #464
- Environment Specific Configuration Support #477
- Support storing authentication tokens in cookie #429
- Make sure the forgot-password modal also shows up in the checkout flow #373
- On Windows, the locale selector dropdown in the footer now showing all of the options properly #381
- Import cross-fetch to make OCAPI client isomorphic #382
- Multi-site implementation for Retail React App #391
- Do not send HSTS header during local development #288
- Add constants for
<meta>tagstheme-colorandapple-mobile-web-app-title#287 - Upgrade to React 17 #278
- Import preliminary translations #324
- Remove old dependencies that are no longer used #317
- Remove Einstein from home page #208
- Add git2gus config to allow git2gus integration 210
- Set common HTTP security headers #263
- Add message ids to all the translated text, so they provide context for the translators #239 #207 #195
- Minor translation fixes 260 #252
- Provide Url Customization for the Retail React App #228
- Add an image component to allow for easier-implementation of responsive images #186
- Add shop Products section with products from the Catalog #216
- Remove
upgrade-insecure-requestsfor local development #270 - Fix the missing out-of-stock message on mobile screens #231
- Fix order summary prices on the check out page misaligned on mobile #233
- Skip irrelevant jobs on CI on forked PR #237 #240
- Add webpack plugin #255
- Combine config files #256
- Improve unsupported locale error message #225
- Add github template #226
- Fix shipping method description overflows the price section #232
- Fix show applied promotion codes case sensitive issue #224
- Fix section subtitle incorrect prop warning #282
- Simplify homepage for Retail React App #201
- Ensure
cookieIdvalue is sent always for Einstein recommendations #179 - Remove
x-powered-byHTTP response header #165 - For search engine crawlers, add
hreflanglinks to the current page's html #137 - Use the preferred currency when switching locales. #105
- Integrate wishlist with einstein recommended products. #131
- When adding a new locale, minimize configuring the locale selector UI by having a list of commonly-used locales #175
- Enable adding wishlist item to the cart. #158
- Rename CartItemVariant to ItemVariantProvider #155
- Enabling pseudo locale now affects only the loading of the translation messages. The rest of the app still knows about English and the other locales. #177
- Allow individual Commerce API calls to pass in a different locale/currency and override the global value. #177
- Fix regression with loading the correct translation file #193
- Upgrade
chakra-ui/reactto^1.7.1version. #204 - Rename the
extract-messagesandcompile-messagescommands toextract-default-translationsandcompile-translations#160 - Enable favourite icons on product tiles for guest users #173
- Fix Missing Locale Param for Commerce API Calls #174
- Add cache control header to product details page #172
- Clear SLAS tokens when OID is changed #178
- Fix wishlist bugs and provide better hooks for wishlist features. #64
- Lazy load Popover component. #134
- Fix pseudo local command to use
en-XB. #101 - Ensure generated projects ship with a working .gitignore file. #95
- Remove eslint rule which check for Salesforce copyright. #104
- Improve error page design. #74
- Localize cart and checkout messages. #106
- Add default cache control header to home page. #103
- Security -
inquirerpackage upgrade. #121 - New quantity picker. #102
- PWA Kit General Availability and open source. 🎉