sveltekit fails to automatically generate CSP hashes for inline styles
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 20.8k
- Forks
- 2.3k
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 156
Description
Describe the bug
When using transitions, it seems svelte adds inline styles to the html but then sveltekit fails to automatically add a hash for it causing errors in the browser.

This is what my svelte.config.js has under CSP:

And this is the piece of code that adds inline styles:

Only way to get it working is to add the hash myself to the CSP but that's lame.

Am I doing something wrong? Or is it broken?
Reproduction
Add a transition to your app and then set CSP for style-src to ['self']
Logs
index-9c40d7a5.js:1 Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='), or a nonce ('nonce-...') is required to enable inline execution.
System Info
System:
OS: Linux 5.18 Arch Linux
CPU: (8) x64 Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
Memory: 28.28 GB / 31.31 GB
Container: Yes
Shell: 5.1.16 - /bin/bash
Binaries:
Node: 18.3.0 - /usr/bin/node
npm: 8.5.5 - /usr/bin/npm
Browsers:
Chromium: 102.0.5005.115
Severity
annoyance
Additional Information
The worst thing of all is if I add the hash myself then it doesn't work under dev mode.... So I have to remove and then add back for production...
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reproduction described in the issue: add a transition and configure style-src as ['self'] in svelte.config.js, then compare dev and production behavior. Trace how SvelteKit handles CSP for the transition-generated inline styles. Done means the generated styles work under the configured policy in both modes without manually adding a hash.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- security, web-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100