mirror of https://github.com/sveltejs/svelte
eager-effects-array-fix
const-context-fix
restore-context-transform-error
svelte-custom-renderer
main
tweak-parser
fragmentless-branches
incremental-batches
incremental-batches-was-marked
fork-never-write-to-v
agent-driven-perf-investigation
paoloricciuti/issue-17720-print-parse-code-produces-broken-code-ae5d2b
const-await-blockers-fix
async-svelte-map
async-svelte-set
async-blocking-and-merging
async-derived-coordinate-batches
config
entangle-batches
runes-mode
stale-batch
always-populate-batch-values
async-svelte-set-alternative
eager-bind-this-teardown
freeze-destroyed-consts
eager-effect-rework
unified-async
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.55.3
svelte@5.55.2
svelte@5.55.1
svelte@5.55.0
svelte@5.54.1
svelte@5.54.0
svelte@5.53.13
svelte@5.53.12
svelte@5.53.11
svelte@5.53.10
svelte@5.53.9
svelte@5.53.8
svelte@5.53.7
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
${ noResults }
11133 Commits (const-context-fix)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
19fea84cad |
woops
|
2 days ago |
|
|
99858221ec |
fix: reset context after waiting on blockers of `@const` expressions
Regression from #18039 - we need to have each await expression (and waiting on blockers is one) in its own entry of `(renderer.)run`. Else context is not restored correctly and if the synchronous expression afterwards requires it stuff breaks. Fixes #18098 |
2 days ago |
|
|
4a50e8ea3b
|
Version Packages (#18085)
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.55.3 ### Patch Changes - fix: ensure proper HMR updates for dynamic components ([#18079](https://github.com/sveltejs/svelte/pull/18079)) - fix: correctly calculate `@const` blockers ([#18039](https://github.com/sveltejs/svelte/pull/18039)) - fix: freeze deriveds once their containing effects are destroyed ([#17921](https://github.com/sveltejs/svelte/pull/17921)) - fix: defer error boundary rendering in forks ([#18076](https://github.com/sveltejs/svelte/pull/18076)) - fix: avoid false positives for reactivity loss warning ([#18088](https://github.com/sveltejs/svelte/pull/18088)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
3 days ago |
|
|
15588f5fbf
|
fix: avoid false positives for reactivity loss warning (#18088)
Avoids two categories of false positives for reactivity loss warning: 1. if you have synchronously read signals already as part of invoking the async_derived function, then it shouldn't warn when these signals are read after an await if we know they haven't changed (we check the write version for that) 2. `track_reactivity_loss` kept the `reactivity_loss_tracker` around indefinitely, both when invoking the async operation as well as when it's finished. The former is buggy because while the async operation happens unrelated reads as part of other reactivity work can happen, the latter is buggy because if it's the last in a chain of awaits it's kept around until the next async work starts. Fixes https://github.com/sveltejs/kit/issues/15654 --------- Co-authored-by: Rich Harris <rich.harris@vercel.com> Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> |
3 days ago |
|
|
0e9e76f292
|
fix: freeze deriveds once their containing effects are destroyed (#17921)
Per https://github.com/sveltejs/svelte/pull/17862#issuecomment-4049752548, this freezes the value of a derived if it was created inside a parent effect that is now destroyed. This prevents the sort of bug where a derived reads `foo.bar` even though `foo` is now `undefined`. If the derived is dirty, a warning will be printed. This PR also gets rid of some weirdness around `derived.parent` — it can only ever be an `Effect | null`, and there's no need for `get_derived_parent_effect`. Blocked on https://github.com/sveltejs/kit/pull/15533 and a follow-up that switches remote functions to use `$effect.root` (since this effectively undoes #17171), hence draft. ### 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: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> |
4 days ago |
|
|
3937ec03bd
|
fix: correctly calculate `@const` blockers (#18039)
Move the calculation of blockers into the analysis phase and then only push the right thunks in the transform phase - similar to how we already do it with top level `$.run` Fixes #18024 The solution is a tiny bit brittle (not much more than the top level one we already have) and I tried to make it a bit more robust but ended up in a rabbit hole in #18032 - we can revisit that solution once all the old stuff is gone. Until then this is the most pragmatic/non-invasive change. --------- Co-authored-by: Rich Harris <rich.harris@vercel.com> |
4 days ago |
|
|
7be1a0247f
|
fix: ensure proper HMR updates for dynamic components (#18079)
The BranchManager in `branches.js` does create a temporary anchor when creating a new branch offscreen, and deletes it once the branch is committed. Normally this is fine, but the combination of HMR and dynamic components leads to a bug: Since `svelte-component.js` passes the temporary anchor along to the component it generates, which is the HMR wrapper, this wrapper will have an obsolete, disconnected anchor on updates, leading to the content disappearing. The fix is to add a dev-only symbol which we set on the original (then obsolete) anchor to tell about the updated anchor that should be used for HMR updates. Fixes https://github.com/sveltejs/kit/issues/14699 Fixes #17211 |
5 days ago |
|
|
a4ce776070
|
fix: defer error boundary rendering in forks (#18076)
RIght now, when an async error occurs inside a fork, the error UI will show immediately. This change defers the removal of the current content etc until the fork is committed. The BranchManager logic cannot be reused here since this is not about pending work, and we cannot wait for other pending work to complete if the fork commits. Instead, batches now have a "on fork commit" callback set which the boundary pushes to. The boundary's effects are skipped in the fork until it's committing, at which point we "resume" the error logic (calling onerror, transforming it, etc) Fixes #18060 |
5 days ago |
|
|
7796bac806
|
chore: dedupe dependencies (#18084)
|
5 days ago |
|
|
c712809ebd
|
chore(deps): bump vite from 5.4.20 to 7.3.2 (#18081)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.20 to 7.3.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/releases">vite's releases</a>.</em></p> <blockquote> <h2>v7.3.2</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.3.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.3.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.3.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.3.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.7</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.6</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.5</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <p><em>Note: 7.2.5 failed to publish so it is skipped on npm</em></p> <h2>v7.2.4</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.3</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.2</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>plugin-legacy@7.2.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/plugin-legacy@7.2.1/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>plugin-legacy@7.2.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/plugin-legacy@7.2.0/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.0-beta.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.0-beta.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.0-beta.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.0-beta.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.1.12</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.1.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md">vite's changelog</a>.</em></p> <blockquote> <h2><!-- raw HTML omitted --><a href="https://github.com/vitejs/vite/compare/v7.3.1...v7.3.2">7.3.2</a> (2026-04-06)<!-- raw HTML omitted --></h2> <h3>Bug Fixes</h3> <ul> <li>avoid path traversal with optimize deps sourcemap handler (<a href="https://redirect.github.com/vitejs/vite/issues/22161">#22161</a>) (<a href=" |
5 days ago |
|
|
582c57ceb8
|
chore(deps-dev): bump vite from 7.1.11 to 7.3.2 (#18074)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.11 to 7.3.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/releases">vite's releases</a>.</em></p> <blockquote> <h2>v7.3.2</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.3.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.3.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.3.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.3.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.7</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.6</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.5</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <p><em>Note: 7.2.5 failed to publish so it is skipped on npm</em></p> <h2>v7.2.4</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.3</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.2</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>plugin-legacy@7.2.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/plugin-legacy@7.2.1/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>plugin-legacy@7.2.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/plugin-legacy@7.2.0/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.0-beta.1</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.0-beta.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.2.0-beta.0</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.2.0-beta.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v7.1.12</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v7.1.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md">vite's changelog</a>.</em></p> <blockquote> <h2><!-- raw HTML omitted --><a href="https://github.com/vitejs/vite/compare/v7.3.1...v7.3.2">7.3.2</a> (2026-04-06)<!-- raw HTML omitted --></h2> <h3>Bug Fixes</h3> <ul> <li>avoid path traversal with optimize deps sourcemap handler (<a href="https://redirect.github.com/vitejs/vite/issues/22161">#22161</a>) (<a href=" |
6 days ago |
|
|
2e29c87cc9
|
Version Packages (#18036)
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.55.2 ### Patch Changes - fix: invalidate `@const` tags based on visible references in legacy mode ([#18041](https://github.com/sveltejs/svelte/pull/18041)) - fix: handle parens in template expressions more robustly ([#18075](https://github.com/sveltejs/svelte/pull/18075)) - fix: disallow `--` in `idPrefix` ([#18038](https://github.com/sveltejs/svelte/pull/18038)) - fix: correct types for `ontoggle` on `<details>` elements ([#18063](https://github.com/sveltejs/svelte/pull/18063)) - fix: don't override `$destroy/set/on` instance methods in dev mode ([#18034](https://github.com/sveltejs/svelte/pull/18034)) - fix: unskip branches of earlier batches after commit ([#18048](https://github.com/sveltejs/svelte/pull/18048)) - fix: never set derived.v inside fork ([#18037](https://github.com/sveltejs/svelte/pull/18037)) - fix: skip rebase logic in non-async mode ([#18040](https://github.com/sveltejs/svelte/pull/18040)) - fix: don't reset status of uninitialized deriveds ([#18054](https://github.com/sveltejs/svelte/pull/18054)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
6 days ago |
|
|
6b653b8d17
|
chore: simplify parser (#18077)
small tidy-up spurred by #17954 — rather than try-catching every `parse_expression_at` call and passing the error to `parser.acorn_error`, we can handle the error locally and get rid of that method ### 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:`. - [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` --------- Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> |
6 days ago |
|
|
8966601dcd
|
fix: handle parens in template expressions more robustly (#18075)
While looking into #17954 I realised that a) our code for handling parentheses in expressions is unnecessarily convoluted and b) it doesn't handle the case where you have an opening parent outside the first comment — this fails to parse: ```svelte {(/**/ 42)} ``` This fixes it and simplifies the code a good bit. ### 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` |
7 days ago |
|
|
0395ef0df7
|
fix: unskip branches of earlier batches after commit (#18048)
Fixes #17571 where the situation is the following: A derived creates a new query. That query initializes loading with true. This means the if block is marked for destruction (therefore effects inside branch are skipped), but it's not doing that yet because the query promise is pending. Then query resolves and loading is set back to false right before resolving, but it's not the same tick so `loading=false` is a separate thing. Because that later batch doesn't see any overlap with an earlier batch (the earlier batch did set loading to true but not via set but indirectly via recreating the query) it doesn't wait on it and flushes right away. Now the if block is marked as visible again but the earlier batch doesn't know that if noone unskips its branch. If we don't do that the render effect that is now dirty as part of that batch will not run. |
7 days ago |
|
|
cd5bda00a8
|
chore: fix changeset (#18073)
prevents the changelog from getting borked up |
7 days ago |
|
|
d86cb5cc32
|
fix: skip rebase logic in non-async mode (#18040)
Fixes part of #17940 (the hydration->error thing still needs a repro). Essentially in sync mode render effects are executed during traversing the effect tree, and when flushSync is called during that it can cause the timing of things getting out of sync such that you end up wanting to rebase another branch, which is never needed in sync mode. So we just skip that logic in sync mode. Another way would be to adjust flushSync such that it does appends itself to the end of the current flushing cycle if it notices processing is already ongoing. This will not work when you pass a callback function to `flushSync` though - another indicator that we should probably remove that callback argument. --------- Co-authored-by: Rich Harris <rich.harris@vercel.com> Co-authored-by: Rich Harris <hello@rich-harris.dev> |
7 days ago |
|
|
adba758067
|
fix: don't reset status of uninitialized deriveds (#18054)
If a new branch is created (e.g. if block becomes truthy) inside a fork and a derived is read inside the new branch for the first time, it will get reactions but its true value will stay uninitialized due to the fork. If the fork then commits, it will NOT change its value because it will not reexecute: there is no effect running after commit telling it to do that, because it was only read inside new effects which already ran while still inside the fork. Now, when that branch is removed (e.g. if block becomes falsy), the derived loses its reactions again and becomes disconnected, at which point the status is reset. So we end up with a maybe_dirty or clean derived and an uninitialized value, causing breakage if it's called again afterwards. The fix is to not reset the status in this case. Fixes https://github.com/sveltejs/kit/issues/15126 Fixes https://github.com/sveltejs/kit/issues/15318 Fixes https://github.com/sveltejs/kit/issues/15061 |
7 days ago |
|
|
14adb8caa9
|
fix: correct types for `ontoggle` on <details> elements (#18063)
`<details>` elements fire `ontoggle` as ToggleEvents ([source](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/toggle_event)), but they're currently just typed as Event. ### 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. - [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` |
7 days ago |
|
|
7a2a17557c
|
docs: add CSS custom properties section to style directive (#18065)
Adds documentation for using CSS custom properties with the `style:` directive. I think this was lost at some point during the great transition. It's only mentioned in the [best practices](https://svelte.dev/docs/svelte/best-practices#Using-JavaScript-variables-in-CSS) section, so I thought it would make sense to include it. |
7 days ago |
|
|
f8ef6de325
|
chore: squelch hydration warnings in tests (#18046)
Gets rid of some annoying console spam. I don't totally understand why `warnings` isn't populated by the time the assertions happen (it seems to happen just afterwards, except if I sleep for a few milliseconds and then do the assertion the warnings get swallowed altogether?) but for right now I don't much care |
1 week ago |
|
|
8ee2169609
|
chore: improve benchmarks (#18061)
This makes the benchmarks slightly more honest — it adds the async flag, and a benchmark that tests the (common) scenario where most effects are clean. Relevant to #18035, will self-merge so we can do a fresh comparison |
1 week ago |
|
|
206974a5cd
|
chore: generate markdown tables of CPU profiles (#18059)
extracted from #18035 — this should have been part of #18047 but I missed it off, oops. Will self-merge so it doesn't get in the way of #18035, and because the `performance-investigation` skill is predicated on this code existing --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> |
1 week ago |
|
|
a9530e5330
|
chore: add labels to more internal deriveds (#18050)
tiny QoL thing |
2 weeks ago |
|
|
704e3bb5f0
|
chore: agent hints for perf investigations (#18047)
This adds some hints in an `AGENTS.md` for how to conduct performance investigations, along with a utility for comparing profiles from different branches to identify hotspots. We will likely want to put other stuff in `AGENTS.md` in future but I figured we could start with something immediately useful. It also tweaks the comparison script — rather than nuking results from existing branches, it keeps them around so that we don't need to re-run benchmarks (which takes a long time) for branches that haven't changed. --------- Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> |
2 weeks ago |
|
|
c93e251654
|
fix: never set derived.v inside fork (#18037)
This started out as me implementing https://github.com/sveltejs/svelte/pull/17998/changes#r3018047965, but then I realised that I'd also fixed the bug that #17998 addresses. So I guess it's an alternative to that PR --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> |
2 weeks ago |
|
|
345b8ed69f
|
chore: keep previous benchmark runs around (#18049)
extracted from #18047 – will self-merge this bit |
2 weeks ago |
|
|
e402b2d0d6
|
chore: write `pnpm bench:compare` report to disk (#18045)
will give this a quick self-merge to unblock |
2 weeks ago |
|
|
99b1467ba4
|
chore: generate CPU profiles when running benchmarks (#18043)
This causes `pnpm bench` and `pnpm bench:compare` to generate `.cpuprofile` files for each benchmark, which should in theory make it easier to understand how different branches affect performance (and find opportunities for optimisation). These files can be opened directly in VS Code and other editors, or in [profiler.firefox.com](https://profiler.firefox.com), [speedscope.app](https://www.speedscope.app), Chrome's performance devtools and so on. |
2 weeks ago |
|
|
edcbb0e640
|
fix: invalidate `@const` tags based on visible references in legacy mode (#18041)
closes #17992 |
2 weeks ago |
|
|
ff3495dc05
|
fix: disallow `--` in `idPrefix` (#18038)
supersedes #17993 |
2 weeks ago |
|
|
51629ec7bd
|
docs: update references to `vite-plugin-svelte` (#18027)
### 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> Co-authored-by: Rich Harris <rich.harris@vercel.com> |
2 weeks ago |
|
|
e0f925116c
|
fix: pin 9 actions to commit SHA (#18025)
Re-submission of #18017. Had a problem with my fork and had to delete it, which closed the original PR. Apologies for the noise. ## Summary This PR pins all GitHub Actions to immutable commit SHAs instead of mutable version tags. - Pin 9 unpinned actions to full 40-character SHAs - Add version comments for readability ## Changes by file | File | Changes | |------|---------| | autofix.yml | Pinned actions to SHA | | ci.yml | Pinned actions to SHA | | pkg.pr.new.yml | Pinned actions to SHA | | release.yml | Pinned actions to SHA | ## A note on internal action pinning This PR pins all actions including org-owned ones. Best practice is to pin everything — the tj-actions/changed-files attack was an internally maintained action that was compromised, and every repo referencing it by tag silently executed attacker code. That said, it's your codebase. If you'd prefer to leave org-owned actions unpinned, let us know and we'll adjust the PR. ## How to verify Review the diff — each change is mechanical and preserves workflow behavior: - **SHA pinning**: `action@v3` becomes `action@abc123 # v3` — original version preserved as comment - No workflow logic, triggers, or permissions are modified I wrote a scanner called Runner Guard and open sourced it [here](https://github.com/Vigilant-LLC/runner-guard). If you have any questions, reach out. I'll be monitoring comms. \- Chris Nyhuis (dagecko) |
2 weeks ago |
|
|
97d45f85c6
|
fix: don't override `$destroy/set/on` instance methods in dev mode (#18034)
Don't think we need a test for this Fixes #17988 |
2 weeks ago |
|
|
aba4ab8737
|
chore: fix editorconfig (#18033)
I don't know why exactly, but VS Code suddenly started paying attention to this line. An indent size of 2 inside an IDE is for masochists and barbarians. If that's your preference then that's up to you but there's certainly no reason to impose it on everyone who clones this repo. |
2 weeks ago |
|
|
37ab33c0a3
|
Version Packages (#18006)
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.55.1 ### Patch Changes - fix: correctly handle bindings on the server ([#18009](https://github.com/sveltejs/svelte/pull/18009)) - fix: prevent hydration error on async `{@html ...}` ([#17999](https://github.com/sveltejs/svelte/pull/17999)) - fix: cleanup `superTypeParameters` in `ClassDeclarations`/`ClassExpression` ([#18015](https://github.com/sveltejs/svelte/pull/18015)) - fix: improve duplicate module import error message ([#18016](https://github.com/sveltejs/svelte/pull/18016)) - fix: reschedule new effects in prior batches ([#18021](https://github.com/sveltejs/svelte/pull/18021)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
2 weeks ago |
|
|
4879f9da99
|
fix: improve duplicate module import error message (#18016)
## Description
**While investigating the compiler analysis phase for errors or missing
lines, I located an explicit `TODO fix the message here` comment in the
source code
(`packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js`).**
### Triggering Code
```svelte
<script module>
import { foo } from './somewhere.js';
</script>
<script>
let foo = 'conflict'; // Triggers the duplicate module import error
</script>
```
## The Bug
When a component author creates a local `let` declaration in the
instance `<script>` block that shadows a variable imported in the
`<script module>` block, the compiler emits a
`declaration_duplicate_module_import` error.
However, the error message text was misleading. It stated:
```diff
- Cannot declare a variable with the same name as an import inside `<script module>`
+ Cannot declare a variable with the same name as an import from `<script module>`
```
This incorrectly implies that the duplicate declaration itself is
happening *inside* the module script block, rather than colliding with
an import *from* that block.
## Changes Made
| Action | Target (File / Function) | Description |
| :--- | :--- | :--- |
| **Template Fix** | `packages/svelte/messages/compile-errors/script.md`
| Changed "inside" to "from" to accurately reflect the nature of the
shadow collision. |
| **Regenerated Errors** | `packages/svelte/src/compiler/errors.js` |
Ran `pnpm generate` to apply the updated markdown template into the
dictionary list. |
| **Removed TODO** | `ensure_no_module_import_conflict` function |
Removed the original `// TODO fix the message here` notation from the
validator. |
| **Test Adjustments** | `illegal-variable-declaration/errors.json` |
Updated the validator test suite snapshots to assert against the correct
error message format. |
## Validation Results
* The error correctly throws when a user replicates this component
structure.
* Vitest suite `tests/validator/test.ts` successfully asserts the new,
clearer message.
---
### 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`
# THANK YOU
|
2 weeks ago |
|
|
04eadbc8a9
|
fix: correctly handle bindings on the server (#18009)
`item.subsume(item)` did nothing, honestly kinda weird how this only turned up now Fixes #17981 |
2 weeks ago |
|
|
957f2755fa
|
fix: cleanup `superTypeParameters` in `ClassDeclarations`/`ClassExpression` (#18015)
Closes #18012
We were removing `superTypeArguments` but the AST showed
`superTypeParameters`.
Luckily, I was able to pinpoint `esrap@2.2.4` as the cause... I've only
bumped `esrap` and that made the test fail (so that I could fix it)
And of course it was that...there's literally a commit that explicitly
print them lol
|
2 weeks ago |
|
|
a9d8439ad1
|
fix: reschedule new effects in prior batches (#18021)
If a batch creates a new branch (e.g. through an if block becoming true) the previous batches so far do not know about the new effects created through that. This can lead to stale values being shown. We therefore schedule those new effects on prior batches if they are touched by a `current` value of that batch Fixes #17099 extracted from #17971 |
2 weeks ago |
|
|
669f6b45a3
|
fix: prevent hydration error on async `{@html ...}` (#17999)
Fixes #17981 |
3 weeks ago |
|
|
54ba176d2c
|
docs: 'open in playground' links (#17983)
This takes advantage of https://github.com/sveltejs/svelte.dev/pull/1879 and https://github.com/sveltejs/svelte.dev/pull/1880 to replace some of the hardcoded playground links in the docs with ones that are generated automatically from the code. This is a better user experience, and easier to maintain. Not every playground link is suitable for replacement, as in many cases we gloss over implementation details. For now I'm just starting with some easy ones |
3 weeks ago |
|
|
5e8662fb23
|
chore: lots of async tests (#17997)
extracting this from #17971 because even if that PR is not merged these tests show that there's still a lot of cases where we're buggy, particularly around forking and new branches |
3 weeks ago |
|
|
6e52f40d41
|
Version Packages (#17984)
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.55.0 ### Minor Changes - feat: export TweenOptions, SpringOptions, SpringUpdateOptions and Updater from svelte/motion ([#17967](https://github.com/sveltejs/svelte/pull/17967)) ### Patch Changes - fix: ensure HMR wrapper forwards correct start/end nodes to active effect ([#17985](https://github.com/sveltejs/svelte/pull/17985)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
3 weeks ago |
|
|
1773cb5b59
|
fix: ensure HMR wrapper forwards correct start/end nodes to active effect (#17985)
Fixes #17982 (two issues reported there) Adding the start/end statically at the end once does not work because it's going to be stale when there's a HMR reload of the wrapped component. For reasons not completely clear to me it also fails in another case. So instead of wrapping the HMR with comments we just forward the nodes of the inner effect to the outer active effect, pretending the wrapper isn't there from a "remove dom nodes"-perspective. |
3 weeks ago |
|
|
b90a5dfb61
|
docs: clarify `$derived` `await` behavior and dependency tracking (#17696)
Closes #17660 ### 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 - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` --------- Co-authored-by: Rich Harris <rich.harris@vercel.com> |
3 weeks ago |
|
|
a94924b677
|
fix: export TweenOptions, SpringOptions, SpringUpdateOptions and Updater from svelte/motion (#17967)
Exports `TweenedOptions`, `SpringOpts`, `SpringUpdateOpts`, and `Updater` from `svelte/motion`. These types are required for the public method signatures of `spring` and `tweened` (e.g., as parameters for `.set()` and `.update()`). This PR makes them accessible to TypeScript users, following the established pattern in modules like `svelte/store` and `svelte/transition`. Internal implementation details like `TickContext` remain private as they do not appear in any public-facing signatures. Fixes #16151 ### 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: Rich Harris <rich.harris@vercel.com> Co-authored-by: Rich Harris <hello@rich-harris.dev> |
3 weeks ago |
|
|
0c669d9bc9
|
docs: recommend createContext as the primary method for context (#17959)
### 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 <rich.harris@vercel.com> |
3 weeks ago |
|
|
db69b7e345
|
Version Packages (#17965)
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.54.1 ### Patch Changes - fix: hydration comments during hmr ([#17975](https://github.com/sveltejs/svelte/pull/17975)) - fix: null out `effect.b` in `destroy_effect` ([#17980](https://github.com/sveltejs/svelte/pull/17980)) - fix: group sync statements ([#17977](https://github.com/sveltejs/svelte/pull/17977)) - fix: defer batch resolution until earlier intersecting batches have committed ([#17162](https://github.com/sveltejs/svelte/pull/17162)) - fix: properly invoke `iterator.return()` during reactivity loss check ([#17966](https://github.com/sveltejs/svelte/pull/17966)) - fix: remove trailing semicolon from {@const} tag printer ([#17962](https://github.com/sveltejs/svelte/pull/17962)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
3 weeks ago |
|
|
7123bf3a13
|
fix: remove trailing semicolon from {@const} tag printer (#17962)
Fixes #17720 ## Problem The `{@const}` tag was being printed with a trailing semicolon, producing invalid Svelte syntax like: {@const a = 1;} This happened because the `ConstTag` visitor in the printer was delegating to esrap's `VariableDeclaration` handler, which always appends a semicolon (correct for JS, but wrong for Svelte template syntax). ## Solution Instead of delegating to `VariableDeclaration`, the `ConstTag` visitor now manually prints the tag by: - Writing `{@const ` directly - Iterating through declarators and visiting each one - Separating multiple declarations with commas - Closing with `}` — no trailing semicolon ## Before {@const a = 1;} {@const a = 1, b = 2;} ## After {@const a = 1} {@const a = 1, b = 2} ## Changes - `packages/svelte/src/compiler/print/index.js` — fixed `ConstTag` visitor - `packages/svelte/tests/print/samples/const-tag/output.svelte` — updated expected test output --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Rich Harris <hello@rich-harris.dev> Co-authored-by: Rich Harris <rich.harris@vercel.com> |
3 weeks ago |