New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[fix] prerendering always false in global code of hooks.js #4265 #4322
Conversation
🦋 Changeset detectedLatest commit: 8f9ff86 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Thank you. There's actually a simpler fix, which is more in line with plans for future changes (namely the addition of scoped |
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
This fixes the behavior documented in #4265, where
prerendering
imported from'$app/env'
is false outside the actual hooks in hooks.ts even when called during prerender.This occurs because the hooks module is imported by the same module that exports the override function that allows to set prerendering in the first place. Therefore, when the global code of the hooks module is executed as it is imported, prerendering can never be any other value than it's default value.
This PR addresses this behavior by extracting the setting of prerendering into its own module (notify_prerendering.js), which can be imported without triggering the global code of the hooks module. As the notify_prerendering.js module will never be used anywhere other than during prerendering, it is not included into the
writeServer()
output of the builder.Tests
pnpm test
and lint the project withpnpm lint
andpnpm check
Changesets
pnpx changeset
and following the prompts. All changesets should bepatch
until SvelteKit 1.0Alternatives considered
Instead of making these changes, this behavior could also be documented under $app/prerendering as people can circumvent the problem with a setup function as described in #4265.