How to use Sanity.Fetch with Sveltekit without Losing Credentials

5 replies
Last updated: Feb 15, 2022
How would I replace the
fetch
function used by
SanityClient
without loosing the credentials? I'm using sveltekit which come with its own implementation of
fetch
for use in load functions (a specific function that runs before the page is rendered). Will I lose my credentials if I do
sanity.fetch = fetch
, having that sveltkit
fetch
available in the current context?
Feb 14, 2022, 2:44 PM
I usually put the sanity client into an endpoint & use sveltekit's fetch to hit that endpoint, a bit cumbersome but if you're on the latest svelte kit, they remove some of that boilerplate: https://kit.svelte.dev/docs/routing#endpoints

If an endpoint has the same filename as a page (except for the extension), the page will get its props from the endpoint. So a page like 
src/routes/items/[id].svelte
 could get its props from `src/routes/items/[id].js`:
Feb 14, 2022, 2:58 PM
Also load function will run on the client as well, so it's not a good idea to run credential'd requests there I think (unless that's exactly what you want to do 😅 )
Feb 14, 2022, 3:01 PM
Thanks, you put me on the right rails 😉
Feb 14, 2022, 4:59 PM
user G
With the latest sveltekit, I'm getting the result in my endpoint as a
prop
, accessible in the load function of an associated page. Does this means sveltekit is using their special
fetch
to hit the
get
endpoint behind the scenes, and that I can use that prop directly without hitting the endpoint with fetch myself (in my case just directly return it to make it available to my page)?
Feb 15, 2022, 5:59 AM
Yes that's right, if the load function in your page is doing nothing but fetching that data from an endpoint, you can remove it (note that if you're naming your endpoint something like
[page].json.js
, you have to remove the
.json
)
Feb 15, 2022, 6:04 AM

Sanity.io – build remarkable experiences at scale

Sanity is a customizable solution that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Categorized in