mirror of https://github.com/sveltejs/svelte
changeset-release/main
main
avoid-reschedule-during-branch-commit
highlight-effect-in-tree
refactor-scheduling
simplify-if
each-block-pending
async-each-preserve-pending
eager-effect-rework
unified-async
reinstate-reactivity-loss-detection
best-practices-doc
fix-compiler-docs
version-packages-ecosystem-ci
defer-effects-in-pending-boundary
allow-recursive-derived
effect-active
ssr-error-boundary-class
oxlint
bindable-not-updated
hydrate-await-html
object-blockers
beforemount-callback
better-blockers
dependencies-set
elliott/break-out-css-parser
customizable-select-skip-hydration
gh-17393
clear-batch-between-runs
partial-components
allow-state-as-derived-init
hydratable-thenable
dedupe-stack-stuff
fork-methods
elliott/resources
async-each-fix
resource-type
remove-unowned-check
derived-reactivity-loss-fix-alt
gh-17012
state-eager-derived-block
customizable-select
parallelize-async-work
Rich-Harris-patch-1
boundary-batch-first-run
elliott/boundary-issues
elliott/effect-pending-correct-boundary
developer-guide
boundary-batch-nullpointer-fix-alt
legacy-api-hmr-bug
fix-15337
async-fixes-2
1000-reading-derived-effects
binding-fix-2
derived-reactions-maybe-dirty-marked
state-onchange
gh-16365
more-efficient-effect-schedule
source-to-state-in-class-belt-and-braces
warn-read-just-created-state
using-dispose
using
elliott/13891
thunkify-deriveds-on-server
fix-each-legacy-leak
same-fn-attachments
destructure-non-iterators
svelte-4
warn-attachments-legacy-member-access
attach-runes-mode
flush-sync
feat/devtool
binding-evt-without-context
state-onchange-roots
onframe
custom-render-shim-dom
elliott/create-reactive-function
host-docs
invalid-html-structure-error
svelte-element-element
read-old-values-in-teardown
props-id-hydration-markers
fix-props-wrong-value-onunmount
props-id-anywhere
async-changeset
async-fork
aa-coordination-resource
async-abort-signal
aa-coordination
aa
aa-fork
const-rune-usage-error
aaa
attachments-2
tracked
deps-tweak
dont-hoist-snippet-binding-group
ownership-function-bindings
docs-derived-memoized
event-delegation-fixes
eltigerchino-patch-1
fix-inspect-trace
fix-untrack-expose-unsafe
fix-pre-backslash-n
svelte-html
yield
portals
opaque-rune
title-removal-fix
reactivity-boundary-docs
broken-slot-pruning
legacy-conditional-template
hydratable-flag
class-directive-enhancements
gh-14204
ts-strip-fix
migrate-conflict-runes
warning-message
update-store-docs
revert-13651-compile-warning
disclaimer
transition-out-effect-tracking
cleanup-non-render-effects-in-blocks
annotate-notes
migrate-svelte-component
css-migrate-blank
fix-import-run-space
gh-13270
gh-13256
table-td-autoopen
better-docs-for-css-injected
revert-13158-valid-ssr
derived-by-current-value
custom-formatter
gh-12624
omit-trailing-sibling-calls
gh-12084
state-link-fix
readonly-props
gh-12896
migrate-member-assignment
animation-params
feat/support-modern-ast-flag-on-repl
nolyfill
svelte-5-docs-proposal-wip
fix-memory-leak-
chore/bump-deps
snippet-work-cont
effect-active-derived-allow-unowned
runes-in-constructor
some-cleanup
fix-playground
better-snapshot
object-freeze-fix
context-ownership
props-bindable
effect-docs-2
blockless
remove-readonly-check
ttf-fix
remove-ttf-hack
derived-consumer-fix
compile-return-ast
rm-bytes
hoist-unmodified-var
puru/try-jsdelivr
benmccann-patch-2
elliott/add-variadic-snippets
proxied-state-set
dynamic-component-types
proxied-state-each-blocks
baseballyama-docs/string-event
tidy-up-analysis
svelte-4-base
fix-symlink
quicker-redirects
introducing-runes
versioned-docs
raw-hydration-mismatch
fix-stale-await-ctx
parse-regexp-no-paren
fix-dyn-component-test
ce-tick
feat/orama
parser-let-destructure
version-3
sites-examples
gh-3780
v2
svelte@5.53.6
svelte@5.53.5
svelte@5.53.4
svelte@5.53.3
svelte@5.53.2
svelte@5.53.1
svelte@5.53.0
svelte@5.52.0
svelte@5.51.5
svelte@5.51.4
svelte@5.51.3
svelte@5.51.2
svelte@5.51.1
svelte@5.51.0
svelte@5.50.3
svelte@5.50.2
svelte@5.50.1
svelte@5.50.0
svelte@5.49.2
svelte@5.49.1
svelte@5.49.0
svelte@5.48.5
svelte@5.48.4
svelte@5.48.3
svelte@5.48.2
svelte@5.48.1
svelte@5.48.0
svelte@5.47.1
svelte@5.47.0
svelte@5.46.4
svelte@5.46.3
svelte@5.46.1
svelte@5.46.0
svelte@5.45.10
svelte@5.45.9
svelte@5.45.8
svelte@5.45.7
svelte@5.45.6
svelte@5.45.5
svelte@5.45.4
svelte@5.45.3
svelte@5.45.2
svelte@5.45.1
svelte@5.45.0
svelte@5.44.1
svelte@5.44.0
svelte@5.43.15
svelte@5.43.14
svelte@5.43.13
svelte@5.43.12
svelte@5.43.11
svelte@5.43.10
svelte@5.43.9
svelte@5.43.8
svelte@5.43.7
svelte@5.43.6
svelte@5.43.5
svelte@5.43.4
svelte@5.43.3
svelte@5.43.2
svelte@5.43.1
svelte@5.43.0
svelte@5.42.3
svelte@5.42.2
svelte@5.42.1
svelte@5.42.0
svelte@5.41.4
svelte@5.41.3
svelte@5.41.2
svelte@5.41.1
svelte@5.41.0
svelte@5.40.2
svelte@5.40.1
svelte@5.40.0
svelte@5.39.13
svelte@5.39.12
svelte@5.39.11
svelte@5.39.10
svelte@5.39.9
svelte@5.39.8
svelte@5.39.7
svelte@5.39.6
svelte@5.39.5
svelte@5.39.4
svelte@5.39.3
svelte@5.39.2
svelte@5.39.1
svelte@5.39.0
svelte@5.38.10
svelte@5.38.9
svelte@5.38.8
svelte@5.38.7
svelte@5.38.6
svelte@5.38.5
svelte@5.38.3
svelte@5.38.2
svelte@5.38.1
svelte@5.38.0
svelte@5.37.3
svelte@5.37.2
svelte@5.37.1
svelte@5.37.0
svelte@5.36.17
svelte@5.36.16
svelte@5.36.15
svelte@5.36.14
svelte@5.36.13
svelte@5.36.12
svelte@5.36.10
svelte@5.36.9
svelte@5.36.8
svelte@5.36.7
svelte@5.36.6
svelte@5.36.5
svelte@5.36.4
svelte@5.36.3
svelte@5.36.2
svelte@5.36.1
svelte@5.36.0
svelte@5.35.7
svelte@5.35.6
svelte@5.35.5
svelte@5.35.4
svelte@5.35.3
svelte@5.35.2
svelte@5.35.1
svelte@5.35.0
svelte@5.34.9
svelte@5.34.8
svelte@5.34.7
svelte@5.34.6
svelte@5.34.5
svelte@5.34.4
svelte@5.34.3
svelte@5.34.2
svelte@5.34.1
svelte@5.34.0
svelte@5.33.19
svelte@5.33.18
svelte@5.33.17
svelte@5.33.16
svelte@5.33.15
svelte@5.33.14
svelte@5.33.13
svelte@5.33.12
svelte@5.33.11
svelte@5.33.10
svelte@5.33.9
svelte@5.33.8
svelte@5.33.7
svelte@5.33.6
svelte@5.33.5
svelte@5.33.4
svelte@5.33.3
svelte@5.33.2
svelte@5.33.1
svelte@5.33.0
svelte@5.32.2
svelte@5.32.1
svelte@4.2.20
svelte@5.32.0
svelte@5.31.1
svelte@5.31.0
svelte@5.30.2
svelte@5.30.1
svelte@5.30.0
svelte@5.29.0
svelte@5.28.7
svelte@5.28.6
svelte@5.28.5
svelte@5.28.4
svelte@5.28.3
svelte@5.28.2
svelte@5.28.1
svelte@5.28.0
svelte@5.27.3
svelte@5.27.2
svelte@5.27.1
svelte@5.27.0
svelte@5.26.3
svelte@5.26.2
svelte@5.26.1
svelte@5.26.0
svelte@5.25.12
svelte@5.25.11
svelte@5.25.10
svelte@5.25.9
svelte@5.25.8
svelte@5.25.7
svelte@5.25.6
svelte@5.25.5
svelte@5.25.4
svelte@5.25.3
svelte@5.25.2
svelte@5.25.1
svelte@5.25.0
svelte@5.24.1
svelte@5.24.0
svelte@5.23.2
svelte@5.23.1
svelte@5.23.0
svelte@5.22.6
svelte@5.22.5
svelte@5.22.4
svelte@5.22.3
svelte@5.22.2
svelte@5.22.1
svelte@5.22.0
svelte@5.21.0
svelte@5.20.5
svelte@5.20.4
svelte@5.20.3
svelte@5.20.2
svelte@5.20.1
svelte@5.20.0
svelte@5.19.10
svelte@5.19.9
svelte@5.19.8
svelte@5.19.7
svelte@5.19.6
svelte@5.19.5
svelte@5.19.4
svelte@5.19.3
svelte@5.19.2
svelte@5.19.1
svelte@5.19.0
svelte@5.18.0
svelte@5.17.5
svelte@5.17.4
svelte@5.17.3
svelte@5.17.2
svelte@5.17.1
svelte@5.17.0
svelte@5.16.6
svelte@5.16.5
svelte@5.16.4
svelte@5.16.3
svelte@5.16.2
svelte@5.16.1
svelte@5.16.0
svelte@5.15.0
svelte@5.14.6
svelte@5.14.5
svelte@5.14.4
svelte@5.14.3
svelte@5.14.2
svelte@5.14.1
svelte@5.14.0
svelte@5.13.0
svelte@5.12.0
svelte@5.11.3
svelte@5.11.2
svelte@5.11.1
svelte@5.11.0
svelte@5.10.1
svelte@5.10.0
svelte@5.9.1
svelte@5.9.0
svelte@5.8.1
svelte@5.8.0
svelte@5.7.1
svelte@5.7.0
svelte@5.6.2
svelte@5.6.1
svelte@5.6.0
svelte@5.5.4
svelte@5.5.3
svelte@5.5.2
svelte@5.5.0
svelte@5.4.0
svelte@5.3.2
svelte@5.3.1
svelte@5.3.0
svelte@5.2.12
svelte@5.2.11
svelte@5.2.10
svelte@5.2.9
svelte@5.2.8
svelte@5.2.7
svelte@5.2.6
svelte@5.2.5
svelte@5.2.4
svelte@5.2.3
svelte@5.2.2
svelte@5.2.1
svelte@5.2.0
svelte@5.1.17
svelte@5.1.16
svelte@5.1.15
svelte@5.1.14
svelte@5.1.13
svelte@5.1.12
svelte@5.1.11
svelte@5.1.10
svelte@5.1.9
svelte@5.1.8
svelte@5.1.7
svelte@5.1.6
svelte@5.1.5
svelte@5.1.4
svelte@5.1.3
svelte@5.1.2
svelte@5.1.1
svelte@5.1.0
svelte@5.0.5
svelte@5.0.4
svelte@5.0.3
svelte@5.0.2
svelte@5.0.1
svelte@5.0.0
svelte@5.0.0-next.272
svelte@5.0.0-next.271
svelte@5.0.0-next.270
svelte@5.0.0-next.269
svelte@5.0.0-next.268
svelte@5.0.0-next.267
svelte@5.0.0-next.266
svelte@5.0.0-next.265
svelte@5.0.0-next.264
svelte@5.0.0-next.263
svelte@5.0.0-next.262
svelte@5.0.0-next.260
svelte@5.0.0-next.259
svelte@5.0.0-next.258
svelte@5.0.0-next.257
svelte@5.0.0-next.256
svelte@5.0.0-next.255
svelte@5.0.0-next.254
svelte@5.0.0-next.253
svelte@5.0.0-next.252
svelte@5.0.0-next.251
svelte@5.0.0-next.250
svelte@5.0.0-next.249
svelte@5.0.0-next.248
svelte@5.0.0-next.247
svelte@5.0.0-next.246
svelte@5.0.0-next.245
svelte@5.0.0-next.244
svelte@5.0.0-next.243
svelte@5.0.0-next.242
svelte@5.0.0-next.241
svelte@5.0.0-next.240
svelte@5.0.0-next.239
svelte@5.0.0-next.238
svelte@5.0.0-next.237
svelte@5.0.0-next.236
svelte@4.2.19
svelte@5.0.0-next.235
svelte@5.0.0-next.234
svelte@5.0.0-next.233
svelte@5.0.0-next.232
svelte@5.0.0-next.231
svelte@5.0.0-next.230
svelte@5.0.0-next.229
svelte@5.0.0-next.228
svelte@5.0.0-next.227
svelte@5.0.0-next.226
svelte@5.0.0-next.225
svelte@5.0.0-next.224
svelte@5.0.0-next.223
svelte@5.0.0-next.222
svelte@5.0.0-next.221
svelte@5.0.0-next.220
svelte@5.0.0-next.219
svelte@5.0.0-next.218
svelte@5.0.0-next.217
svelte@5.0.0-next.216
svelte@5.0.0-next.215
svelte@5.0.0-next.214
svelte@5.0.0-next.213
svelte@5.0.0-next.212
svelte@5.0.0-next.211
svelte@5.0.0-next.210
svelte@5.0.0-next.208
svelte@5.0.0-next.207
svelte@5.0.0-next.206
svelte@5.0.0-next.205
svelte@5.0.0-next.204
svelte@5.0.0-next.203
svelte@5.0.0-next.202
svelte@5.0.0-next.201
svelte@5.0.0-next.200
svelte@5.0.0-next.199
svelte@5.0.0-next.198
svelte@5.0.0-next.197
svelte@5.0.0-next.196
svelte@5.0.0-next.195
svelte@5.0.0-next.194
svelte@5.0.0-next.193
svelte@5.0.0-next.192
svelte@5.0.0-next.191
svelte@5.0.0-next.190
svelte@5.0.0-next.189
svelte@5.0.0-next.188
svelte@5.0.0-next.187
svelte@5.0.0-next.186
svelte@5.0.0-next.185
svelte@5.0.0-next.184
svelte@5.0.0-next.183
svelte@5.0.0-next.182
svelte@5.0.0-next.181
svelte@5.0.0-next.180
svelte@5.0.0-next.179
svelte@5.0.0-next.178
svelte@5.0.0-next.177
svelte@5.0.0-next.176
svelte@5.0.0-next.175
svelte@5.0.0-next.174
svelte@5.0.0-next.173
svelte@5.0.0-next.172
svelte@5.0.0-next.171
svelte@5.0.0-next.170
svelte@5.0.0-next.169
svelte@5.0.0-next.168
svelte@5.0.0-next.167
svelte@5.0.0-next.166
svelte@5.0.0-next.165
svelte@5.0.0-next.164
svelte@5.0.0-next.163
svelte@5.0.0-next.160
svelte@5.0.0-next.159
svelte@5.0.0-next.158
svelte@5.0.0-next.157
svelte@5.0.0-next.155
svelte@5.0.0-next.154
svelte@5.0.0-next.153
svelte@5.0.0-next.152
svelte@5.0.0-next.151
svelte@4.2.18
svelte@5.0.0-next.150
svelte@5.0.0-next.149
svelte@5.0.0-next.148
svelte@5.0.0-next.147
svelte@5.0.0-next.144
svelte@5.0.0-next.143
svelte@5.0.0-next.142
svelte@5.0.0-next.141
svelte@5.0.0-next.140
svelte@5.0.0-next.139
svelte@5.0.0-next.138
svelte@5.0.0-next.137
svelte@5.0.0-next.136
svelte@5.0.0-next.135
svelte@5.0.0-next.134
svelte@5.0.0-next.133
svelte@5.0.0-next.132
svelte@4.2.17
svelte@5.0.0-next.131
svelte@5.0.0-next.130
svelte@5.0.0-next.129
svelte@5.0.0-next.128
svelte@5.0.0-next.127
svelte@5.0.0-next.126
svelte@5.0.0-next.125
svelte@4.2.16
svelte@5.0.0-next.123
svelte@5.0.0-next.121
svelte@5.0.0-next.120
svelte@5.0.0-next.119
svelte@5.0.0-next.118
svelte@5.0.0-next.117
svelte@5.0.0-next.116
svelte@5.0.0-next.115
svelte@5.0.0-next.114
svelte@5.0.0-next.113
svelte@5.0.0-next.112
svelte@5.0.0-next.111
svelte@5.0.0-next.110
svelte@5.0.0-next.109
svelte@5.0.0-next.108
svelte@4.2.15
svelte@5.0.0-next.107
svelte@5.0.0-next.106
svelte@5.0.0-next.105
svelte@5.0.0-next.104
svelte@5.0.0-next.103
svelte@5.0.0-next.102
svelte@4.2.14
svelte@5.0.0-next.101
svelte@5.0.0-next.100
svelte@5.0.0-next.99
svelte@5.0.0-next.98
svelte@5.0.0-next.97
svelte@4.2.13
svelte@5.0.0-next.96
svelte@5.0.0-next.95
svelte@5.0.0-next.94
svelte@5.0.0-next.93
svelte@5.0.0-next.92
svelte@5.0.0-next.91
svelte@5.0.0-next.90
svelte@5.0.0-next.89
svelte@5.0.0-next.88
svelte@5.0.0-next.87
svelte@5.0.0-next.86
svelte@5.0.0-next.85
svelte@5.0.0-next.84
svelte@5.0.0-next.83
svelte@5.0.0-next.82
svelte@5.0.0-next.81
svelte@5.0.0-next.80
svelte@5.0.0-next.79
svelte@5.0.0-next.78
svelte@5.0.0-next.77
svelte@5.0.0-next.76
svelte@5.0.0-next.75
svelte@5.0.0-next.74
svelte@5.0.0-next.73
svelte@5.0.0-next.72
svelte@5.0.0-next.71
svelte@5.0.0-next.70
svelte@5.0.0-next.69
svelte@5.0.0-next.68
svelte@5.0.0-next.67
svelte@5.0.0-next.66
svelte@4.2.12
svelte@5.0.0-next.65
svelte@5.0.0-next.64
svelte@5.0.0-next.63
svelte@5.0.0-next.62
svelte@5.0.0-next.61
svelte@5.0.0-next.60
svelte@5.0.0-next.59
svelte@5.0.0-next.58
svelte@5.0.0-next.57
svelte@5.0.0-next.56
svelte@5.0.0-next.55
svelte@4.2.11
svelte@5.0.0-next.54
svelte@5.0.0-next.53
svelte@5.0.0-next.52
svelte@5.0.0-next.51
svelte@5.0.0-next.50
svelte@5.0.0-next.49
svelte@5.0.0-next.48
svelte@5.0.0-next.47
svelte@4.2.10
svelte@5.0.0-next.46
svelte@5.0.0-next.45
svelte@5.0.0-next.44
svelte@5.0.0-next.43
svelte@5.0.0-next.42
svelte@5.0.0-next.41
svelte@5.0.0-next.40
svelte@5.0.0-next.39
svelte@5.0.0-next.38
svelte@5.0.0-next.37
svelte@4.2.9
svelte@5.0.0-next.36
svelte@5.0.0-next.35
svelte@5.0.0-next.34
svelte@5.0.0-next.33
svelte@5.0.0-next.32
svelte@5.0.0-next.31
svelte@5.0.0-next.30
svelte@5.0.0-next.29
svelte@5.0.0-next.28
svelte@5.0.0-next.27
svelte@5.0.0-next.26
svelte@5.0.0-next.25
svelte@5.0.0-next.24
svelte@5.0.0-next.23
svelte@5.0.0-next.22
svelte@5.0.0-next.21
svelte@5.0.0-next.20
svelte@5.0.0-next.19
svelte@5.0.0-next.18
svelte@5.0.0-next.17
svelte@5.0.0-next.16
svelte@4.2.8
svelte@5.0.0-next.15
svelte@5.0.0-next.14
svelte@5.0.0-next.13
svelte@5.0.0-next.12
svelte@5.0.0-next.11
svelte@5.0.0-next.10
svelte@5.0.0-next.9
svelte@4.2.7
svelte@4.2.6
svelte@5.0.0-next.8
svelte@5.0.0-next.7
svelte@5.0.0-next.6
svelte@5.0.0-next.5
svelte@4.2.5
svelte@4.2.4
svelte@5.0.0-next.4
svelte@5.0.0-next.3
svelte@5.0.0-next.2
svelte@5.0.0-next.1
svelte@4.2.3
svelte@4.2.2
svelte@4.2.1
svelte@4.2.0
svelte@4.1.2
svelte@4.1.1
svelte@4.1.0
svelte@4.0.5
svelte@4.0.4
svelte@4.0.3
svelte@4.0.2
svelte@4.0.1
svelte@4.0.0
svelte@4.0.0-next.3
v3.59.2
svelte@4.0.0-next.1
svelte@4.0.0-next.0
v3.59.1
v3.59.0
v3.58.0
v3.57.0
v3.56.0
v3.55.1
v3.55.0
v3.54.0
v3.53.1
v3.53.0
v3.52.0
v3.51.0
v3.50.1
v3.50.0
v3.49.0
v3.48.0
v3.47.0
v3.46.6
v3.46.5
v3.46.4
v3.46.3
v3.46.2
v3.46.1
v3.46.0
v3.45.0
v3.44.3
v3.44.2
v3.44.1
v3.44.0
v3.43.2
v3.43.1
v3.43.0
v3.42.6
v3.42.5
v3.42.4
v3.42.3
v3.42.2
v3.42.1
v3.42.0
v3.41.0
v3.40.3
v3.40.2
v3.40.1
v3.40.0
v3.39.0
v3.38.3
v3.38.2
v3.38.1
v3.38.0
v3.37.0
v3.36.0
v3.35.0
v3.34.0
v3.33.0
v3.32.3
v3.32.2
v3.32.1
v3.32.0
v3.31.2
v3.31.1
v3.31.0
v3.30.1
v3.30.0
v3.29.7
v3.29.6
v3.29.5
v3.29.4
v3.29.3
v3.29.2
v3.29.1
v3.29.0
v3.28.0
v3.27.0
v3.26.0
v3.25.1
v3.25.0
v3.24.1
v3.24.0
v3.23.2
v3.23.1
v3.23.0
v3.22.3
v3.22.2
v3.22.1
v3.22.0
v3.21.0
v3.20.1
v3.20.0
v3.19.2
v3.19.1
v3.19.0
v3.18.2
v3.18.1
v3.18.0
v3.17.3
v3.17.2
v3.17.1
v3.17.0
v3.16.7
v3.16.6
v3.16.5
v3.16.4
v3.16.3
v3.16.2
v3.16.1
v3.16.0
v3.15.0
v3.14.1
v3.14.0
v3.13.0
v3.12.1
v3.12.0
v3.11.0
v3.10.1
v3.10.0
v3.9.2
v3.9.1
v3.9.0
v3.8.1
v3.8.0
v3.7.1
v3.7.0
v3.6.11
v3.6.10
v3.6.9
v3.6.8
v3.6.7
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.0
v3.2.2
v3.2.1
v3.2.0
v3.1.0
v3.0.1
v3.0.0
v3.0.0-beta.24
v2.16.1
v2.16.0
v2.15.4
v2.15.3
v2.15.2
v2.15.1
v2.15.0
v2.14.3
v2.14.2
v2.14.1
v2.14.0
v2.13.5
v2.13.4
v2.13.3
v2.13.2
v2.13.1
v2.13.0
v2.12.1
v2.12.0
v2.11.0
v2.10.1
v2.10.0
v2.9.11
v2.9.10
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.8.1
v2.8.0
v2.7.2
v2.7.1
v2.7.0
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.1
v2.5.0
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.0
v2.2.0
v2.1.1
v2.1.0
v2.0.0
v1.64.1
v1.64.0
v1.63.1
v1.63.0
v1.62.0
v1.61.0
v1.60.3
v1.60.2
v1.60.1
v1.60.0
v1.59.0
v1.58.5
v1.58.4
v1.58.3
v1.58.2
v1.58.1
v1.58.0
v1.57.4
v1.57.3
v1.57.2
v1.57.1
v1.57.0
v1.56.4
v1.56.3
v1.56.2
v1.56.1
v1.56.0
v1.55.1
v1.55.0
v1.54.2
v1.54.1
v1.54.0
v1.53.0
v1.52.0
v1.51.1
v1.51.0
v1.50.1
v1.50.0
v1.49.3
v1.49.2
v1.49.1
v1.49.0
v1.48.0
v1.47.2
v1.47.1
v1.47.0
v1.46.1
v1.46.0
v1.45.0
v1.44.2
v1.44.1
v1.44.0
v1.43.1
v1.43.0
v1.42.1
v1.42.0
v1.41.4
v1.41.3
v1.41.2
v1.41.1
v1.41.0
v1.40.2
v1.40.1
v1.40.0
v1.39.4
v1.39.3
v1.39.2
v1.39.1
v1.39.0
v1.38.0
v1.37.0
v1.36.0
v1.35.0
v1.34.0
v1.33.0
v1.32.0
v1.31.0
v1.30.0
v1.29.3
v1.29.2
v1.29.1
v1.29.0
v1.28.1
v1.28.0
v1.27.0
v1.26.2
v1.26.1
v1.26.0
v1.25.1
v1.25.0
v1.24.0
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.21.0
v1.20.2
v1.20.1
v1.20.0
v1.19.1
v1.19.0
v1.18.2
v1.18.1
v1.18.0
v1.17.2
v1.17.1
v1.17.0
v1.16.0
v1.15.1
v1.15.0
v1.14.1
v1.14.0
v1.13.7
v1.13.6
v1.13.5
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.1
v1.12.0
v1.11.4
v1.11.3
v1.11.2
v1.11.1
v1.11.0
v1.10.2
v1.10.1
v1.10.0
v1.9.1
v1.9.0
v1.8.1
v1.8.0
v1.7.1
v1.7.0
v1.6.11
v1.6.10
v1.6.9
v1.6.8
v1.6.7
v1.6.6
v1.6.5
v1.6.4
v1.6.3
v1.6.2
v1.6.1
v1.6.0
v1.5.0
v1.4.0
v1.3.1
v1.3.0
v1.2.5
v1.2.4
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0.0
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
v0.0.2
${ item.name }
${ noResults }
11033 Commits (avoid-reschedule-during-branch-commit)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
d1b227395c |
changeset
|
1 day ago |
|
|
b94f4436aa |
tidy up
|
1 day ago |
|
|
42db628b5f |
handle the reverse case
|
1 day ago |
|
|
58b7c135db |
WIP
|
1 day ago |
|
|
363fa5a695 |
note to self
|
1 day ago |
|
|
942d9f230c |
WIP
|
1 day ago |
|
|
cedd2abd9f |
Merge branch 'main' into reschedule-during-traverse
|
1 day ago |
|
|
4aa3777271
|
chore: better log_effect_tree (#17833)
While working on the reactivity it's very helpful to be able to log a snapshot of the effect tree. This PR augments the existing `log_effect_tree` helper by marking unreachable-but-dirty effects, like so: <img width="333" height="415" alt="image" src="https://github.com/user-attachments/assets/2c7501f7-b845-4271-b534-3a8be0ff62ee" /> (I had thought `log_inconsistent_branches` was designed to help with this but it didn't work for me. Do we need both? cc @dummdidumm) --------- Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com> |
1 day ago |
|
|
69c628d8d0 |
tidy up
|
1 day ago |
|
|
d93dfc9023 |
perf: avoid rescheduling effects when resuming
|
1 day ago |
|
|
7c7797f62c |
Fix: The `child_is_reachable` calculation in `log_effect_tree` fails to incorporate the parent's `is_reachable` state, causing descendant effects to be incorrectly marked as reachable when an ancestor is unreachable.
This commit fixes the issue reported at packages/svelte/src/internal/client/dev/debug.js:130
**Bug Explanation:**
The `log_effect_tree` function recursively traverses an effect tree to log effects and mark "unreachable-but-dirty" effects with a warning. The function receives an `is_reachable` parameter indicating whether the current effect is reachable based on its ancestors.
At line 130, the original code was:
```javascript
var child_is_reachable = (flags & BRANCH_EFFECT) === 0 || (flags & CLEAN) === 0;
```
This calculation determines reachability for children based only on whether the *current* effect would block propagation (being a clean BRANCH_EFFECT). However, it completely ignores the incoming `is_reachable` parameter.
**Example scenario where the bug manifests:**
- Root (reachable) → `is_reachable = true`
- Branch A: clean BRANCH_EFFECT → passes `child_is_reachable = false` to children
- Branch B: dirty BRANCH_EFFECT → receives `is_reachable = false`, but calculates `child_is_reachable = false || true = true`
- Effect C: dirty → receives `is_reachable = true` (WRONG!)
Effect C should be marked as unreachable with a warning (⚠️) because its ancestor Branch A is a clean branch that doesn't propagate updates. Instead, it would appear as reachable because Branch B is dirty, and the original code doesn't carry forward the unreachability.
**The Fix:**
Changed the calculation to combine the inherited reachability with the current effect's contribution:
```javascript
var child_is_reachable = is_reachable && ((flags & BRANCH_EFFECT) === 0 || (flags & CLEAN) === 0);
```
Now:
- If `is_reachable` is already `false` (from an ancestor), children remain unreachable regardless of the current effect's state
- If `is_reachable` is `true`, the original logic applies to determine if THIS effect makes children unreachable
This ensures unreachability properly propagates down the entire subtree once an ancestor clean branch is encountered.
Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Co-authored-by: Rich-Harris <hello@rich-harris.dev>
|
1 day ago |
|
|
c7c80edca2 |
chore: better log_effect_tree
|
1 day ago |
|
|
15e1e73f9c
|
chore: add `batch.id` property (#17831)
I cannot tell you how many times I have temporarily added this code to make it easier to debug some async stuff. I am extremely bored of doing so. I'm just going to add it to `main` to save myself the annoyance. We can remove it once everything async is stable |
2 days ago |
|
|
d4c78292ed
|
Version Packages (#17812)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## svelte@5.53.6 ### Patch Changes - perf: optimize parser hot paths for faster compilation ([#17811](https://github.com/sveltejs/svelte/pull/17811)) - fix: `SvelteMap` incorrectly handles keys with `undefined` values ([#17826](https://github.com/sveltejs/svelte/pull/17826)) - fix: SvelteURL `search` setter now returns the normalized value, matching native URL behavior ([#17828](https://github.com/sveltejs/svelte/pull/17828)) - fix: visit synthetic value node during ssr ([#17824](https://github.com/sveltejs/svelte/pull/17824)) - fix: always case insensitive event handlers during ssr ([#17822](https://github.com/sveltejs/svelte/pull/17822)) - chore: more efficient effect scheduling ([#17808](https://github.com/sveltejs/svelte/pull/17808)) - perf: optimize compiler analysis phase ([#17823](https://github.com/sveltejs/svelte/pull/17823)) - fix: skip redundant batch.apply ([#17816](https://github.com/sveltejs/svelte/pull/17816)) - chore: null out current_batch before committing branches ([#17809](https://github.com/sveltejs/svelte/pull/17809)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
3 days ago |
|
|
361b32c7cd
|
fix: SvelteURL search setter uses unnormalized value (#17828)
## Summary - The `SvelteURL` `search` setter stored the raw input `value` instead of `super.search`, unlike every other setter in the class - This caused `url.search` to return incorrect values when the URL API normalizes the input (e.g. adding the `?` prefix, or stripping a lone `?`) - For example: `url.search = 'foo=bar'` would return `'foo=bar'` instead of `'?foo=bar'` ## Test plan - [x] Added `url.search normalizes value` test covering: - Setting search without `?` prefix - Setting search with `?` prefix (existing behavior) - Setting search to lone `?` (normalized to `""`) - [x] All existing reactivity tests pass (46/46) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
3 days ago |
|
|
6e9b2a6fd8
|
docs: best practices (#17804)
Based on #17727 but with a few changes: - smaller (fewer tokens) - removed some bits that are really just summarising existing docs - added an explicit 'don't use these legacy features' section - shuffled some things around a bit --------- Co-authored-by: paoloricciuti <ricciutipaolo@gmail.com> Co-authored-by: Federico Varano <50919335+fvarano@users.noreply.github.com> Co-authored-by: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> |
3 days ago |
|
|
1043f79d1e
|
perf: optimize compiler analysis phase (#17823)
## Summary Two optimizations to the compiler's analysis phase: - **Cache `ignore_stack` snapshots instead of `structuredClone` on every node.** The universal `_` visitor in the analysis walk runs on every AST node and calls `structuredClone(ignore_stack)` each time. In practice, `svelte-ignore` comments are rare (0–5 per component), so 99%+ of nodes deep-clone an unchanged stack. This adds a copy-on-write cache that only re-creates the snapshot when `push_ignore`/`pop_ignore` actually change the stack. - **Walk the CSS stylesheet once instead of once per element.** `prune()` was called in a loop for each element, each time doing a full `walk()` of the stylesheet AST. This restructures the loop so the stylesheet is walked once, and the element iteration happens inside the `ComplexSelector` visitor. ## Benchmarks Compiled each component 500 times (after 50 warmup iterations), measuring average time per `compile()` call: | Component | Before | After | Speedup | |---|---|---|---| | `has` (80+ CSS selectors, 12 elements) | 3.405 ms | 2.680 ms | **21% faster** | | `siblings-combinator-each-nested` (65 CSS rules, 15 elements) | 2.034 ms | 1.575 ms | **23% faster** | | synthetic (100 CSS rules, 50 elements) | 10.099 ms | 4.564 ms | **55% faster** | The CSS pruning optimization scales with `elements × CSS rules` — the more elements a component has, the bigger the win since we go from N stylesheet walks down to 1. The `structuredClone` fix helps every component regardless of CSS, eliminating ~500–2000 deep clones per compile (one per AST node) and replacing them with 0–5 (one per `svelte-ignore` comment). For typical real-world components with 10–20 elements and some CSS, expect roughly **20–30% faster compilation** in the analysis phase. ## Test plan - [x] Full test suite passes (7329 tests, 0 failures) - [x] CSS pruning tests pass (selector matching, scoping, unused rule detection) - [x] `svelte-ignore` behavior unchanged (snapshot is consumed read-only via `.has()`/`.some()`) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
3 days ago |
|
|
b6faa2a905
|
fix: always case insensitive event handlers during ssr (#17822)
Fixes events not being stripped on svg, mathml and custom elements. ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> |
3 days ago |
|
|
e3d277b000
|
fix: visit synthetic value node during ssr (#17824)
Closes #17821 ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
3 days ago |
|
|
a10cf95ca7
|
chore: add funding manifest URL (#17827)
Related to https://github.com/sveltejs/svelte.dev/pull/1632 This will allow us to apply for a grant from floss.fund ### Before submitting the PR, please make sure you do the following - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [ ] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
3 days ago |
|
|
18db0cab86
|
fix: SvelteMap incorrectly handles keys with `undefined` values (#17826)
## Summary
`SvelteMap` had two bugs related to how it checked for key existence
internally:
### 1. `has()` and `get()` returned wrong results for keys with
`undefined` values
Both methods used `super.get(key) !== undefined` to determine if a key
existed before creating a per-key reactive source. This fails for keys
whose value is legitimately `undefined`, causing:
- `has(key)` to return `false` for existing keys with `undefined` values
- `get(key)` to skip creating a per-key source and fall back to tracking
`version`, resulting in over-notification
**Fix:** Replace `super.get(key) !== undefined` with `super.has(key)` in
both `has()` and `get()`, matching the pattern already used in
`SvelteSet`.
### 2. `delete()` skipped reactive updates when a key had no per-key
source
The `size` and `version` reactive updates were inside the `if (s !==
undefined)` block, meaning they only fired when a per-key source existed
(i.e., someone had previously called `has()` or `get()` on that specific
key). If a key was added via the constructor or `set()` but never
individually read, deleting it would not trigger reactive updates for
effects depending on `size` or iterators.
**Fix:** Move `set(this.#size, super.size)` and
`increment(this.#version)` to a separate `if (res)` block so they fire
whenever a key is actually deleted, regardless of whether a per-key
source existed.
### Before fix
```js
const map = new SvelteMap([['foo', undefined]]);
map.has('foo'); // false (should be true)
map.get('foo'); // undefined but tracks version instead of per-key source
```
### After fix
```js
const map = new SvelteMap([['foo', undefined]]);
map.has('foo'); // true
map.get('foo'); // undefined with correct per-key tracking
```
## Test plan
Tests are in `packages/svelte/src/reactivity/map.test.ts`:
- `map.has()` returns `true` for constructor-initialized keys with
`undefined` values
- `map.get()` returns `undefined` with proper per-key reactive tracking
- `map.delete()` triggers `has()`/`get()` reactivity for
undefined-valued keys
- `map.set(key, undefined)` followed by `has()`/`get()` works correctly
- `map.delete()` triggers `size` reactivity for keys that were never
individually read (no per-key source)
- All existing tests pass unchanged
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
3 days ago |
|
|
3fc4bc6774
|
chore: remove unused is_flushing variable (#17820)
as of a few PRs ago this variable is unused |
3 days ago |
|
|
16a13517ef
|
fix: skip redundant batch.apply (#17816)
tiny fix — just realised we're calling `this.apply()` (via `this.activate()`) unnecessarily, since it will happen again immediately after in `flush_effects` |
4 days ago |
|
|
10380c2309
|
docs: fix list item (#17815)
Fixes the formatting for this list https://svelte-dev-git-sync-svelte-svelte.vercel.app/docs/svelte/v5-migration-guide#Whitespace-handling-changed Follow up #17806 |
4 days ago |
|
|
04ba134d33
|
docs: flesh out `attribute_invalid_sequence_expression` message (#17789)
closes #1404 |
4 days ago |
|
|
d83e4be1f0
|
docs: document the {' '} trick (#17806)
Hi! I run into this issue today, and found the fix in https://github.com/sveltejs/svelte/issues/16680#issuecomment-3229435832 I thought it would be a nice addition to the documentation (it's where I looked first) ### Before submitting the PR, please make sure you do the following - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` --------- Co-authored-by: Rich Harris <hello@rich-harris.dev> |
4 days ago |
|
|
fc67c9cfe9
|
chore(deps-dev): bump rollup from 4.52.5 to 4.59.0 (#17810)
Bumps [rollup](https://github.com/rollup/rollup) from 4.52.5 to 4.59.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rollup/rollup/releases">rollup's releases</a>.</em></p> <blockquote> <h2>v4.59.0</h2> <h2>4.59.0</h2> <p><em>2026-02-22</em></p> <h3>Features</h3> <ul> <li>Throw when the generated bundle contains paths that would leave the output directory (<a href="https://redirect.github.com/rollup/rollup/issues/6276">#6276</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6275">#6275</a>: Validate bundle stays within output dir (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> </ul> <h2>v4.58.0</h2> <h2>4.58.0</h2> <p><em>2026-02-20</em></p> <h3>Features</h3> <ul> <li>Also support <code>__NO_SIDE_EFFECTS__</code> annotation before variable declarations declaring function expressions (<a href="https://redirect.github.com/rollup/rollup/issues/6272">#6272</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6256">#6256</a>: docs: document PreRenderedChunk properties including isDynamicEntry and isImplicitEntry (<a href="https://github.com/njg7194"><code>@njg7194</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6259">#6259</a>: docs: Correct typo and improve sentence structure in docs for <code>output.experimentalMinChunkSize</code> (<a href="https://github.com/millerick"><code>@millerick</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6260">#6260</a>: fix(deps): update rust crate swc_compiler_base to v47 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6261">#6261</a>: fix(deps): lock file maintenance minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6262">#6262</a>: Avoid unnecessary cloning of the code string (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6263">#6263</a>: fix(deps): update minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6265">#6265</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6267">#6267</a>: fix(deps): update minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6268">#6268</a>: chore(deps): update dependency eslint-plugin-unicorn to v63 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6269">#6269</a>: chore(deps): update dependency lru-cache to v11 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6270">#6270</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6272">#6272</a>: forward NO_SIDE_EFFECTS annotations to function expressions in variable declarations (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> </ul> <h2>v4.57.1</h2> <h2>4.57.1</h2> <p><em>2026-01-30</em></p> <h3>Bug Fixes</h3> <ul> <li>Fix heap corruption issue in Windows (<a href="https://redirect.github.com/rollup/rollup/issues/6251">#6251</a>)</li> <li>Ensure exports of a dynamic import are fully included when called from a try...catch (<a href="https://redirect.github.com/rollup/rollup/issues/6254">#6254</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6251">#6251</a>: fix: Isolate and cache <code>process.report.getReport()</code> calls in a child process for robust environment detection (<a href="https://github.com/alan-agius4"><code>@alan-agius4</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rollup/rollup/blob/master/CHANGELOG.md">rollup's changelog</a>.</em></p> <blockquote> <h2>4.59.0</h2> <p><em>2026-02-22</em></p> <h3>Features</h3> <ul> <li>Throw when the generated bundle contains paths that would leave the output directory (<a href="https://redirect.github.com/rollup/rollup/issues/6276">#6276</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6275">#6275</a>: Validate bundle stays within output dir (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> </ul> <h2>4.58.0</h2> <p><em>2026-02-20</em></p> <h3>Features</h3> <ul> <li>Also support <code>__NO_SIDE_EFFECTS__</code> annotation before variable declarations declaring function expressions (<a href="https://redirect.github.com/rollup/rollup/issues/6272">#6272</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6256">#6256</a>: docs: document PreRenderedChunk properties including isDynamicEntry and isImplicitEntry (<a href="https://github.com/njg7194"><code>@njg7194</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6259">#6259</a>: docs: Correct typo and improve sentence structure in docs for <code>output.experimentalMinChunkSize</code> (<a href="https://github.com/millerick"><code>@millerick</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6260">#6260</a>: fix(deps): update rust crate swc_compiler_base to v47 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6261">#6261</a>: fix(deps): lock file maintenance minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6262">#6262</a>: Avoid unnecessary cloning of the code string (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6263">#6263</a>: fix(deps): update minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6265">#6265</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6267">#6267</a>: fix(deps): update minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6268">#6268</a>: chore(deps): update dependency eslint-plugin-unicorn to v63 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6269">#6269</a>: chore(deps): update dependency lru-cache to v11 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6270">#6270</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6272">#6272</a>: forward NO_SIDE_EFFECTS annotations to function expressions in variable declarations (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> </ul> <h2>4.57.1</h2> <p><em>2026-01-30</em></p> <h3>Bug Fixes</h3> <ul> <li>Fix heap corruption issue in Windows (<a href="https://redirect.github.com/rollup/rollup/issues/6251">#6251</a>)</li> <li>Ensure exports of a dynamic import are fully included when called from a try...catch (<a href="https://redirect.github.com/rollup/rollup/issues/6254">#6254</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6251">#6251</a>: fix: Isolate and cache <code>process.report.getReport()</code> calls in a child process for robust environment detection (<a href="https://github.com/alan-agius4"><code>@alan-agius4</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6252">#6252</a>: chore(deps): update dependency lru-cache to v11 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6253">#6253</a>: chore(deps): lock file maintenance minor/patch updates (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot], <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6254">#6254</a>: Fully include dynamic imports in a try-catch (<a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
4 days ago |
|
|
efb651cd33
|
perf: optimize parser hot paths for ~18% faster compilation (#17811)
## Summary Optimizes the Svelte compiler's parser phase — the hot path that runs on every file compilation during development (HMR). The changes are surgical micro-optimizations to 7 files in `packages/svelte/src/compiler/phases/1-parse/`, with no architectural changes. ### Changes - **`Parser.match()` — `slice` → `startsWith`**: Avoids creating a new substring on every multi-char match call (called thousands of times per compilation) - **`Parser.match_regex()` — `slice` → sticky flag**: Uses `lastIndex` + `y` flag instead of slicing the entire template string on every regex match. All 14 regex patterns passed to `match_regex`/`read` across 4 files updated with `y` flag. - **`Parser.allow_whitespace()` / `require_whitespace()` — regex → charCode**: Replaces `regex_whitespace.test()` with numeric charCode comparisons in a tight loop (called hundreds of times per compilation). Covers the full `\s` character set with a fast path for common ASCII whitespace. - **Text parser — string concatenation → `slice`**: Replaced `data += template[index++]` loop (O(n²)) with tracking start position + single `slice()` call (O(n)) - **`read_sequence` — string concatenation → `slice`**: Same pattern — derive `raw` from `template.slice()` in `flush()` instead of char-by-char concatenation - **`is_valid_element_name()` — inline regexes → module-level constants**: Extracted 2 regex literals to module scope - **Dynamic `new RegExp()` → `indexOf`**: Replaced `parser.read_until(new RegExp(...))` with `template.indexOf()` for script/style closing tags - **`match_bracket` — `Array.includes` → `Set.has`**: Pre-computes close bracket values as a `Set` for O(1) lookups ## Benchmark A benchmark script was written that: 1. Compiles 5 real test components of varying complexity (a11y validators, form bindings, component migration output, rich selects) 2. Compiles 2 synthetic stress-test templates (500 elements and 2000 elements with expressions and entities) 3. Runs 50 warmup iterations for parse, 20 for compile (JIT warmup) 4. Forces GC between benchmarks via `--expose-gc` 5. Measures both parse-only and full compilation (parse + analyze + transform + codegen) ### Parse-only results | Component | Before | After | Speedup | |---|---|---|---| | a11y-role-supports-aria-props (371 lines) | 2.410ms | 2.129ms | **-11.7%** | | form-default-value-spread (199 lines) | 1.726ms | 1.360ms | **-21.2%** | | svelte-component (251 lines) | 1.925ms | 1.648ms | **-14.4%** | | select-with-rich-content (157 lines) | 0.795ms | 0.636ms | **-20.0%** | | rich-select (173 lines) | 0.807ms | 0.637ms | **-21.1%** | | synthetic-large (500 elements) | 2.560ms | 1.547ms | **-39.6%** | | synthetic-huge (2000 elements) | 136.849ms | 114.115ms | **-16.6%** | | **Total** | **147.071ms** | **122.072ms** | **-17.0%** | ### Full compile results | Component | Before | After | Speedup | |---|---|---|---| | a11y-role-supports-aria-props | 25.407ms | 21.990ms | **-13.4%** | | form-default-value-spread | 10.711ms | 9.422ms | **-12.0%** | | svelte-component | 10.304ms | 8.481ms | **-17.7%** | | select-with-rich-content | 5.986ms | 4.694ms | **-21.6%** | | rich-select | 6.010ms | 5.059ms | **-15.8%** | | synthetic-large (500 elements) | 30.511ms | 25.196ms | **-17.4%** | | synthetic-huge (2000 elements) | 932.801ms | 764.794ms | **-18.0%** | | **Total** | **1021.729ms** | **839.637ms** | **-17.8%** | Benchmarked on macOS, Node.js, Apple Silicon. The parse improvements carry through to end-to-end compile time since the parser is a significant portion of the compilation pipeline. Text-heavy templates benefit the most (up to 40% faster parse). Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
4 days ago |
|
|
dd5b587bd3
|
chore: simplify batch.flush (#17814)
another extraction from #17805. I always felt bad about `this.process([])`, and this PR replaces it with the steps that actually occur — even though this is arguably duplicative, I find it much easier to understand. It also allows us to avoid activating batches with no queued effects, thanks to the change in #17809. This saves us a bit of work in a not-that-uncommon case. ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
4 days ago |
|
|
5e28508377
|
chore: simplify create effect (#17813)
follow-up to #17808. This makes it a bit more explicit _why_ we do certain things in `create_effect`, and gets rid of a redundant parameter ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
4 days ago |
|
|
5bd4699539
|
chore: more efficient effect scheduling (#17808)
This extracts part of #17805 into its own PR that can be merged independently. Today, if a (non-render) effect is created during traversal (e.g. an `{#if condition}` block becomes true, and an `$effect` is created somewhere inside it) then it goes through `schedule_effect`, ultimately causing the loop in `flush_effects` to run again. This is wasteful. We can instead push to an array — `collected_effects` — which is flushed following the first traversal. By using `collected_effects !== null` as a proxy for 'is traversing', we can also simplify the bail-out logic inside `schedule_effect` and make it work in more cases. Bailing out means that in the case that a signal is written to during traversal (which is the case for `each` blocks, for example), we can avoid triggering another turn of the loop because we know that the affected effects are about to be discovered as a result of the ongoing traversal. All this brings us slightly closer to the intermediate goal in #17805 of ensuring that scheduled effects always belong to a specific batch. No test for this because it shouldn't have any user-observable impact, though I've added a changeset out of an abundance of caution. |
4 days ago |
|
|
b76cd5cafc
|
chore: null out current_batch before committing branches (#17809)
Another small tweak extracted from #17805, just to make that diff a bit more legible. By passing the `batch` to the branch commit callback, we don't need to rely on the value of `current_batch` being the same as the batch currently being processed. That gives us more control over the order of operations — for example we can null out `current_batch` _before_ committing branches, which is important (at present, if a state change occurs while those branches are being committed, it will belong to the current batch, but the resulting effects will happen in the context of a _new_ batch, which is something we need to avoid for the sake of #17805). ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
4 days ago |
|
|
fa4f1c45f4
|
chore: run `prettier` (#17803)
Just fixing CI 🙄
|
5 days ago |
|
|
ed14b499d6
|
Version Packages (#17802)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## svelte@5.53.5 ### Patch Changes - fix: escape `innerText` and `textContent` bindings of `contenteditable` ([`0df5abcae223058ceb95491470372065fb87951d`]( |
5 days ago |
|
|
0df5abcae2
|
Merge commit from fork
* fix: escape `innerText` and `textContent` bindings of `contenteditable` * fix: better if else structure |
5 days ago |
|
|
0298e97937
|
Merge commit from fork
* fix: sanitize `transformError` values prior to embedding in HTML comments * did a little dumb |
5 days ago |
|
|
96fd3ce763
|
Version Packages (#17786)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## svelte@5.53.4 ### Patch Changes - fix: set server context after async transformError ([#17799](https://github.com/sveltejs/svelte/pull/17799)) - fix: hydrate if blocks correctly ([#17784](https://github.com/sveltejs/svelte/pull/17784)) - fix: handle default parameters scope leaks ([#17788](https://github.com/sveltejs/svelte/pull/17788)) - fix: prevent flushed effects from running again ([#17787](https://github.com/sveltejs/svelte/pull/17787)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
5 days ago |
|
|
1b3e660519
|
fix: prevent flushed effects from running again (#17787)
We never cleared the list of (maybe)dirty_effects on the assumption that once a batch has run them it's complete. But that's not the case when a boundary has a pending snippet, in which case the pending snippet shows up, so `blocking_pending` is already 0 and effects are flushed. That can lead to effects being run unnecessarily, even leading to infinite loops. So we clear them. This is safe because any additional effects would either be scheduled by the boundary (which keeps track of the offscreen effects created while the pending snippet is shown, and schedules them once the pending snippet goes away) or by unskipping skipped branches (which reschedules the effects inside it) Fixes #17717 After creating the test I noticed it fails when run together with other tests, but not alone, which lead me to discover that we're missing an `unset_context`. I also added clearing of `#skipped_branches` just to be safe. |
5 days ago |
|
|
f6e8b1d11e
|
chore: require pr number as input when manually invoking pkg.pr.new (#17797)
|
6 days ago |
|
|
673a1ab964
|
fix: set server context after async transformError (#17799)
This will get the tests in https://github.com/sveltejs/kit/pull/15308 green, right now they fail because page state cannot be found because context not available |
6 days ago |
|
|
3a289797bd
|
fix: handle default parameters scope leaks (#17788)
Use separate scopes for function declarations/expressions and function bodies. This prevents variable declarations from leaking into default parameter initialization expressions. Closes #17785. ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
6 days ago |
|
|
fef7e0f742
|
chore: remove ecosystem-ci-gate workflow (#17795)
The app shared between Kit and Svelte takes care of this now ### Before submitting the PR, please make sure you do the following - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [ ] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
6 days ago |
|
|
fcdc0289db
|
fix: hydrate if blocks correctly (#17784)
We were not using the correct node to analyze the if block marker Fixes #17751 |
1 week ago |
|
|
97f3ac5571
|
Version Packages (#17775)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## svelte@5.53.3 ### Patch Changes - fix: render `:catch` of `#await` block with correct key ([#17769](https://github.com/sveltejs/svelte/pull/17769)) - chore: pin aria-query@5.3.1 ([#17772](https://github.com/sveltejs/svelte/pull/17772)) - fix: make string coercion consistent to `toString` ([#17774](https://github.com/sveltejs/svelte/pull/17774)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
1 week ago |
|
|
d444e29907
|
chore: robustify ecosystem gate script (#17781)
- pull_request should be enough (pull_request_target exposes more stuff) - trigger the full run less often |
1 week ago |
|
|
8566b7a63b
|
chore: require `/ecosystem-ci` run in "Version packages" PR (#17780)
let's see if this works |
1 week ago |
|
|
9360563c94
|
docs: remove reference to archived https://github.com/sveltejs/template (#17779)
Repository https://github.com/sveltejs/template is archived and no longer maintained. ### Before submitting the PR, please make sure you do the following - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [ ] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [ ] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` --------- Co-authored-by: Rich Harris <hello@rich-harris.dev> |
1 week ago |
|
|
7deedc5bb4
|
fix: render `:catch` of `#await` block with correct key (#17769)
Fixes #17678 |
1 week ago |
|
|
8334abd626
|
chore: cleanup eslint peer dependencies (#17757)
|
1 week ago |
|
|
f67d03df5b
|
fix: make string coercion consistent to `toString` (#17774)
Closes #17758 ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` |
1 week ago |