Svelte & SvelteKit Errors
Store subscriptions, load functions and server/client boundaries.
Understanding Svelte errors
Svelte errors mostly arise at the compiler's boundaries: the $ store prefix only works on real stores in component context, and SvelteKit's load functions run in two different environments with different capabilities. A 500 from a load function usually means server-only code (a database client, a secret, fs) reached a universal load that also runs in the browser.
How to debug Svelte errors
- Check whether the file is a universal load (
+page.js) or a server-only load (+page.server.js). Anything touching secrets or the filesystem belongs in the latter. - Read the full server-side stack trace in the terminal, not just the browser's 500 page: SvelteKit hides details in production for security.
- For
$prefix errors, confirm the value is an actual store with asubscribemethod and that you are inside a component, not a plain module. - Use
$env/static/privateand$env/dynamic/privatefor secrets so the compiler enforces the server-only boundary for you. - Reproduce with
vite build && vite preview; dev-mode behaviour differs meaningfully from the production build.
Tools worth reaching for
vite build && vite previewSvelteKit terminal logssvelte-check$env/static/private
All 20 Svelte errors
- Svelte 5: `$:` is not allowed in runes mode, use `$derived` or `$effect` instead NewAs soon as a component uses any rune ($state, $props, $derived), Svelte compiles the whole file in runes mode, and the…
- Svelte 5: `$effect` can only be used inside an effect NewEffects have to be created while a component is initialising, so calling `$effect` from a click handler, a…
- Svelte 5: `$props()` can only be used at the top level of components NewRunes are compiled away rather than called, so `$props()` has to appear exactly once as the initialiser of a top level…
- Svelte 5: `export let` is not allowed in runes mode, use `$props()` instead NewA component is in runes mode, where props arrive through $props() rather than exported let bindings. Runes mode is…
- Svelte 5: $state / $derived can only be used inside a .svelte or .svelte.js file NewRunes are compiler features, not runtime functions. They only work in files the Svelte compiler processes: components…
- Svelte 5: Cannot export state from a module if it is reassigned NewIn a .svelte.js or .svelte.ts module, $state works because the compiler rewrites every read and write of that variable…
- Svelte 5: effect_update_depth_exceeded (Maximum update depth exceeded) NewAn effect wrote to state that it also reads, so running it schedules it again and Svelte gives up after a fixed number…
- Svelte 5: State referenced in its own scope will never update NewReading a `$state` variable into a plain `const`, or passing it to a function, copies the value at that moment instead…
- Svelte 5: Updating state inside a derived is forbidden NewA `$derived` expression re-runs whenever its inputs change, so writing state from inside one would feed the change…
- Svelte 5: Using `<slot>` to render parent content is deprecated NewIn Svelte 5, content passed into a component arrives as snippets and is rendered with {@render}; survives only for…
- Svelte 5: Using `on:click` to listen to the click event is deprecated NewSvelte 5 treats DOM event handlers as ordinary attributes, onclick={...}, so the on: directive is deprecated in runes…
- Svelte: '$' prefix can only be used with storesThe $ auto-subscription was used on a value that is not a store (no subscribe method), or a store was referenced…
- Svelte: `getContext(...)` can only be used during component initialisation NewContext functions and lifecycle hooks (getContext, setContext, onMount, onDestroy) attach to whichever component is…
- SvelteKit: 500 error in load functionA load function threw, returned a non-serialisable value, or accessed browser-only APIs during SSR, producing a 500.
- SvelteKit: Cannot access url.searchParams on a page with prerendering enabled NewA prerendered page is one file written at build time, so there is no request to read a query string from. The clash…
- SvelteKit: Cannot import $env/static/private into client-facing code NewPrivate environment variables may only be imported by modules that never reach the browser, and the import chain from…
- SvelteKit: Cannot prerender pages with actions NewPrerendering happens at build time and produces a static file, while a form action needs a server when the request…
- SvelteKit: Cross-site POST form submissions are forbidden NewSvelteKit compares the Origin header with the origin it believes it is serving and rejects the mismatch, which is its…
- SvelteKit: Data returned from `load` is not serializable NewData from a server load function is serialised so the browser can hydrate with it, and the serialiser handles plain…
- SvelteKit: Error: Not found: /favicon.ico NewThe browser asked for /favicon.ico, no route or static file matched, and SvelteKit logged the 404 the same way it logs…
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 18Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 20Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 20Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 20OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 17Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 18NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- C++ 20Segfaults, linker errors, memory corruption and template deduction failures.
- Caching 20Cache stampedes, stale content, Varnish and CloudFront failures.
- CI/CD 18GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and…
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 20Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 20NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 18GenServer timeouts, supervision failures and Mix compilation problems.
- Email 20Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 19Validation, depth limits, N+1 queries and fragment problems.
- gRPC 17Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Ingress 20404 default backend, missing TLS secrets, IngressClass and path matching.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 18Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 20Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 20Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 18Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Performance 19GC pauses, thread pool starvation and event loop blocking.
- PHP 20Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 20nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 17Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 20Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 17Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 20Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 19Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 19S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 20VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- Web3 17Gas estimation, nonce management and reverted transactions.
- WebAssembly 17Compile errors, memory bounds and host binding mismatches.
- WebServer 20nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 20Installer failures, missing runtimes, update errors and permission problems.