diff --git a/packages/pwa-kit-create-app/CHANGELOG.md b/packages/pwa-kit-create-app/CHANGELOG.md index 7c9187eb72..c24080977e 100644 --- a/packages/pwa-kit-create-app/CHANGELOG.md +++ b/packages/pwa-kit-create-app/CHANGELOG.md @@ -3,6 +3,7 @@ - Support email mode by default for passwordless login and password reset in a generated app. [#3525](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3525) - Util function for passwordless callback URI [#3630](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3630) - Add `tokenLength` to login configuration [#3554](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3554) +- Add configuration flag `disableHttpOnlySessionCookies` to `ssrParameters` [#3635](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3635) ## v3.15.0 (Dec 17, 2025) - Add new Google Cloud API configuration and Bonus Product configuration [#3523](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3523) diff --git a/packages/pwa-kit-create-app/assets/bootstrap/js/config/default.js.hbs b/packages/pwa-kit-create-app/assets/bootstrap/js/config/default.js.hbs index d76b6c4c88..7815a37734 100644 --- a/packages/pwa-kit-create-app/assets/bootstrap/js/config/default.js.hbs +++ b/packages/pwa-kit-create-app/assets/bootstrap/js/config/default.js.hbs @@ -182,6 +182,8 @@ module.exports = { // Additional parameters that configure Express app behavior. ssrParameters: { ssrFunctionNodeVersion: '22.x', + // Store the session cookies as HttpOnly for enhanced security. + disableHttpOnlySessionCookies: false, proxyConfigs: [ { host: '{{answers.project.commerce.shortCode}}.api.commercecloud.salesforce.com', diff --git a/packages/pwa-kit-create-app/assets/templates/@salesforce/retail-react-app/config/default.js.hbs b/packages/pwa-kit-create-app/assets/templates/@salesforce/retail-react-app/config/default.js.hbs index e4c13b3d41..70eeeb78c4 100644 --- a/packages/pwa-kit-create-app/assets/templates/@salesforce/retail-react-app/config/default.js.hbs +++ b/packages/pwa-kit-create-app/assets/templates/@salesforce/retail-react-app/config/default.js.hbs @@ -178,6 +178,8 @@ module.exports = { // Additional parameters that configure Express app behavior. ssrParameters: { ssrFunctionNodeVersion: '22.x', + // Store the session cookies as HttpOnly for enhanced security. + disableHttpOnlySessionCookies: false, proxyConfigs: [ { host: '{{answers.project.commerce.shortCode}}.api.commercecloud.salesforce.com', diff --git a/packages/pwa-kit-dev/CHANGELOG.md b/packages/pwa-kit-dev/CHANGELOG.md index d765f05c93..29004508e0 100644 --- a/packages/pwa-kit-dev/CHANGELOG.md +++ b/packages/pwa-kit-dev/CHANGELOG.md @@ -1,4 +1,6 @@ ## v3.16.0-dev (Dec 17, 2025) +Add configuration flag `disableHttpOnlySessionCookies` to `ssrParameters` [#3635](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3635) + ## v3.15.0 (Dec 17, 2025) ## v3.14.0 (Nov 04, 2025) diff --git a/packages/pwa-kit-dev/bin/pwa-kit-dev.js b/packages/pwa-kit-dev/bin/pwa-kit-dev.js index e07e4e30b7..3c77d8a620 100755 --- a/packages/pwa-kit-dev/bin/pwa-kit-dev.js +++ b/packages/pwa-kit-dev/bin/pwa-kit-dev.js @@ -253,11 +253,16 @@ const main = async () => { error('Could not determine app entrypoint.') process.exit(1) } - + // Load config to get envBasePath and disableHttpOnlySessionCookies from ssrParameters for local development + // This mimics how MRT sets the system environment variable + const config = getConfig() || {} + const disableHttpOnlySessionCookies = + config.ssrParameters?.disableHttpOnlySessionCookies || true execSync(`${babelNode} ${inspect ? '--inspect' : ''} ${babelArgs} ${entrypoint}`, { env: { ...process.env, - ...(noHMR ? {HMR: 'false'} : {}) + ...(noHMR ? {HMR: 'false'} : {}), + MRT_DISABLE_HTTPONLY_SESSION_COOKIES: disableHttpOnlySessionCookies } }) }) diff --git a/packages/pwa-kit-react-sdk/CHANGELOG.md b/packages/pwa-kit-react-sdk/CHANGELOG.md index 33cf9fa905..c27e0e31b4 100644 --- a/packages/pwa-kit-react-sdk/CHANGELOG.md +++ b/packages/pwa-kit-react-sdk/CHANGELOG.md @@ -1,4 +1,6 @@ ## v3.16.0-dev (Dec 17, 2025) +Add configuration flag `disableHttpOnlySessionCookies` to `ssrParameters` [#3635](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3635) + ## v3.15.0 (Dec 17, 2025) ## v3.14.0 (Nov 04, 2025) diff --git a/packages/pwa-kit-react-sdk/src/ssr/server/react-rendering.js b/packages/pwa-kit-react-sdk/src/ssr/server/react-rendering.js index ed745a8ea4..c57bed655f 100644 --- a/packages/pwa-kit-react-sdk/src/ssr/server/react-rendering.js +++ b/packages/pwa-kit-react-sdk/src/ssr/server/react-rendering.js @@ -365,6 +365,7 @@ const renderApp = (args) => { __CONFIG__: config, __PRELOADED_STATE__: appState, __ERROR__: error, + __MRT_DISABLE_HTTPONLY_SESSION_COOKIES__: process.env.MRT_DISABLE_HTTPONLY_SESSION_COOKIES, // `window.Progressive` has a long history at Mobify and some // client-side code depends on it. Maintain its name out of tradition. Progressive: getWindowProgressive(req, res) diff --git a/packages/template-retail-react-app/CHANGELOG.md b/packages/template-retail-react-app/CHANGELOG.md index b446d6905d..d9a4f55b41 100644 --- a/packages/template-retail-react-app/CHANGELOG.md +++ b/packages/template-retail-react-app/CHANGELOG.md @@ -12,6 +12,7 @@ - Util function for passwordless callback URI [#3630](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3630) - [BREAKING] Remove unused absoluteUrl util from retail react app [#3633](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3633) - Allow shopper to manually input OTP during passwordless login [#3554](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3554) +- Add configuration flag `disableHttpOnlySessionCookies` to `ssrParameters` [#3635](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3635) ## v8.3.0 (Dec 17, 2025) - [Bugfix] Fix Forgot Password link not working from Account Profile password update form [#3493](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/3493) diff --git a/packages/template-retail-react-app/config/default.js b/packages/template-retail-react-app/config/default.js index a00e2bb735..3ae071c644 100644 --- a/packages/template-retail-react-app/config/default.js +++ b/packages/template-retail-react-app/config/default.js @@ -103,6 +103,8 @@ module.exports = { ], ssrParameters: { ssrFunctionNodeVersion: '22.x', + // Store the session cookies as HttpOnly for enhanced security. + disableHttpOnlySessionCookies: false, proxyConfigs: [ { host: 'kv7kzm78.api.commercecloud.salesforce.com',