BugMojoBugMojoBugMojo
FeaturesPricingBlogHelpAbout
Add to ChromeLog inGet started
BugMojoBugMojo

Bug reports that actually help fix bugs — capture, replay, share.

A product of Softech Infra.

Product

  • Features
  • Pricing
  • Browser extension
  • Get started
  • Log in

Resources

  • Help & guides
  • Blog
  • Compare
  • Glossary

Company

  • About
  • Contact
  • Security
  • Privacy
  • Terms
  • Sitemap
© 2026 BugMojo. All rights reserved.
AllGuidesEngineeringPlaybooksCompareGlossaryAlternativesBy roleBug tracking by framework
  1. Home
  2. Blog
  3. Bug tracking by framework
  4. SvelteKit 2 (Svelte 5)
Bug tracking by framework

Bug tracking for SvelteKit — session replay, console + HAR (2026)

SvelteKit bug-reporting guide for QA + dev teams: framework-specific gotchas, common bugs, and how to capture them with BugMojo session replay.

3 min read·JavaScript
Svelte logo concept — orange flame on a dark code editor background

What SvelteKit teams ship with BugMojo

Svelte 5 replaced the magic of "assign to a variable, the UI updates" with **runes** — `$state`, `$derived`, `$effect`. The new system is more explicit and faster, but it changes how every Svelte bug manifests. SvelteKit 2 layered on top brings server load functions, form actions, and edge-deployed adapters — each with its own failure modes.

A SvelteKit bug report needs the route ID (because the same URL can hit different `+page.server.ts` files depending on layout), the form action result, and the rune state at the failure moment. BugMojo captures the DOM + console + network HAR end-to-end so the engineer can see exactly where the load function returned vs where the page rendered.

This guide covers Svelte 5 runes gotchas, SvelteKit 2 load-function bugs, and how to wire BugMojo into a Svelte team's workflow.

SvelteKit gotchas

Framework-specific failure modes engineers actually ship through. Each is hard to spot in a screenshot and obvious in a session replay.

Mixing legacy reactive syntax with runes

Svelte 5 supports both `$:` reactive declarations (legacy) and `$derived` (runes) in the same file. They interact in confusing ways. Pick one mode per component.

$effect runs on the client only

Unlike `onMount` in Svelte 4 or `useEffect` in React, `$effect` does NOT run during SSR. Anything that needs to fire on both server and client renders should live in the load function, not in `$effect`.

Form actions return data that overrides page state

A `+page.server.ts` action returns a value that becomes `form` in the page. If the action returns an object with a key that collides with page data, you get surprising re-renders.

Edge adapters limit fs/cookie/crypto APIs

Cloudflare and Vercel Edge adapters don't support Node's `fs`, full `crypto` module, or large request bodies. Bug class: works locally (Node), 500s in production.

Common SvelteKit bugs

Real SvelteKit bug patterns — the symptom you will see in a report and the fix that actually works.

$state on an object does not deep-track new properties

Symptom: Adding a new key to a `$state` object does not trigger updates.

Fix: `$state` proxies via `new Proxy`. Properties that exist at declaration are tracked; properties added later need to be declared up front (set to undefined initially) OR use `$state.raw` and replace the whole object.

tsts
let user = $state<{ name: string; email?: string }>({ name: '' });
// later
user.email = 'foo@bar.com'; // ✅ works because email was in the type

goto() before mount throws

Symptom: Navigation from `$effect` or `onMount` fails silently.

Fix: SvelteKit's `goto()` requires the navigation system to be initialized. Wrap in `tick()` or use `redirect()` from a load function instead.

Streamed promises in load() never resolve on the client

Symptom: A skeleton loader spins forever for a server-streamed promise.

Fix: Streamed promises require the response to remain open. A reverse proxy or compression middleware can buffer the response and break streaming. Test against a direct origin URL, then add infrastructure back layer by layer.

Setup

terminal
# Install BugMojo from the Chrome Web Store
# Works with SvelteKit dev (vite), preview, and any adapter (Node, Vercel, Cloudflare)

BugMojo vs alternatives

The honest comparison — where BugMojo wins, and where another tool might serve you better.

FeatureBugMojoBrowser DevTools alone
Replay the bug for a teammate✅❌
Capture SvelteKit form action payload✅ network HAR⚠️ live only
Capture rune state at failure✅ (via DOM)⚠️ snapshot only
One-click ticket to Jira/Linear✅❌
MCP integration for AI coding agents✓—
Console + network (HAR) capture✓Partial
Zero-setup Quick CaptureNo project, no SDKAccount / SDK required
The BugMojo column is highlighted. The closing rows are BugMojo’s core wedge: rrweb session replay, MCP for AI agents, console + network capture, and zero-setup Quick Capture.
Capture your next bug in 15 seconds

BugMojo records the DOM, console, and network — then ships a one-click ticket with the full replay attached. No SDK, no setup.

Try BugMojo free

Frequently asked questions

Frequently asked questions

Sources

  1. Svelte 5 runes overview — svelte.dev (2025)
Share:

More frameworks

Pick another — each guide has its own gotchas, comparison, and fixes.

Next.js 15
JavaScript
Astro 5
JavaScript
React 19
JavaScript
Vue 3.5
JavaScript
WordPress
PHP / CMS
Angular 19
TypeScript

On this page

  • What SvelteKit teams ship with BugMojo
  • SvelteKit gotchas
  • Common SvelteKit bugs
  • Setup
  • BugMojo vs alternatives