feat: make handleFetch
a shared hook
#13755
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello Svelte Team,
I send you this PR to make
handleFetch
a shared hook that can be used on both client and server side.Motivation
I'm working a hybrid client/server administration portal where authentication is done using
OAuth
/OIDC
+JWT
tokens. I'm trying to create a secure and performant authentication process and I noticed that we could create something very powerful with SvelteKit by improving some features.Indeed, a good practice when working on a SSR environment is:
access token
andrefresh token
to clientrefresh token
on a cookie (not the access token)However, on a very hybrid scenarios where requests are done sometimes on the client, sometimes on the server, it multiplies the numbers of refresh token requests and create a bottleneck on the auth server.
So a good improvement would be to constantly pass the access token from the client to the server to allow reusing during the session. I noticed that we can take control of
fetch
requests on the server side but not on the client side.Other use cases
I see some scenarios where controling the client-side
fetch
would be useful:load
andaction
functionsImplementation
This PR replicates the behavior of the server-side
handleFetch
hook with one difference: the hook does not have access toevent
.Notes
I wanted to include a test similar to the server-side
handleFetch
. However I did not find any tests for server-sidehandleFetch
.I'm open to any idea to create tests for both hooks.
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm test
and lint the project withpnpm lint
andpnpm check
Changesets
pnpm changeset
and following the prompts. Changesets that add features should beminor
and those that fix bugs should bepatch
. Please prefix changeset messages withfeat:
,fix:
, orchore:
.Edits