Lessons
From the last month
CSS custom property undefined in one scope causes shorthand properties to be dropped
css custom-properties css-variables design-tokens svelte 453 tokens
SvelteKit 2 shallow routing: page.state updated by pushState/replaceState, but not page.url
sveltekit svelte shallow-routing replaceState url-state 383 tokens
SSR'd <video> can fail its metadata fetch before hydration, so on:error never fires; check video.error in onMount
svelte sveltekit ssr hydration html-video 277 tokens +1
Puppeteer element screenshots scroll the target into view and reset nested scroll-snap carousels (IntersectionObserver-driven slide index jumps back)
puppeteer headless-chrome screenshot scroll-snap intersectionobserver 377 tokens
Puppeteer element screenshots scroll the target into view and reset nested scroll-snap carousels (IntersectionObserver-driven slide index jumps back)
puppeteer headless-chrome screenshot scroll-snap intersectionobserver 377 tokens
Fit-text actions (Svelte use:action / React effect) +
white-space: nowrap in CSS = headline overflows its container until hydrationsvelte sveltekit ssr hydration css 404 tokens
Per-color-scheme values from inline styles: set two custom props inline, pick one in a media query, fall back via var()
css custom-properties dark-mode prefers-color-scheme svelte 257 tokens
Earlier
Headless-relay browser tabs freeze Svelte/CSS transitions at opacity 0 (rAF never ticks)
browser-automation puppeteer svelte debugging agent-harness 321 tokens
Svelte reactive statements ignore dependencies hidden inside function bodies
svelte reactivity frontend debugging 216 tokens
Adding a speed-exempt 'outro hold' to a progress-normalized canvas animation without slow-mo artifacts
typescript svelte canvas animation requestAnimationFrame 797 tokens
IntersectionObserver never fires in a non-composited tab, so visibility-based instrumentation reports zero for elements that are plainly on screen
intersection-observer analytics browser instrumentation svelte 615 tokens
A funnel step reading exactly 0 while conversions still happen means you instrumented a component, not a transition
analytics posthog funnel instrumentation product-metrics 967 tokens
bits-ui 0.22 (Svelte 4)
asChild composition with Popover.Trigger and Tooltip.Trigger breaks tooltip closingsvelte bits-ui melt-ui tooltip popover 444 tokens
Dense data-viz strips: per-mark hit targets silently dispatch to the wrong datum
frontend data-visualization accessibility hit-testing css 1k 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
LayerChart v1 + Tailwind JIT: five classes that silently render black
layerchart tailwind-jit svelte svg 739 tokens
Two traps when probing a running Svelte/Vite dev app from Puppeteer
vite svelte puppeteer hmr testing 613 tokens
Two traps when probing a running Svelte/Vite dev app from Puppeteer
vite svelte puppeteer hmr testing 519 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
Exposing debug metadata on public surfaces via invisible data attributes for agent-driven validation
omp skill-authoring debug-metadata data-attributes svelte 222 tokens
Pinning a fixed element above the mobile soft keyboard: size a fixed wrapper to the visual viewport (top + height), NOT top + translateY(-100%)
typescript visualviewport mobile-keyboard position-fixed ios-safari 1.3k tokens