← All reportsPublic report

sveltejs/svelte

web development for the rest of us

88k stars JavaScript View on GitHubprofiled 11d ago
Try GitZoid
77PRs this week
48Contributors
18Deps scanned
0Issues found
01 · Repo overview

How svelte is put together

This is the sveltejs/svelte monorepo containing the Svelte 5 framework: a JavaScript compiler that transforms .svelte single-file components into optimized client and server code, plus the accompanying runtime. The primary language is plain ES-module JavaScript with heavy JSDoc typing checked by TypeScript (no .ts source files in the package itself). The compiler pipeline lives under packages/svelte/src/compiler (parse -> phases -> transform -> print via esrap), while the runtime is split into client (packages/svelte/src/internal/client) and server (SSR) implementations exposed through a granular package.json exports map with browser/worker/default conditions. Supporting areas include a Vite-based playground/sandbox, benchmarking harnesses, and Changesets-driven versioning across the pnpm workspace.

Languages

JavaScript (ESM)TypeScript (types/tests/config)SvelteCSS

Frameworks

Svelte 5 (compiler + runtime, built in-repo)Vite 7 (playground)Rollup 4 (compiler bundling)Vitest 4 (test runner)Playwright (browser tests)ESLint + Prettier

Infrastructure

Node.js >=18 runtimepnpm workspace monorepoChangesets release workflowUMD compiler bundle output (packages/svelte/compiler)

Major components

Compiler core (packages/svelte/src/compiler)

Parses and compiles .svelte files through phases (bindings, css, nodes, patterns, scope), validation, and code printing, exposing compile(), parse(), preprocess(), walk(), and migrate APIs.

Client runtime (src/internal/client + src/reactivity)

Implements the signals-based fine-grained reactivity engine, effects, DOM template hydration/update logic, and reactive built-ins (Map/Set/Date/URL/MediaQuery).

Server runtime / SSR (src/server, src/internal/server)

Renders components to HTML strings on Node with escaping and payload serialization, exposed via svelte/server.

Public runtime modules (animate, attachments, easing, events, motion, store, transition)

User-facing helper libraries: tweened/spring motion, transitions and animations, actions, attachments, event helpers, and legacy stores.

Legacy compatibility layer (src/legacy)

Provides Svelte 4-style component semantics (legacy-client/legacy-server) for backwards compatibility mode.

Playground sandbox (playgrounds/sandbox)

Vite dev/demo app with SSR scripts used to exercise experimental async features and inspector tooling against the workspace svelte package.

Benchmarking harness (benchmarking/)

Runs performance benchmarks per git branch, forks a runner, writes CPU profiles and JSON results, and generates comparison reports.

Build & DX tooling (scripts, rollup config, message generation)

Bundles the UMD compiler, generates version/browser-support/type artifacts, processes error/warning message templates, and enforces treeshakeability.

The past several weeks on Svelte were dominated by a steady stream of bug fixes polishing rendering, hydration, and reactivity edge cases, alongside a notable cluster of performance improvements in mid-to-late August. Documentation also received sustained attention, with many clarifications to guides about runes, effects, transitions, and context. A few new public exports from svelte/server and supply-chain hardening rounded out the period.

Week by week

2026-08-24A quiet week focused on performance tweaks and a batch of small but meaningful rendering and reactivity fixes.latest6 changes

Refactor

Faster select/option value handling

The compiler now reuses cached values when checking whether a select or option's value changed, avoiding redundant work.

Refactor

Faster single-comment templates

Templates containing just one comment now use a lighter-weight creation path for better speed.

Fix

More robust custom element slots

Svelte custom elements now render their slots more reliably across tricky scenarios.

Fix

Radio inputs keep their checked state after hydration

Radio buttons using spread attributes no longer lose their defaultChecked setting when the page hydrates.

Fix

Reactions that throw still record their dependencies

When a reactive computation errors out, its tracked dependencies are committed so future updates behave correctly.

Fix

SvelteDate changes are properly tracked

Snapshots of SvelteDate objects are now tracked by reactions, so date-driven UI updates reliably.

2026-08-17A very busy week (47 commits) blending a version release, numerous fixes across CSS, SSR, and async rendering, plus a wave of documentation improvements.6 changes

Feature

New server-side exports

RenderOutput, SyncRenderOutput, Csp, and Sha256Source are now exported from svelte/server for advanced server-rendering use cases.

Fix

Scoped CSS no longer leaks into svelte:head content

Elements inside <svelte:head> no longer receive scoped style classes they shouldn't have.

Fix

Server renders that fail still run onDestroy callbacks

Cleanup callbacks now fire even when a server-side render throws an error partway through.

Refactor

Legacy reactive statements scale linearly

Map lookups in old-style reactive statements were optimized from quadratic to linear time, speeding up large legacy apps.

Refactor

Async blocker analysis made linear

Analysis of async blockers was rewritten to avoid slow nested loops on complex components.

Docs

Docs clarified across runes, effects, and transitions

Multiple documentation updates explained easing functions, $bindable requirements, $effect.pre timing, $state generics, and reduced-motion behavior for transitions.

2026-08-10Nine targeted fixes shipped, mostly around whitespace/comment handling in the printer and subtle state-tracking bugs.6 changes

Fix

Stale capture listeners removed from spread attributes

Old event-capture listeners are cleaned up when spread attributes change, preventing ghost handlers.

Fix

Effect teardowns see pre-flush values

Effect cleanup functions now receive the value from before any writes in the current flush, matching expectations.

Fix

CSS custom properties with falsy values work on components

Custom properties set to values like 0 or empty strings are now correctly applied to component elements.

Fix

Better whitespace handling in the printer

The code printer handles whitespace more faithfully, preserving formatting intent.

Fix

CSS comments preserved in the AST printer

Comments inside CSS are no longer dropped when code is printed back out.

Fix

No duplicate comments in attributes

Comments within attributes are emitted once instead of being duplicated.

2026-08-03A minimal week with a single fix guarding against conflicting pending batches.1 change

Fix

Controlled each blocks wait for pending batches

The fast path for controlled each blocks is skipped while another update batch is pending, avoiding inconsistent DOM updates.

2026-07-20Two package releases landed along with supply-chain hardening and hydration fixes.4 changes

Chore

Supply chain hardening

Build and release processes were tightened to reduce risk from dependency tampering.

Fix

Working reset for failed hydration boundaries

When hydration fails inside an error boundary, onerror is called and reset now actually works.

Fix

Select selection preserved with spread attributes

Dropdown selections no longer get lost when options are rendered via spread attributes.

Chore

Version packages released

Two routine version-package releases published the accumulated fixes.

03 · Security check

Dependencies and code review

18 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 18 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required