@salesforce/commerce-sdk-react
TypeScript icon, indicating that this package has built-in type declarations

3.3.0 • Public • Published

📢 Hey there, Salesforce Commerce Cloud community!

We’re excited to hear your thoughts on your developer experience with PWA Kit and the Composable Storefront generally! Your feedback is incredibly valuable in helping us guide our roadmap and improve our offering.

📋 Take our quick survey here: Survey

Feel free to share this survey link with your colleagues, partners, or anyone who has experience with PWA Kit. Your input will help us shape the future of our development tools.

Thank you for being a part of our community and for your continuous support! 🙌

Commerce SDK React

A collection of react-query hooks for fetching, caching, and mutating data from the Salesforce B2C Commerce API (SCAPI).

⚠️ Planned API Changes ⚠️

Shopper Context

Starting July 31st 2024, all endpoints in the Shopper context API will require the siteId parameter for new customers. This field is marked as optional for backward compatibility and will be changed to mandatory tentatively by January 2025. You can read more about the planned change here in the notes section.

Shopper Login (SLAS)

SLAS will soon require new tenants to pass channel_id as an argument for retrieving guest access tokens. You can read more about the planned change here.

Please be aware that existing tenants are on a temporary allow list and will see no immediate disruption to service. We do ask that all users seek to adhere to the channel_id requirement before the end of August to enhance your security posture before the holiday peak season.

In practice, we recommend:

  • For customers using the SLAS helpers with a private client, it is recommended to upgrade to v3.0.0 of the commerce-sdk-react.

🎯 Features

  • Shopper authentication & token management via SLAS
  • Server side data fetching (in conjuction with PWA Kit)
  • Phased Launch support (plugin_slas compatible)
  • Built-in caching for easy state management
    • automatic cache invalidations/updates via the library's built-in mutations
    • automatic cache key generation

⚙️ Installation

npm install @salesforce/commerce-sdk-react @tanstack/react-query

⚡️ Quickstart (PWA Kit v3.0+)

To integrate this library with your PWA Kit application you can use the CommerceApiProvider directly assuming that you use the withReactQuery higher order component to wrap your AppConfig component. Below is a snippet of how this is accomplished.

// app/components/_app-config/index.jsx

import {CommerceApiProvider} from '@salesforce/commerce-sdk-react'
import {withReactQuery} from '@salesforce/pwa-kit-react-sdk/ssr/universal/components/with-react-query'

const AppConfig = ({children}) => {
    const headers = {
        'correlation-id': correlationId
    }

    return (
        <CommerceApiProvider
            clientId="12345678-1234-1234-1234-123412341234"
            organizationId="f_ecom_aaaa_001"
            proxy="localhost:3000/mobify/proxy/api"
            redirectURI="localhost:3000/callback"
            siteId="RefArch"
            shortCode="12345678"
            locale="en-US"
            currency="USD"
            headers={headers}
            // Uncomment 'enablePWAKitPrivateClient' to use SLAS private client login flows.
            // Make sure to also enable useSLASPrivateClient in ssr.js when enabling this setting.
            // enablePWAKitPrivateClient={true}
            logger={createLogger({packageName: 'commerce-sdk-react'})}
        >
            {children}
        </CommerceApiProvider>
    )
}

// Set configuration options for react query.
// NOTE: This configuration will be used both on the server-side and client-side.
// retry is always disabled on server side regardless of the value from the options
const options = {
    queryClientConfig: {
        defaultOptions: {
            queries: {
                retry: false
            },
            mutations: {
                retry: false
            }
        }
    }
}

export default withReactQuery(AppConfig, options)

⚡️ Quickstart (Generic React App)

You can use this library in any React application by creating a new QueryClient and wrap your application with QueryClientProvider. For example:

import {CommerceApiProvider} from '@salesforce/commerce-sdk-react'
import {QueryClient, QueryClientProvider} from '@tanstack/react-query'

const App = ({children}) => {
    const queryClient = new QueryClient()

    return (
        <QueryClientProvider client={queryClient}>
            <CommerceApiProvider
                clientId="12345678-1234-1234-1234-123412341234"
                organizationId="f_ecom_aaaa_001"
                proxy="localhost:3000/mobify/proxy/api"
                redirectURI="localhost:3000/callback"
                siteId="RefArch"
                shortCode="12345678"
                locale="en-US"
                currency="USD"
            >
                {children}
            </CommerceApiProvider>
        </QueryClientProvider>
    )
}

export default App

Shopper Authentication and Token Management

💡 This section assumes you have read and completed the Authorization for Shopper APIs guide.

To help reduce boilerplate code for managing shopper authentication, by default, this library automatically initializes shopper session and manages the tokens for developers. Commerce-sdk-react supports both the SLAS Public Client login flow and SLAS Private Client login flow. Authorization using a private client is supported in PWA Kit 3.5 and later, and is the recommended authorization workflow.

Using a private SLAS client

To enable a private client, see Use a SLAS Private Client.

Shopper Session Initialization

On CommerceApiProvider mount, the provider initializes shopper session by initiating the SLAS Public Client login flow. The tokens are stored/managed/refreshed by the library.

Authenticate request queue

While the library is fetching/refreshing the access token, the network requests will queue up until there is a valid access token.

Login helpers

To leverage the managed shopper authentication feature, use the useAuthHelper hook for shopper login.

Example:

import {AuthHelpers, useAuthHelper} from '@salesforce/commerce-sdk-react'

const Example = () => {
    const register = useAuthHelper(AuthHelpers.Register)
    const login = useAuthHelper(AuthHelpers.LoginRegisteredUserB2C)
    const logout = useAuthHelper(AuthHelpers.LogOut)

    return <button onClick={() => {
        login.mutate({username: 'kevin', password: 'pa$$word'})
    }}>
}

Externally Managed Shopper Authentication

You have the option of handling shopper authentication externally, by providing a SLAS access token. This is useful if you plan on using this library in an application where the authentication mechanism is different.

const MyComponent = ({children}) => {
    return <CommerceApiProvider fetchedToken="xxxxxxxxxxxx">{children}</CommerceApiProvider>
}

Hooks

The majority of hooks provided in this library are built on top of the useQuery and the useMutation hook from react-query. React-query provides a declarative way for fetching and updating data. This library takes advantage of the features provided by react-query and combine with the commerce-sdk-isomorphic API client to create a collection of hooks to simplify data fetching for SCAPI.

The hooks can be categorized into Query hooks and Mutation hooks.

Query hooks

The query hooks correspond to the http GET endpoints from the SCAPI. The query hooks follow the signature pattern:

use<EntityName>(CommerceClientOptions, ReactQueryOptions)

Both the required and optional parameters for the underlying commerce-sdk-isomorphic call is passed as the first parameter:

import {useProduct} from '@salesforce/commerce-sdk-react'

const Example = () => {
    const query = useProduct({
        parameters: {
            id: '25592770M',
            locale: 'en-US'
        }
    })

    return (
        <>
            <p>isLoading: {query.isLoading}</p>
            <p>name: {query.data?.name}</p>
        </>
    )
}

The second parameter is the react-query query options, for more detail, read useQuery reference.

import {useBasket} from '@salesforce/commerce-sdk-react'

const onServer = typeof window === undefined

const Example = ({basketId}) => {
    const query = useBasket(
        {
            parameters: {
                basketId: basketId
            }
        },
        {
            // A common use case for `enabled` is
            // to conditionally fetch based on environment
            enabled: !onServer && basketId
        }
    )
}

Mutation hooks

The query hooks correspond to the http POST, PUT, PATCH, DELETE endpoints from the SCAPI. The mutation hooks follow the signature pattern:

use<ApiName>Mutation(EndpointName)

For example, the ShopperBaskets API has a number of endpoints, one of them being the addItemToBasket endpoint (POST /baskets/{basketId}/items).

import {useShopperBasketsMutation} from '@salesforce/commerce-sdk-react'

const Example = ({basketId}) => {
    // Typescript IDE intellisense for available options
    const addItemToBasket = useShopperBasketsMutation('addItemToBasket')

    return (
        <button
            onClick={() =>
                addItemToBasket.mutate({
                    parameters: {
                        basketId
                    },
                    body: {
                        productId: '25592770M',
                        price: 55,
                        quantity: 1
                    }
                })
            }
        />
    )
}
useCustomMutation

The useCustomMutation hook facilitates communication with the SCAPI custom endpoint. It has a different signature than the other declared mutation hooks.

Parameters
  • options (Object): Configuration for the API request.

    • method (String): The HTTP method to use (e.g., 'POST', 'GET').
    • customApiPathParameters (Object): Contains parameters to define the API path.
      • endpointPath (String): Specific endpoint path to target in the API.
      • apiName (String): The name of the API.
  • clientConfig (Object): Configuration settings for the client.

    • parameters (Object): Essential parameters required by the Salesforce Commerce Cloud API.
      • clientId (String): Your client ID.
      • siteId (String): Your site ID.
      • organizationId (String): Your organization ID.
      • shortCode (String): Short code for your organization.
    • proxy (String): Proxy address for API calls.
  • rawResponse (Boolean): Determines whether to receive the raw response from the API or a parsed version.

mutate Method

The mutation.mutate(args) function is used to execute the mutation. It accepts an argument args, which is an object that may contain the following properties:

  • headers (Object): Optional headers to send with the request.
  • parameters (Object): Optional query parameters to append to the API URL.
  • body (Object): Optional the payload for POST, PUT, PATCH methods.
Usage

Below is a sample usage of the useCustomMutation hook within a React component.

const clientConfig = {
    parameters: {
        clientId: 'CLIENT_ID',
        siteId: 'SITE_ID',
        organizationId: 'ORG_ID',
        shortCode: 'SHORT_CODE'
    },
    proxy: 'http://localhost:8888/mobify/proxy/api'
};

const mutation = useCustomMutation({
    options: {
        method: 'POST',
        customApiPathParameters: {
            endpointPath: 'test-hello-world',
            apiName: 'hello-world'
        }
    },
    clientConfig,
    rawResponse: false
});

// In your React component
<button onClick={() => mutation.mutate({
    body: { test: '123' },
    parameters: { additional: 'value' },
    headers: { ['X-Custom-Header']: 'test' }
})}>
    Send Request
</button>

It is a common scenario that a mutate function might pass a value along to a request that is dynamic and therefore can't be available when the hook is declared (contrary to example in Mutation Hooks above, which would work for a button that only adds one product to a basket, but doesn't handle a changeable input for adding a different product).

Sending a custom body param is supported, the example below combines this strategy with the use of a useCustomMutation() hook, making it possible to dynamically declare a body when calling a custom API endpoint.

import {useCustomMutation} from '@salesforce/commerce-sdk-react'
const clientConfig = {
    parameters: {
        clientId: 'CLIENT_ID',
        siteId: 'SITE_ID',
        organizationId: 'ORG_ID',
        shortCode: 'SHORT_CODE'
    },
    proxy: 'http://localhost:8888/mobify/proxy/api'
};

const mutation = useCustomMutation({
    options: {
        method: 'POST',
        customApiPathParameters: {
            endpointPath: 'path/to/resource',
            apiName: 'hello-world'
        }
    },
    clientConfig,
    rawResponse: false
});

// use it in a react component
const ExampleDynamicMutation = () => {
    const [colors, setColors] = useState(['blue', 'green', 'white'])
    const [selectedColor, setSelectedColor] = useState(colors[0])

    return (
        <>
            <select value={selectedColor} onChange={(e) => setSelectedColor(e.target.value)}>
                {colors.map((color, index) => (
                    <option key={index} value={color}>
                        {color}
                    </option>
                ))}
            </select>
            <button
                onClick={() =>
                    mutation.mutate({
                        parameters: {
                            myCustomParam: 'custom parameters'
                        },
                        body: {
                            resourceParam: selectedColor
                        }
                    })
                }
            />
        </>
    )
}

Mutations also have their named methods exported as constants, available in this way:

import {useShopperBasketsMutation, ShopperBasketsMutations} from '@salesforce/commerce-sdk-react'

const Example = ({basketId}) => {
    // this works
    const addItemToBasket = useShopperBasketsMutation('addItemToBasket')

    // this also works
    const addItemToBasket = useShopperBasketsMutation(ShopperBasketsMutations.AddItemToBasket)
    return ...
}

Cache Invalidations and Updates

Since mutations changes data on the server, the cache entries that are potentially affected by the mutation is automatically invalidated.

For example, an addItemToBasket mutation automatically update useBasket and useCustomerBaskets query cache, because the mutation result contains the information for the updated basket. In other cases, when the mutation response do not have the updated data, the library will invalidate the cache and trigger a re-fetch. For the DELETE endpoints, the library removes the cache entries on successful mutations.

💡 Debugging hint: install and include @tanstack/react-query-devtools in your React app to see the queries (inspect the query states and cache keys).

Ultilities

Besides the collection of query hooks and mutation hooks, here are some ultility hooks to help you interact with SCAPI.

useCommerceApi()

This hook returns a set of SCAPI clients, which are already initialized using the configurations passed to the provider. Note: this hook doesn't automatically include auth headers.

import {useCommerceApi, useAccessToken} from '@salesforce/commerce-sdk-react'

const Example = () => {
    const api = useCommerceApi()
    const {getTokenWhenReady} = useAccessToken()

    const fetchProducts = async () => {
        const token = await getTokenWhenReady()
        const products = await api.shopperProducts.getProducts({
            parameters: {ids: ids.join(',')},
            headers: {
                Authorization: `Bearer ${token}`
            }
        })
        return products
    }
}

useAccessToken()

useAccessToken() => {token: String, getTokenWhenReady: Promise}

This ultility hook give access to the managed SLAS access token.

useCustomerId()

useCustomerId() => null | string

useCustomerType()

useCustomerId() => null | 'guest' | 'registered'

useEncUserId()

useEncUserId() => {encUserId: String, getEncUserIdWhenReady: Promise}

useUsid()

useUsid() => {usid: String, getUsidWhenReady: Promise}

Roadmap

  • Optimistic update support
  • SLAS private client support

Useful Links:

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
3.1.0-exp-server-affinity.10experimental
3.3.052latest
3.3.0-preview.047next
3.3.0-nightly-2025052308021939nightly-next

Version History

VersionDownloads (Last 7 Days)Published
3.3.052
3.3.0-nightly-2025052308021939
3.3.0-nightly-2025052108022849
3.3.0-preview.047
3.3.0-nightly-2025052008023457
3.3.0-nightly-2025051908022762
3.3.0-nightly-2025051608022611
3.3.0-nightly-202505150802257
3.3.0-nightly-202505140802167
3.3.0-nightly-202505130802206
3.3.0-nightly-202505120802190
3.3.0-nightly-202505090802210
3.3.0-nightly-202505080802200
3.3.0-nightly-202505070802290
3.3.0-extensibility-preview.40
3.3.0-nightly-2025050608022076
3.3.0-nightly-202505050802260
3.3.0-nightly-202505020802120
3.3.0-nightly-202505010802161
3.3.0-nightly-202504300802240
3.3.0-nightly-202504290802260
3.3.0-nightly-202504280812161
3.3.0-nightly-202504250802230
3.3.0-nightly-202504240802171
3.3.0-nightly-202504230802291
3.3.0-nightly-202504220802171
3.3.0-nightly-202504210802261
3.3.0-nightly-202504180802091
3.3.0-nightly-202504170802170
3.3.0-nightly-202504160802200
3.3.0-nightly-202504150802210
3.3.0-nightly-202504140802200
3.3.0-nightly-202504100802130
3.3.0-nightly-202504090802150
3.3.0-dev0
3.3.0-nightly-202504080802140
3.3.0-nightly-202504070802190
3.3.0-nightly-202504040802150
3.3.0-nightly-202504030802140
3.3.0-nightly-202504020802230
3.3.0-nightly-202504010802170
3.3.0-nightly-202503310802260
3.3.0-nightly-202503280802190
3.3.0-nightly-202503270802110
3.3.0-nightly-202503260802110
3.3.0-nightly-202503250802070
3.3.0-nightly-202503240802180
3.3.0-nightly-202503210802060
3.3.0-nightly-202503200839040
3.3.0-nightly-202503200802210
3.3.0-nightly-202503190802220
3.3.0-nightly-202503180802070
3.3.0-nightly-202503170802150
3.3.0-nightly-202503140802140
3.3.0-nightly-202503130802050
3.3.0-nightly-202503120802170
4.0.0-extensibility-preview.058
3.3.0-nightly-202503110802170
3.3.0-nightly-202503100802040
3.3.0-nightly-202503070802140
3.3.0-nightly-202503060802050
3.2.11,510
3.3.0-nightly-202503050802081
3.3.0-nightly-202503040802101
3.3.0-nightly-202503030802150
3.3.0-nightly-202502280802100
3.3.0-nightly-202502270802080
3.3.0-nightly-202502260802110
3.3.0-nightly-202502250802100
3.3.0-nightly-202502240802190
3.3.0-nightly-202502210802130
3.3.0-nightly-202502200802090
3.3.0-nightly-202502190802050
3.2.0446
3.2.0-nightly-202502180802080
3.2.0-preview.50
3.2.0-nightly-202502170802180
3.2.0-preview.40
3.2.0-nightly-202502140802130
3.2.0-preview.20
3.2.0-nightly-202502130802060
3.2.0-preview.10
3.2.0-nightly-202502120802050
3.2.0-nightly-202502110802020
3.2.0-nightly-202502100802080
3.2.0-nightly-202502070801480
3.2.0-nightly-202502060802160
3.2.0-preview.30
3.2.0-nightly-202502050801560
3.2.0-nightly-202502040802130
3.2.0-preview.00
3.2.0-nightly-202502030802050
3.2.0-nightly-202501310802120
3.2.0-nightly-202501300802021
3.2.0-nightly-202501290802150
3.2.0-nightly-202501280802120
3.2.0-nightly-202501270802110
3.2.0-nightly-202501240802134
3.2.0-nightly-202501230801490
3.2.0-nightly-202501220802090
3.2.0-nightly-202501210802080
3.2.0-nightly-202501200802100
3.2.0-nightly-202501170802040
3.2.0-nightly-202501160802080
3.2.0-nightly-202501150802080
3.2.0-nightly-202501140802160
3.2.0-nightly-202501130802140
3.2.0-nightly-202501100802070
3.2.0-nightly-202501090802110
3.2.0-nightly-202501080802110
3.2.0-nightly-202501070802000
3.2.0-nightly-202501060802210
3.2.0-nightly-202501030802130
3.2.0-nightly-202501020802010
3.2.0-nightly-202501010802070
3.2.0-nightly-202412310801540
3.2.0-nightly-202412300802130
3.2.0-nightly-202412270801470
3.2.0-nightly-202412260802060
3.2.0-nightly-202412250802210
3.2.0-nightly-202412240802030
3.2.0-nightly-202412230802060
3.2.0-nightly-202412200801590
3.2.0-nightly-202412190801560
3.2.0-nightly-202412180802040
3.2.0-nightly-202412170802220
3.2.0-nightly-202412160802230
3.2.0-nightly-202412130802100
3.2.0-nightly-202412120802130
3.2.0-nightly-202412110802100
3.2.0-nightly-202412100802220
3.1.1-preview.20
3.1.1-preview.10
3.2.0-nightly-202412090802190
3.1.1-preview.00
3.2.0-nightly-202412061248020
3.2.0-nightly-202412060802080
3.2.0-nightly-202412050802120
3.2.0-nightly-202412040802090
3.2.0-nightly-202412030802120
3.2.0-nightly-202412020802150
3.2.0-nightly-202411290802120
3.2.0-nightly-202411280802170
3.2.0-nightly-202411270802080
3.2.0-nightly-202411260802050
3.2.0-nightly-202411250802160
3.2.0-nightly-202411220802151
3.2.0-nightly-202411210802111
3.2.0-nightly-202411200802120
3.2.0-nightly-202411190802140
3.2.0-nightly-202411180802170
3.2.0-nightly-202411150802120
3.2.0-nightly-202411140802090
3.2.0-nightly-202411130802020
3.2.0-nightly-202411120802080
3.2.0-nightly-202411110802080
3.2.0-nightly-202411080802050
3.2.0-nightly-202411070802080
3.2.0-nightly-202411060801570
3.2.0-nightly-202411050805151
3.2.0-nightly-202411040802170
3.2.0-nightly-202411010802031
3.2.0-nightly-202410310801581
3.2.0-nightly-202410300802161
3.1.0-nightly-202410290802050
3.1.0696
3.1.0-nightly-202410280802082
3.1.0-nightly-202410250801570
3.1.0-nightly-202410240802040
3.1.0-preview.00
3.1.0-nightly-202410230802030
3.1.0-nightly-202410220802020
3.1.0-nightly-202410210802160
3.1.0-nightly-202410180802030
3.1.0-nightly-202410170801590
3.1.0-nightly-202410160802150
3.1.0-nightly-202410150801550
3.1.0-nightly-202410140802090
3.1.0-nightly-202410110801590
3.1.0-nightly-202410100802050
3.1.0-nightly-202410090802000
3.1.0-nightly-202410080802160
3.1.0-nightly-202410070802120
3.1.0-nightly-202410040802080
3.1.0-nightly-202410030802010
3.1.0-nightly-202410020802001
3.1.0-nightly-202410010802140
3.1.0-nightly-202409300802130
3.1.0-nightly-202409270802000
3.1.0-nightly-202409260802000
3.1.0-nightly-202409250802040
3.1.0-nightly-202409240802060
3.1.0-nightly-202409230802060
3.1.0-nightly-202409200801550
3.1.0-nightly-202409190801580
3.1.0-nightly-202409180802000
3.1.0-nightly-202409170802050
3.1.0-nightly-202409160802010
3.1.0-nightly-202409130801560
3.1.0-nightly-202409120802050
3.1.0-exp-server-affinity.10
3.1.0-nightly-202409110802010
3.1.0-nightly-202409100802010
3.1.0-nightly-202409090802090
3.1.0-nightly-202409060801470
3.1.0-nightly-202409050802020
3.0.171
3.1.0-nightly-202409040801400
3.1.0-nightly-202409030801590
3.1.0-nightly-202409020801550
3.1.0-nightly-202408300802000
3.1.0-nightly-202408290801560
3.1.0-nightly-202408280801520
3.1.0-nightly-202408270802010
3.1.0-nightly-202408260801570
3.1.0-nightly-202408230801540
3.1.0-nightly-202408220801510
3.1.0-nightly-202408210802100
3.1.0-nightly-202408200803100
3.1.0-nightly-202408190802020
3.1.0-nightly-202408160802030
3.1.0-nightly-202408150802050
3.1.0-nightly-202408140801540
3.1.0-nightly-202408130801580
3.1.0-nightly-202408120801550
3.1.0-nightly-202408090801510
2.1.0-nightly-202408080801520
3.0.097
2.1.0-nightly-202408070801500
3.0.0-preview.00
2.1.0-nightly-202408060801550
2.1.0-nightly-202408050801590
2.1.0-nightly-202408020801410
2.1.0-nightly-202408010801570
2.1.0-nightly-202407310801480
2.1.0-nightly-202407300801520
2.1.0-nightly-202407290801540
2.1.0-nightly-202407260801520
2.1.0-nightly-202407250801320
2.1.0-nightly-202407240801530
2.1.0-nightly-202407230801520
2.1.0-nightly-202407220802040
2.1.0-nightly-202407190801560
2.1.0-nightly-202407180802030
2.1.0-nightly-202407170801530
2.1.0-nightly-202407160802420
2.1.0-nightly-202407150802000
2.0.2105
2.1.0-nightly-202407120801420
2.1.0-nightly-202407110801570
2.0.10
2.1.0-nightly-202407100801590
2.1.0-nightly-202407090802000
2.0.0-gpt-nightly-202407081546310
2.1.0-nightly-202407080802030
2.1.0-nightly-202407050801570
2.1.0-nightly-202407040801370
2.1.0-nightly-202407030802490
2.1.0-nightly-202407020801560
2.1.0-nightly-202407010802020
2.1.0-nightly-202406280802060
2.1.0-nightly-202406270801560
2.1.0-nightly-202406260801590
2.0.0180
2.0.0-preview.10
2.0.0-nightly-202406250801440
2.0.0-nightly-202406240802010
2.0.0-preview.00
2.0.0-nightly-202406210802320
2.0.0-nightly-202406200802210
2.0.0-nightly-202406190801410
2.0.0-nightly-202406180801410
2.0.0-nightly-202406170801580
2.0.0-nightly-202406140801500
2.0.0-nightly-202406130801540
2.0.0-nightly-202406120802000
2.0.0-nightly-202406110801570
2.0.0-nightly-202406100801580
2.0.0-nightly-202406070802040
2.0.0-nightly-202406060802020
2.0.0-nightly-202406050801490
2.0.0-nightly-202406040802030
2.0.0-nightly-202406030802070
2.0.0-nightly-202405310801510
2.0.0-nightly-202405300802030
2.0.0-nightly-202405290801380
2.0.0-nightly-202405280801440
2.0.0-nightly-202405270801530
2.0.0-nightly-202405240801510
2.0.0-nightly-202405230801540
2.0.0-nightly-202405220802000
1.5.0-nightly-202405210801420
1.5.0-nightly-202405200801560
1.5.0-nightly-202405170801530
1.5.0-nightly-202405160801350
1.5.0-nightly-202405150801370
1.5.0-nightly-202405140801560
1.5.0-nightly-202405130801520
1.5.0-nightly-202405100801590
1.5.0-nightly-202405090802200
1.5.0-nightly-202405080802230
1.5.0-nightly-202405070801490
1.5.0-nightly-202405060801450
1.5.0-nightly-202405030801580
1.5.0-nightly-202405020801390
1.5.0-gpt-nightly-202405020007160
1.5.0-nightly-202405010801550
1.5.0-nightly-202404300801530
1.5.0-nightly-202404290801550
1.5.0-sgolden-nightly-202404262214090
1.5.0-nightly-202404260801520
1.5.0-nightly-202404250801510
1.5.0-gpt-nightly-202404242150200
1.5.0-nightly-202404240801520
1.5.0-nightly-202404230801530
1.5.0-nightly-202404220801540
1.5.0-nightly-202404190801540
1.5.0-nightly-202404180801420
1.4.2162
1.4.122
1.4.0-nightly-202404170801360
1.4.00
1.4.0-nightly-202404160801370
1.4.0-nightly-202404150801300
1.4.0-nightly-202404120801380
1.4.0-nightly-202404110801460
1.4.0-dev.10
1.4.0-nightly-202404100801500
1.4.0-nightly-202404090801510
1.4.0-nightly-202404080801470
1.4.0-nightly-202404050801350
1.4.0-nightly-202404040801540
1.4.0-nightly-202404030801470
1.4.0-nightly-202404020801560
1.4.0-nightly-202404010802470
1.4.0-nightly-202403290801460
1.4.0-nightly-202403280801590
1.4.0-nightly-202403270801570
1.4.0-dev0
1.4.0-nightly-202403260801560
1.4.0-nightly-202403250801460
1.4.0-nightly-202403220802260
1.4.0-nightly-202403210801350
1.4.0-nightly-202403200801410
1.4.0-nightly-202403190802510
1.4.0-gpt-nightly-202403181938200
1.4.0-nightly-202403180802430
1.4.0-nightly-202403150801550
1.4.0-gpt-nightly-202403150305390
1.4.0-nightly-202403140801380
1.4.0-nightly-202403130801490
1.4.0-nightly-202403120801390
1.4.0-nightly-202403110802000
1.4.0-nightly-202403080801410
1.4.0-nightly-202403070801430
1.4.0-nightly-202403060802460
1.4.0-nightly-202403050801350
1.4.0-nightly-202403040810220
1.4.0-nightly-202403010801420
1.4.0-nightly-202402290801530
1.4.0-nightly-202402280801400
1.4.0-nightly-202402270801520
1.4.0-nightly-202402260802050
1.4.0-nightly-202402230801420
1.4.0-nightly-202402220801370
1.4.0-nightly-202402210801540
1.4.0-nightly-202402200801420
1.4.0-nightly-202402190801560
1.4.0-nightly-202402160801530
1.4.0-nightly-202402150801540
1.4.0-nightly-202402140801440
1.4.0-nightly-202402130801340
1.4.0-nightly-202402120801470
1.4.0-nightly-202402090801380
1.4.0-nightly-202402080801320
1.4.0-nightly-202402070801350
1.4.0-nightly-202402060801580
1.4.0-nightly-202402050801390
1.4.0-nightly-202402020801320
1.4.0-nightly-202402010801320
1.4.0-nightly-202401310801340
1.4.0-nightly-202401300801410
1.4.0-nightly-202401290801440
1.4.0-nightly-202401260801390
1.4.0-nightly-202401250801430
1.4.0-nightly-202401240801430
1.4.0-nightly-202401230801410
1.3.0-nightly-202401220801570
1.3.07
1.3.0-preview.00
1.3.0-nightly-202401190801380
1.3.0-nightly-202401180801390
1.3.0-nightly-202401170801450
1.3.0-nightly-202401160801370
1.3.0-nightly-202401150801480
1.3.0-nightly-202401120801400
1.3.0-nightly-202401110801380
1.3.0-nightly-202401100801400
1.3.0-nightly-202401090801430
1.3.0-nightly-202401080802060
1.3.0-nightly-202401050801420
1.3.0-nightly-202401040801380
1.3.0-nightly-202401030801390
1.3.0-nightly-202401020801480
1.3.0-nightly-202401010801420
1.3.0-nightly-202312290801330
1.3.0-nightly-202312280801400
1.3.0-nightly-202312270801350
1.3.0-nightly-202312260801460
1.3.0-nightly-202312250802000
1.3.0-nightly-202312220801390
1.3.0-nightly-202312210801370
1.3.0-nightly-202312200801350
1.3.0-nightly-202312190801450
1.3.0-nightly-202312180801530
1.3.0-nightly-202312150801390
1.3.0-nightly-202312140801420
1.3.0-nightly-202312130801480
1.3.0-nightly-202312120801440
1.2.02
1.2.0-preview.10
1.2.0-nightly-202312080801420
1.2.0-nightly-202312070801490
1.2.0-nightly-202312060801440
1.2.0-nightly-202312050801460
1.2.0-nightly-202312040801550
1.2.0-nightly-202312010801470
1.2.0-preview.00
1.2.0-nightly-202311300801470
1.2.0-nightly-202311290801560
1.2.0-nightly-202311280801420
1.2.0-nightly-202311270801470
1.2.0-nightly-202311240801480
1.2.0-nightly-202311230801450
1.2.0-nightly-202311220801480
1.2.0-nightly-202311210801480
1.2.0-nightly-202311200801540
1.2.0-nightly-202311170801440
1.2.0-nightly-202311160801380
1.2.0-nightly-202311150801470
1.2.0-nightly-202311140801470
1.2.0-nightly-202311130801540
1.2.0-nightly-202311100801400
1.2.0-nightly-202311090801440
1.2.0-nightly-202311080801420
1.2.0-nightly-202311070801430
1.1.0-nightly-202311060801430
1.1.07
1.1.0-preview.00
1.1.0-nightly-202311030801390
1.1.0-nightly-202311020801400
1.1.0-nightly-202311010801450
1.1.0-nightly-202310310801420
1.1.0-nightly-202310300801410
1.1.0-nightly-202310270801430
1.1.0-nightly-202310260801450
1.1.0-nightly-202310250801560
1.1.0-nightly-202310240801500
1.1.0-nightly-202310230801500
1.1.0-nightly-202310200801500
1.1.0-nightly-202310190801520
1.1.0-nightly-202310180801500
1.1.0-nightly-202310170801470
1.1.0-nightly-202310160802070
1.1.0-nightly-202310130801500
1.1.0-nightly-202310120801540
1.1.0-nightly-202310110801480
1.1.0-nightly-202310100801550
1.1.0-nightly-202310090801540
1.1.0-nightly-202310060801550
1.1.0-nightly-202310050801570
1.1.0-nightly-202310040801540
1.1.0-nightly-202310030801490
1.1.0-nightly-202310020801530
1.1.0-nightly-202309290801480
1.1.0-nightly-202309280801490
1.1.0-nightly-202309271656530
1.1.0-nightly-202309270801350
1.1.0-nightly-202309261857070
1.0.22
1.1.0-nightly-202309200801450
1.1.0-nightly-202309050801490
1.1.0-nightly-202309040801430
1.1.0-nightly-202309010801390
1.1.0-nightly-202308310801410
1.1.0-nightly-202308230801400
1.1.0-nightly-202308220801460
1.1.0-nightly-202308210801490
1.1.0-nightly-202308180801390
1.1.0-nightly-202308170801440
1.1.0-nightly-202308160801450
1.1.0-nightly-202308152101590
1.1.0-nightly-202308090801510
1.1.0-nightly-202308030801370
1.1.0-nightly-202308020801350
1.1.0-nightly-202308010801300
1.1.0-nightly-202307311415580
1.1.0-nightly-202307311409190
1.1.0-nightly-202307282342080
1.0.114
1.0.1-preview.10
1.0.1-preview.00
1.1.0-dev.20
1.1.0-dev.10
1.1.0-dev.00
1.0.04
1.0.0-preview.50
1.0.0-preview.40
1.0.0-preview.30
1.0.0-preview.20
1.0.0-preview.10
1.0.0-preview.00

Package Sidebar

Install

npm i @salesforce/commerce-sdk-react

Weekly Downloads

3,819

Version

3.3.0

License

See license in LICENSE

Unpacked Size

613 kB

Total Files

181

Last publish

Collaborators

  • demianbrecht
  • jye-sf
  • jburnie
  • kevinv11n
  • byao
  • pmdartus
  • jcourtner
  • dferro
  • duane.chew
  • ekashida
  • ravi.jayaramappa
  • mjrust
  • apapko
  • jleen-sfdc
  • jqian
  • cwallsf
  • dhagberg-sf
  • khawkins
  • mbettio
  • amphro
  • ire-npm-team-user
  • damilareolowoniyi
  • jodarove
  • sfdctaka
  • fernomac
  • jimjag
  • ivarley
  • jbartolotta-sfdc
  • dhersam
  • mmadialagan
  • dbreese-salesforce
  • ashokrudraraju
  • salesforce-releases
  • iamaziz
  • packagellama
  • hkii
  • adirasanam
  • nolanlawson
  • jasonschroeder-sfdc
  • danielshox
  • dme722
  • maward
  • jmsjtu
  • mobify
  • dlouvton
  • lwc-admin
  • abirchfieldsfdc
  • ww951206