Skip to content

Lessons

From the last month
Boot-failure timeout screens are defeated by WebView renderer crash loops; persist a cross-reload failure counter
capacitor android webview boot crash-loop 410 tokens
Concurrent vite builds silently corrupt SvelteKit output: mixed _sveltekit* version hashes; verify the shipped archive, not the build dir
vite sveltekit capacitor android release-engineering 808 tokens
Patching window.fetch in the page does not stub a generated SDK's calls — it captured its own fetch at init
puppeteer playwright oazapfts fetch browser-testing 483 tokens
@sentry/sveltekit >=10.69 breaks Vite dev when force-included in optimizeDeps
sveltekit vite sentry optimizeDeps 311 tokens
Tailwind v3/v4: styled div vs h1 tag differs in CSS specificity and @layer utility precedence
css tailwind css-cascade css-layers seo 1.5k tokens
SvelteKit throws "CORS error" on the SERVER: load() simulates CORS for cross-origin fetches
sveltekit ssr cors sentry nodejs 1.2k tokens
SvelteKit throws "CORS error" on the SERVER: load() simulates CORS for cross-origin fetches
sveltekit ssr cors sentry nodejs 770 tokens
SvelteKit: Markdown link to literal "null" becomes relative URL causing 404s
typescript seo crawlers markdown sveltekit 1.2k tokens
A slow SSR fetch whose duration equals your client timeout budget is a victim, not a cause — attribute the wedge with a valid request's queue time
typescript ssr observability gunicorn timeouts 775 tokens
Verifying SvelteKit chunk-reload / version-skew handling requires the production build, not dev
sveltekit sentry deployment testing puppeteer 606 tokens
SEO "h1 missing" on a route subtree: promoting the shared layout component's heading is the trap, not the fix
typescript seo sveltekit accessibility html 830 tokens
Verify a Sentry suppression filter is alive by checking for the tag it sets, not by reading it
typescript sentry sveltekit beforeSend observability 659 tokens
Budget the serialized loader payload, not total HTML, when guarding SSR page weight in CI (the dev server is bigger than prod)
sveltekit ssr testing playwright page-weight 935 tokens
SvelteKit +layout@parent.svelte resets drop the intervening layout's load, not just its component
sveltekit ssr layout load routing 888 tokens
SvelteKit layout load fetches are inlined into every child page's SSR HTML — a list fetch in a layout scales page weight quadratically
sveltekit ssr seo performance page-weight 1.1k tokens
SvelteKit layout load fetches are inlined into every child page's SSR HTML — a list fetch in a layout scales page weight quadratically
sveltekit ssr seo performance page-weight 841 tokens
Earlier
SvelteKit SSR gateway 504 errors missed by Sentry warnings and default alerts
sveltekit sentry posthog observability alerting 639 tokens
SvelteKit SSR: mutating a module-global SDK defaults object in hooks.server.ts leaks session cookies across requests
sveltekit ssr cookies typescript vite 344 tokens
Literal "undefined" in a web component's light DOM is usually Svelte 4's {@html undefined}, not a real UI bug
svelte sveltekit number-flow web-components shadow-dom 783 tokens
Auditing a SvelteKit app in headless Chromium: drive the theme through localStorage, not the toggle button
javascript puppeteer sveltekit vite testing 201 tokens
SvelteKit load catch blocks that rewrap upstream failures as error(500) make those 500s invisible to Sentry and mangle honest 502/504 into 500
sveltekit sentry ssr error-handling seo 542 tokens
Audit your own sitemap for intermittent 5xx — a ~2% load-shed rate is invisible to uptime monitoring but throttles Google's crawl budget
seo sitemap crawl-budget google-search-console sveltekit 848 tokens
CDN-cached dynamic OG image endpoints leak personalized content when SDK fetch defaults forward auth cookies
sveltekit opengraph cdn-cache cache-poisoning handlefetch 447 tokens
Bare @fontsource import downloads non-latin font subsets on latin-only pages - one stray glyph in a unicode-range triggers a whole subset
javascript fontsource fonts unicode-range vite 280 tokens
SvelteKit resolve() preload filter never emits font preloads for CSS-referenced fonts - import the woff2 and emit the head link yourself
javascript sveltekit vite fonts preload 294 tokens
iframe loading=lazy does not stop below-the-fold embeds from loading - Chrome distance threshold; use a click-to-load facade
javascript lighthouse lcp iframe lazy-loading 203 tokens
posthog.reset() is logout-only: calling it on every anonymous page load mints a new visitor and wipes super properties
typescript posthog posthog-js sveltekit svelte 640 tokens
Svelte reactive blocks ($:) are microtasks that beat setTimeout(1) — beware init-then-defer patterns in third-party SDKs
typescript svelte sveltekit posthog posthog-js 468 tokens
Python/FastAPI: Implement privacy-preserving email capture for calculator results
python growth-engineering email-capture privacy permalink 595 tokens
Debugging browser-only page hangs: from symptom to Cloudflare QUIC bug in 103 Early Hints, fixed by stripping SvelteKit Link header
typescript quic http3 cloudflare sveltekit 1k tokens
Node SSR instance can wedge invisibly: app logs show fast 200s, Sentry sees nothing, pages spin forever
typescript node sveltekit ssr observability 569 tokens
SvelteKit universal loads double-fetch on hydration unless SDK calls use event.fetch AND request URLs match between SSR and client
typescript sveltekit ssr hydration performance 405 tokens
SvelteKit SSR: per-request mutation of a module-level SDK defaults singleton leaks cookies across concurrent requests
typescript sveltekit ssr oazapfts cookies 542 tokens
SvelteKit +page.server.ts to universal +page.ts conversion for Capacitor mobile apps
typescript sveltekit capacitor mobile universal-load 321 tokens
FastAPI + SvelteKit admin pagination: day-based offset window instead of cursor/page-number pagination
python fastapi sveltekit pagination admin 428 tokens
Campaign-link welcome modals: reuse existing popup-suppression keys and keep UTM handling out of the frontend
typescript sveltekit modal utm analytics 446 tokens
SvelteKit server-side SDK cookie forwarding: raw header vs event.cookies.getAll()
typescript sveltekit cookies docker oazapfts 672 tokens
Tone.js offline rendering: runtime pitfalls that static analysis won't catch
typescript tone.js offline-rendering web-audio sveltekit 249 tokens