Use the Vercel Deployment Protection feature with JSS apps
Deployment Protection is a feature of the Vercel cloud platform that allows developers and editors to limit access to their site deployments.
To use Deployment Protection with JSS apps:
-
Create a new file in the
src/tempfolder, for example,get-public-url.js, with the following content:NoteWhen using JSS SDK 21.2 or later, import/require the
getPublicUrlfuntion from@sitecore-jss/sitecore-jss-nextjs/utilsinstead of@sitecore-jss/sitecore-jss-nextjs(deprecated). -
For every component and file in your app that uses static asset links, replace the import of
getPublicUrlwith the import from./temp/get-public-url.js. For example, if you use foundation-head, replace the existing import/require statements as follows:-
In the
next.config.jsfile:const getPublicUrl = require('./src/temp/get-public-url'); -
In the
src/Layout.tsxfile:import getPublicUrl from 'temp/get-public-url'; -
In the
src/Navigation.tsxfile:import getPublicUrl from 'temp/get-public-url';
NoteYou do not need to change the import statement in the
sitemap.tsfile. -
-
Replace the import/require statement of
getPublicUrlwith the import from./temp/get-public-url.jsin any other file or component where you use static asset URLs.
You can modify the local getPublicUrl implementation according to your needs. The main purpose of the function is to transform absolute links to relative URLs in Vercel deployments.
Vercel Deployment Protection does not work with editing mode. If you require Experience Editor or Pages to function in your site configuration, use either the default SitecoreAI editing host, your own editing host, or a Vercel deployment that is not deployment-protected.
If you use the Protection Bypass token to access the site in normal mode, you must use both the x-vercel-protection-bypass and x-vercel-set-bypass-cookie headers (or query string parameters) to properly render all the static assets.