{"slug":"frontend-frameworks","name":"Frontend Frameworks","description":"The frameworks behind modern web UIs — full-stack React to fine-grained reactivity.","isFeatured":false,"members":[{"kind":"product","slug":"nextjs","name":"Next.js","description":"React framework for production","org":{"slug":"vercel","name":"Vercel","domain":"vercel.com","avatarUrl":"https://media.releases.sh/orgs/vercel.png","githubHandle":"vercel"}},{"kind":"org","slug":"nuxt","name":"Nuxt","domain":"nuxt.com","avatarUrl":"https://media.releases.sh/orgs/nuxt.png","githubHandle":"nuxt","description":null},{"kind":"org","slug":"svelte","name":"Svelte","domain":"svelte.dev","avatarUrl":"https://media.releases.sh/orgs/svelte.png","githubHandle":"sveltejs","description":"Compiler-based JavaScript framework for building web UIs with minimal runtime overhead, plus SvelteKit for full-stack web development."},{"kind":"org","slug":"expo","name":"Expo","domain":"expo.dev","avatarUrl":"https://media.releases.sh/orgs/expo.png","githubHandle":"expo","description":null},{"kind":"org","slug":"htmx","name":"htmx","domain":null,"avatarUrl":"https://media.releases.sh/orgs/htmx.png","githubHandle":"bigskysoftware","description":null}],"orgs":[{"slug":"nuxt","name":"Nuxt","domain":"nuxt.com","avatarUrl":"https://media.releases.sh/orgs/nuxt.png","githubHandle":"nuxt","description":null},{"slug":"svelte","name":"Svelte","domain":"svelte.dev","avatarUrl":"https://media.releases.sh/orgs/svelte.png","githubHandle":"sveltejs","description":"Compiler-based JavaScript framework for building web UIs with minimal runtime overhead, plus SvelteKit for full-stack web development."},{"slug":"expo","name":"Expo","domain":"expo.dev","avatarUrl":"https://media.releases.sh/orgs/expo.png","githubHandle":"expo","description":null},{"slug":"htmx","name":"htmx","domain":null,"avatarUrl":"https://media.releases.sh/orgs/htmx.png","githubHandle":"bigskysoftware","description":null}],"releases":[{"id":"rel_xpePsHLEr4QLCMmP5fBdm","version":"svelte@5.56.2","type":"feature","title":"svelte@5.56.2","summary":"### Patch Changes\n\n-   fix: properly track effect end node for async sibling component ([#18371](https://github.com/sveltejs/svelte/pull/18371))\n\n-   ...","titleGenerated":null,"titleShort":null,"content":"### Patch Changes\n\n-   fix: properly track effect end node for async sibling component ([#18371](https://github.com/sveltejs/svelte/pull/18371))\n\n-   fix: prevent false-positive reactivity loss warning ([#18373](https://github.com/sveltejs/svelte/pull/18373))\n\n-   chore: bump esrap dependency ([#18372](https://github.com/sveltejs/svelte/pull/18372))\n\n-   fix: ignore declaration tags for animation directive ([#18366](https://github.com/sveltejs/svelte/pull/18366))\n\n-   fix: reject pending async deriveds on discard ([#18308](https://github.com/sveltejs/svelte/pull/18308))\n","publishedAt":"2026-06-04T20:33:04.000Z","url":"https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.2","media":[],"prerelease":false,"source":{"slug":"svelte","name":"svelte","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"svelte","name":"Svelte"},"groupSlug":"svelte","groupName":"Svelte","coverageCount":0,"composition":null},{"id":"rel_IKRBGI6fysMCdUUajSKUz","version":"@sveltejs/kit@2.63.0","type":"feature","title":"@sveltejs/kit@2.63.0","summary":"### Minor Changes\n\n\n- feat: explicit env vars ([#15934](https://github.com/sveltejs/kit/pull/15934))\n\n\n### Patch Changes\n\n\n- fix: remove check for sve...","titleGenerated":null,"titleShort":null,"content":"### Minor Changes\n\n\n- feat: explicit env vars ([#15934](https://github.com/sveltejs/kit/pull/15934))\n\n\n### Patch Changes\n\n\n- fix: remove check for svelte.config.js before running `sync` ([#15946](https://github.com/sveltejs/kit/pull/15946))\n\n\n- fix: generate a placeholder tsconfig.json to squelch sync-time warnings ([#15948](https://github.com/sveltejs/kit/pull/15948))\n\n\n- fix: allow use of `$app/env/public` in service workers ([#15950](https://github.com/sveltejs/kit/pull/15950))","publishedAt":"2026-06-04T01:12:07.000Z","url":"https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%402.63.0","media":[],"prerelease":false,"source":{"slug":"kit","name":"kit","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"sveltekit","name":"SvelteKit"},"groupSlug":"sveltekit","groupName":"SvelteKit","coverageCount":0,"composition":null},{"id":"rel_cNOUHo9nBjXmr-KXoLNxN","version":null,"type":"feature","title":"Code is Cheap(er)","summary":"There is no getting around the fact that, in the last year, code has gotten much cheaper to create. AI is able to generate reams and reams of code, of...","titleGenerated":null,"titleShort":null,"content":"There is no getting around the fact that, in the last year, code has gotten much cheaper to create. AI is able to generate reams and reams of code, often of reasonably decent quality, incredibly quickly. There is no point in pretending that this isn’t the case.\n\nAt times, when confronted with this admittedly uncomfortable fact, I have seen people I respect say something like “coding was never the problem.”\n\nWhile I appreciate the sentiment, I don’t completely agree with that: certainly coding was at least *part* of the problem.\n\nAnd that part of the problem has shrunk significantly with the advent of effective AI coding tools.\n\nSo what does raw coding becoming less important mean for software developers, people who, in the past, prided themselves (and often compared themselves) on their ability to code?\n\n## Understanding is Expensive(er)\n\nOne thing I see is that it means that *understanding* code has become more expensive. This is because when reams and reams of code are generated, rather than emerging painfully from a particular programmer’s fingers, there *is* no understanding of that code.\n\nIn as much as understanding that code needs to exist, it has to be done after the code is written, by reading the code.\n\nNote that conventional wisdom is that reading someone else’s code is harder than writing your own code.\n\nSome AI enthusiasts say “Who cares, you don’t understand the output of compilers.”\n\nI think that is a category error for multiple reasons:\n\n- Compilers are deterministic; LLMs are, by design, not\n- Compiler workflows retain their original source code; LLM workflows typically do not\n- Compiler output is to a narrowly constrained domain (machine code); LLM output is not (generalized software)\n\nI maintain that, in most cases and certainly for mission-critical software, developers still need to understand the underlying code even if it is generated by an LLM.\n\nAnd if code *is* generated by an LLM there is a stark danger: the LLM can produce code far faster than you, or anyone else, can understand it. This is why I recommend incremental use of LLMs rather than allowing them to generate massive changelists that neither you, nor anyone else, can understand.\n\n(There are times when this can be appropriate, such as in a mechanical refactor, but it is extremely dangerous when new semantics are being introduced into a code base.)\n\n## The Sorcerer’s Apprentice Trap\n\nOne movie scene that has been consistently coming back to me as I have watched AI garner more and more attention is [The Sorcerer’s Apprentice](https://video.disney.com/watch/sorcerer-s-apprentice-fantasia-4ea9ebc01a74ea59a5867853) from Disney’s movie *Fantasia*.\n\nIn this scene the apprentice decides to use magic to assist in the drudgery of cleaning. He enchants a broom which then proceeds to start cleaning things up. Things appear to be going swimmingly for a while, until the broom starts cleaning more and more vigorously, reaching a point where things start going swimmingly literally.\n\nThe chaos is resolved when the Sorcerer reappears and asserts control over the situation, glaring at the apprentice for his foolishness.\n\nThis seems like an apt metaphor for the AI era: you want to be a sorcerer and not an apprentice.\n\nAnd a sorcerer has to understand the code.\n\n## Complexity: Still Bad\n\nHumans, generally, have a poor grasp of geometric and exponential curves.\n\n(This is why they believe in fairy tales such as compound interest.)\n\nThe core danger of code being cheap is [complexity](https://grugbrain.dev), which I assert, without proof, tends to grow at least geometrically and often exponentially with the size of a system.\n\nBefore LLMs there were prolific human coders.\n\nPerhaps you have worked with one: they can write *a lot* of code.\n\nI have seen prolific coders who lack a proper fear of complexity heap more and more code on top of an existing problem until the whole system collapses into an unmodifiable steady state, where any change creates as many bugs as it fixes.\n\nLLMs are incapable of fear of complexity, and are prolific coders.\n\nSeems dangerous to me.\n\n## The Subtractive, Constraining Engineer\n\nTo address this danger of LLM-generated code, I propose the subtractive, constraining engineer:\n\nThis engineer [says no](https://grugbrain.dev/#grug-on-saying-no), closely examines LLM output, suggests simplifications and generally retains a firm hand when dealing with LLM-generated code.\n\nRather than priding themselves on the code they create, they pride themselves on the code (and layers) they *remove* from or prevent from entering systems.\n\nThis ethos is more sculptor and less builder.\n\nWhere the builder ethos still applies, to an extent, is at the system design level: a good engineer will need to know how to compose components effectively to create systems. However, even here, I think that the subtractive mindset will be useful: removing unnecessary components and system boundaries to simplify system deployment and inter-component interactions, etc.\n\nThe subtractive engineer is a different kind of engineer than most coders have been in the past. I will admit that I have always been sympathetic to the subtractive engineer mindset: I don’t mind saying no, I don’t mind polishing existing systems rather than heroic rewrites, etc.\n\nBut, admitting my own biases, I believe this approach is a productive way to engage with LLMs that retains the art of computer programming and properly acknowledges a dual reality: code has gotten much cheaper to create and complexity remains our apex predator.","publishedAt":"2026-06-04T00:00:00.000Z","url":"https://htmx.org/essays/code-is-cheap/","media":[],"prerelease":false,"source":{"slug":"htmx","name":"htmx","type":"feed"},"org":{"slug":"htmx","name":"htmx"},"product":null,"groupSlug":"htmx","groupName":"htmx","coverageCount":0,"composition":null},{"id":"rel_QC0D3efEQWQbom1jcflJ4","version":"@sveltejs/kit@2.62.0","type":"feature","title":"@sveltejs/kit@2.62.0","summary":"### Minor Changes\n\n-   feat: support passing Svelte(Kit) config via Vite plugin ([#15944](https://github.com/sveltejs/kit/pull/15944))\n\n### Patch Chan...","titleGenerated":null,"titleShort":null,"content":"### Minor Changes\n\n-   feat: support passing Svelte(Kit) config via Vite plugin ([#15944](https://github.com/sveltejs/kit/pull/15944))\n\n### Patch Changes\n\n-   fix: preserve multiple `Set-Cookie` headers on 304 responses ([#15902](https://github.com/sveltejs/kit/pull/15902))\n\n\n-   fix: preload for anchor elements that were just previously preloaded ([#15915](https://github.com/sveltejs/kit/pull/15915))\n\n\n-   fix: catch load function streaming errors on the client ([#15929](https://github.com/sveltejs/kit/pull/15929))\n\n\n-   fix: avoid generating the `_app/env.js` module if public dynamic environment variables are not used by the app ([#15940](https://github.com/sveltejs/kit/pull/15940))\n","publishedAt":"2026-06-02T19:41:32.000Z","url":"https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%402.62.0","media":[],"prerelease":false,"source":{"slug":"kit","name":"kit","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"sveltekit","name":"SvelteKit"},"groupSlug":"sveltekit","groupName":"SvelteKit","coverageCount":0,"composition":null},{"id":"rel_Ol8dO3Z14u6b40NMFZyLV","version":"@sveltejs/package@2.5.8","type":"feature","title":"@sveltejs/package@2.5.8","summary":"### Patch Changes\n\n-   chore: bump `svelte2tsx` dependency to support TypeScript 6 ([#15896](https://github.com/sveltejs/kit/pull/15896))\n","titleGenerated":null,"titleShort":null,"content":"### Patch Changes\n\n-   chore: bump `svelte2tsx` dependency to support TypeScript 6 ([#15896](https://github.com/sveltejs/kit/pull/15896))\n","publishedAt":"2026-06-02T19:41:29.000Z","url":"https://github.com/sveltejs/kit/releases/tag/%40sveltejs/package%402.5.8","media":[],"prerelease":false,"source":{"slug":"kit","name":"kit","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"sveltekit","name":"SvelteKit"},"groupSlug":"sveltekit","groupName":"SvelteKit","coverageCount":0,"composition":null},{"id":"rel_a4lDFFCTA_XgU-KAxN_RL","version":"v4.4.7","type":"feature","title":"v4.4.7","summary":"> 4.4.7 is the a security hotfix release.\r\n\r\n👉 make sure to check https://github.com/nuxt/nuxt/security/advisories to view open advisories resolved b...","titleGenerated":null,"titleShort":null,"content":"> 4.4.7 is the a security hotfix release.\r\n\r\n👉 make sure to check https://github.com/nuxt/nuxt/security/advisories to view open advisories resolved by this release.\r\n\r\n## 👉 Changelog\r\n\r\n[compare changes](https://github.com/nuxt/nuxt/compare/v4.4.6...v4.4.7)\r\n### 🩹 Fixes\r\n- **nitro:** Assign `noSSR` before deciding payload extraction ([#35108](https://github.com/nuxt/nuxt/pull/35108))\r\n- **vite:** Avoid filtering out dirs with shared prefix from `allowDirs` ([#35112](https://github.com/nuxt/nuxt/pull/35112))\r\n- **nuxt:** Use resolve from `pathe` for buildCache path boundary check ([#35111](https://github.com/nuxt/nuxt/pull/35111))\r\n- **nuxt:** Prevent sibling-directory traversal in test component wrapper ([#35110](https://github.com/nuxt/nuxt/pull/35110))\r\n- **nitro:** Pass event data to `isValid` in dev clipboard-copy listener ([#35109](https://github.com/nuxt/nuxt/pull/35109))\r\n- **nuxt:** Validate protocols in `reloadNuxtApp` path before reload ([#35115](https://github.com/nuxt/nuxt/pull/35115))\r\n- **vite:** Prefix public asset virtuals with null byte ([9e303b438](https://github.com/nuxt/nuxt/commit/9e303b438))\r\n- **nuxt:** Re-run `getCachedData` after initial fetch ([#35122](https://github.com/nuxt/nuxt/pull/35122))\r\n- **nuxt:** Propagate `useFetch`/`useAsyncData` factory types ([#35133](https://github.com/nuxt/nuxt/pull/35133))\r\n- **vite:** Close vite dev server on nuxt close ([a10a68abc](https://github.com/nuxt/nuxt/commit/a10a68abc))\r\n- **kit,nuxt:** Handle cancelling prompts to install packages ([e84813229](https://github.com/nuxt/nuxt/commit/e84813229))\r\n- **kit:** Avoid excluding node-context files in legacy tsconfig ([#35152](https://github.com/nuxt/nuxt/pull/35152))\r\n- **nuxt:** Handle missing payload in chunkError listener ([#35155](https://github.com/nuxt/nuxt/pull/35155))\r\n- **nuxt:** Await in-lifght template generation when closing nuxt ([#35181](https://github.com/nuxt/nuxt/pull/35181))\r\n- **nuxt:** Clarify page and layout usage warnings ([#35184](https://github.com/nuxt/nuxt/pull/35184))\r\n- **webpack:** Surface compilation errors when stats.toString is empty ([073b07851](https://github.com/nuxt/nuxt/commit/073b07851))\r\n- **nuxt:** Reject prototype-chain keys in the island registry ([#35205](https://github.com/nuxt/nuxt/pull/35205))\r\n- **nuxt:** Apply `isScriptProtocol` guard to `navigateTo` open option ([#35206](https://github.com/nuxt/nuxt/pull/35206))\r\n- **nuxt:** Prevent server-only page island from recursing via `<NuxtPage>` ([#35198](https://github.com/nuxt/nuxt/pull/35198))\r\n- **rspack,webpack:** Require loopback host when missing same-origin signals ([#35200](https://github.com/nuxt/nuxt/pull/35200))\r\n- **nitro:** Gate chrome devtools workspace endpoint to local requests ([#35201](https://github.com/nuxt/nuxt/pull/35201))\r\n- **nuxt:** Escape props in `<NuxtClientFallback>` ssr output ([#35199](https://github.com/nuxt/nuxt/pull/35199))\r\n- **kit:** Improve TS extension stripping/substitutions ([#35233](https://github.com/nuxt/nuxt/pull/35233))\r\n- **nuxt:** Preserve `.d.mts`/`.d.cts` in `resolveTypePaths` ([#35235](https://github.com/nuxt/nuxt/pull/35235))\r\n- **nuxt:** Escape `<NoScript>` slot content ([4b054e9d9](https://github.com/nuxt/nuxt/commit/4b054e9d9))\r\n- **nuxt:** Match route rules case-insensitively to mirror `vue-router` ([07e39cd6f](https://github.com/nuxt/nuxt/commit/07e39cd6f))\r\n- **nuxt:** Reject script-capable protocols in `<NuxtLink>` href ([0103ce06f](https://github.com/nuxt/nuxt/commit/0103ce06f))\r\n- **nuxt:** Block path-normalization open redirect in `navigateTo` ([2cce6fb02](https://github.com/nuxt/nuxt/commit/2cce6fb02))\r\n- **nuxt:** Reject cross-origin paths in `reloadNuxtApp` ([e447a793c](https://github.com/nuxt/nuxt/commit/e447a793c))\r\n- **vite:** Bind vite-node IPC to a permissioned filesystem socket ([1f9f4767a](https://github.com/nuxt/nuxt/commit/1f9f4767a))\r\n### 💅 Refactors\r\n- **kit,nuxt,vite:** Use `es2023` array methods ([#34980](https://github.com/nuxt/nuxt/pull/34980))\r\n- **nuxt:** Replace `runInNewContext` with AST walker ([d72a89ef4](https://github.com/nuxt/nuxt/commit/d72a89ef4))\r\n### 📖 Documentation\r\n- Document vite client and server options ([#35090](https://github.com/nuxt/nuxt/pull/35090))\r\n- Add dedicated module dependencies page ([#35171](https://github.com/nuxt/nuxt/pull/35171))\r\n- Add nodeTsConfig and sharedTsConfig options ([#35231](https://github.com/nuxt/nuxt/pull/35231))\r\n- Edit for clarity and grammar ([#35214](https://github.com/nuxt/nuxt/pull/35214))\r\n### 🏡 Chore\r\n- Use `execFileSync` for safety in release scripts ([1d7baaf01](https://github.com/nuxt/nuxt/commit/1d7baaf01))\r\n- Assert there is always a tag ([e98c47c3c](https://github.com/nuxt/nuxt/commit/e98c47c3c))\r\n- Add autofix action tag in comment ([ffa5c0098](https://github.com/nuxt/nuxt/commit/ffa5c0098))\r\n- Fix type in test ([a549652e2](https://github.com/nuxt/nuxt/commit/a549652e2))\r\n- Update renovate minimum release age ([d12d5e58a](https://github.com/nuxt/nuxt/commit/d12d5e58a))\r\n- Fix lychee dynamic composable exclude ([#35119](https://github.com/nuxt/nuxt/pull/35119))\r\n- Update lockfile ([91186dc51](https://github.com/nuxt/nuxt/commit/91186dc51))\r\n- Lint ([dbc58965c](https://github.com/nuxt/nuxt/commit/dbc58965c))\r\n### ✅ Tests\r\n- Update test for js payload rendering ([bdcb81536](https://github.com/nuxt/nuxt/commit/bdcb81536))\r\n- Cover add regression test for hmr in sibling local layers ([#35125](https://github.com/nuxt/nuxt/pull/35125))\r\n- Improve reliability of hmr test ([1d709b3cc](https://github.com/nuxt/nuxt/commit/1d709b3cc))\r\n### 🤖 CI\r\n- Always run all tests for 4.x/3.x ([0dc4665cf](https://github.com/nuxt/nuxt/commit/0dc4665cf))\r\n- Migrate from tibdex ([ded29dc0f](https://github.com/nuxt/nuxt/commit/ded29dc0f))\r\n- Add zizmor github actions check ([#35089](https://github.com/nuxt/nuxt/pull/35089))\r\n- Update to agentscan v1.8.0 ([#35120](https://github.com/nuxt/nuxt/pull/35120))\r\n- Automatically close PRs from automated accounts ([#35161](https://github.com/nuxt/nuxt/pull/35161))\r\n- Disable provenance-change enforcement in dependency-review ([a2cf43e68](https://github.com/nuxt/nuxt/commit/a2cf43e68))\r\n\r\n### ❤️ Contributors\r\n- Daniel Roe (@danielroe)\r\n- David Stack (@davidstackio)\r\n- David De Sloovere (@DavidDeSloovere)\r\n- anton-gor-dev (@anton-gor-dev)\r\n- Noah3521 (@Noah3521)\r\n- Shahar Aviram (@ShaharAviram1)\r\n- Matej Černý (@cernymatej)\r\n- Mohit Kumar (@mohitkum4r)\r\n- Matteo Gabriele (@MatteoGabriele)\r\n- Julien Huang (@huang-julien)\r\n- Damian Głowala (@DamianGlowala)","publishedAt":"2026-06-02T14:33:12.000Z","url":"https://github.com/nuxt/nuxt/releases/tag/v4.4.7","media":[],"prerelease":false,"source":{"slug":"nuxt","name":"Nuxt","type":"github"},"org":{"slug":"nuxt","name":"Nuxt"},"product":null,"groupSlug":"nuxt","groupName":"Nuxt","coverageCount":0,"composition":null},{"id":"rel_bCTjUtJJOwjnBdeUBdiF3","version":"v3.21.7","type":"feature","title":"v3.21.7","summary":"> 3.21.7 is the a security hotfix release.\r\n\r\n👉 make sure to check https://github.com/nuxt/nuxt/security/advisories to view open advisories resolved ...","titleGenerated":null,"titleShort":null,"content":"> 3.21.7 is the a security hotfix release.\r\n\r\n👉 make sure to check https://github.com/nuxt/nuxt/security/advisories to view open advisories resolved by this release.\r\n\r\n## 👉 Changelog\r\n\r\n[compare changes](https://github.com/nuxt/nuxt/compare/v3.21.6...v3.21.7)\r\n### 🩹 Fixes\r\n- **nitro:** Assign `noSSR` before deciding payload extraction ([#35108](https://github.com/nuxt/nuxt/pull/35108))\r\n- **vite:** Avoid filtering out dirs with shared prefix from `allowDirs` ([#35112](https://github.com/nuxt/nuxt/pull/35112))\r\n- **nuxt:** Use resolve from `pathe` for buildCache path boundary check ([#35111](https://github.com/nuxt/nuxt/pull/35111))\r\n- **nuxt:** Prevent sibling-directory traversal in test component wrapper ([#35110](https://github.com/nuxt/nuxt/pull/35110))\r\n- **nitro:** Pass event data to `isValid` in dev clipboard-copy listener ([#35109](https://github.com/nuxt/nuxt/pull/35109))\r\n- **nuxt:** Validate protocols in `reloadNuxtApp` path before reload ([#35115](https://github.com/nuxt/nuxt/pull/35115))\r\n- **vite:** Resolve vite `clientServer` with `ssr: false` ([#34959](https://github.com/nuxt/nuxt/pull/34959))\r\n- **vite:** Prefix public asset virtuals with null byte ([38d330179](https://github.com/nuxt/nuxt/commit/38d330179))\r\n- **nuxt:** Handle missing payload in chunkError listener ([#35155](https://github.com/nuxt/nuxt/pull/35155))\r\n- **vite:** Close vite dev server on nuxt close ([d007d7060](https://github.com/nuxt/nuxt/commit/d007d7060))\r\n- **kit,nuxt:** Handle cancelling prompts to install packages ([59821a5ca](https://github.com/nuxt/nuxt/commit/59821a5ca))\r\n- **nuxt:** Await in-lifght template generation when closing nuxt ([#35181](https://github.com/nuxt/nuxt/pull/35181))\r\n- **webpack:** Surface compilation errors when stats.toString is empty ([71dccff2b](https://github.com/nuxt/nuxt/commit/71dccff2b))\r\n- **kit:** Improve TS extension stripping/substitutions ([#35233](https://github.com/nuxt/nuxt/pull/35233))\r\n- **nuxt:** Preserve `.d.mts`/`.d.cts` in `resolveTypePaths` ([#35235](https://github.com/nuxt/nuxt/pull/35235))\r\n- **nuxt:** Reject prototype-chain keys in the island registry ([#35205](https://github.com/nuxt/nuxt/pull/35205))\r\n- **nitro:** Gate chrome devtools workspace endpoint to local requests ([#35201](https://github.com/nuxt/nuxt/pull/35201))\r\n- **nuxt:** Escape props in `<NuxtClientFallback>` ssr output ([#35199](https://github.com/nuxt/nuxt/pull/35199))\r\n- **nuxt:** Apply `isScriptProtocol` guard to `navigateTo` open option ([#35206](https://github.com/nuxt/nuxt/pull/35206))\r\n- **rspack,webpack:** Require loopback host when missing same-origin signals ([#35200](https://github.com/nuxt/nuxt/pull/35200))\r\n- **nuxt:** Absolutely resolve `defu` in app config template ([40bedf0db](https://github.com/nuxt/nuxt/commit/40bedf0db))\r\n- **nuxt:** Match route rules case-insensitively to mirror `vue-router` ([3f3e3fa7b](https://github.com/nuxt/nuxt/commit/3f3e3fa7b))\r\n- **nuxt:** Escape `<NoScript>` slot content ([7fea9fd68](https://github.com/nuxt/nuxt/commit/7fea9fd68))\r\n- **nuxt:** Block path-normalization open redirect in `navigateTo` ([1f2dd5e78](https://github.com/nuxt/nuxt/commit/1f2dd5e78))\r\n- **nuxt:** Reject cross-origin paths in `reloadNuxtApp` ([6497d99dd](https://github.com/nuxt/nuxt/commit/6497d99dd))\r\n- **vite:** Bind vite-node IPC to a permissioned filesystem socket ([c293bf950](https://github.com/nuxt/nuxt/commit/c293bf950))\r\n- **nuxt:** Reject script-capable protocols in `<NuxtLink>` href ([53284043d](https://github.com/nuxt/nuxt/commit/53284043d))\r\n- **nuxt:** Clarify page and layout usage warnings ([#35184](https://github.com/nuxt/nuxt/pull/35184))\r\n- **nuxt:** Do not absolutely resolve `defu` ([d11d7b1b5](https://github.com/nuxt/nuxt/commit/d11d7b1b5))\r\n### 📖 Documentation\r\n- Edit for clarity and grammar ([#35214](https://github.com/nuxt/nuxt/pull/35214))\r\n- Add dedicated module dependencies page ([#35171](https://github.com/nuxt/nuxt/pull/35171))\r\n### 🏡 Chore\r\n- Use `execFileSync` for safety in release scripts ([9a455a658](https://github.com/nuxt/nuxt/commit/9a455a658))\r\n- Assert there is always a tag ([8da21fba8](https://github.com/nuxt/nuxt/commit/8da21fba8))\r\n- Fix type in test ([bc2837125](https://github.com/nuxt/nuxt/commit/bc2837125))\r\n- Fix lychee dynamic composable exclude ([#35119](https://github.com/nuxt/nuxt/pull/35119))\r\n- Add autofix action tag in comment ([70eba297f](https://github.com/nuxt/nuxt/commit/70eba297f))\r\n- Update renovate minimum release age ([27a6821a1](https://github.com/nuxt/nuxt/commit/27a6821a1))\r\n### ✅ Tests\r\n- Update test for js payload rendering ([b51a80840](https://github.com/nuxt/nuxt/commit/b51a80840))\r\n- Improve reliability of hmr test ([0078499f0](https://github.com/nuxt/nuxt/commit/0078499f0))\r\n### 🤖 CI\r\n- Always run all tests for 4.x/3.x ([0519c0ade](https://github.com/nuxt/nuxt/commit/0519c0ade))\r\n- Update to agentscan v1.8.0 ([#35120](https://github.com/nuxt/nuxt/pull/35120))\r\n- Automatically close PRs from automated accounts ([#35161](https://github.com/nuxt/nuxt/pull/35161))\r\n- Migrate from tibdex ([6277aedcb](https://github.com/nuxt/nuxt/commit/6277aedcb))\r\n- Disable provenance-change enforcement in dependency-review ([1d4910eed](https://github.com/nuxt/nuxt/commit/1d4910eed))\r\n- Add zizmor github actions check ([#35089](https://github.com/nuxt/nuxt/pull/35089))\r\n\r\n### ❤️ Contributors\r\n- Daniel Roe (@danielroe)\r\n- Matej Černý (@cernymatej)\r\n- anton-gor-dev (@anton-gor-dev)\r\n- Julien Huang (@huang-julien)\r\n- David Stack (@davidstackio)\r\n- Noah3521 (@Noah3521)\r\n- Matteo Gabriele (@MatteoGabriele)\r\n- Mohit Kumar (@mohitkum4r)\r\n- Florian Heuberger (@Flo0806)","publishedAt":"2026-06-02T14:33:02.000Z","url":"https://github.com/nuxt/nuxt/releases/tag/v3.21.7","media":[],"prerelease":false,"source":{"slug":"nuxt","name":"Nuxt","type":"github"},"org":{"slug":"nuxt","name":"Nuxt"},"product":null,"groupSlug":"nuxt","groupName":"Nuxt","coverageCount":0,"composition":null},{"id":"rel_TmR1ObxsJocsvTQ-0Tff_","version":"svelte@5.56.1","type":"feature","title":"svelte@5.56.1","summary":"### Patch Changes\n\n-   fix: error at compile time on duplicate snippet/declaration tag definitions ([#18351](https://github.com/sveltejs/svelte/pull/1...","titleGenerated":null,"titleShort":null,"content":"### Patch Changes\n\n-   fix: error at compile time on duplicate snippet/declaration tag definitions ([#18351](https://github.com/sveltejs/svelte/pull/18351))\n\n-   fix: parse declaration tag contents more robustly ([#18353](https://github.com/sveltejs/svelte/pull/18353))\n\n-   fix: correctly transform references to earlier declarators in a declaration tag (e.g. `{let a = $state(0), b = $derived(a * 2)}`) ([#18348](https://github.com/sveltejs/svelte/pull/18348))\n\n-   fix: avoid spurious `state_referenced_locally` warnings for `$derived` declarations in declaration tags ([#18348](https://github.com/sveltejs/svelte/pull/18348))\n\n-   fix: tolerate whitespace before `let`/`const` in declaration tags ([#18348](https://github.com/sveltejs/svelte/pull/18348))\n\n-   fix: prevent infinite loop when a tag's expression ends with a trailing `/` at the end of the input ([#18350](https://github.com/sveltejs/svelte/pull/18350))\n\n-   fix: more robust parsing of declaration tags with regards to `type` ([#18330](https://github.com/sveltejs/svelte/pull/18330))\n\n-   fix: preserve newlines in spread input values when the `type` attribute is applied after `value` ([#18345](https://github.com/sveltejs/svelte/pull/18345))\n\n-   fix: update `SvelteURLSearchParams` when setting duplicate keys to the same joined value ([#18336](https://github.com/sveltejs/svelte/pull/18336))\n\n-   fix: check references for blockers on server, too ([#18352](https://github.com/sveltejs/svelte/pull/18352))\n","publishedAt":"2026-06-01T22:42:27.000Z","url":"https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1","media":[],"prerelease":false,"source":{"slug":"svelte","name":"svelte","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"svelte","name":"Svelte"},"groupSlug":"svelte","groupName":"Svelte","coverageCount":0,"composition":null},{"id":"rel_wYzGs3YAhrIdYpTvW6Sk5","version":"v15.5.19","type":"feature","title":"15.5.19","summary":"Fixed a bug where FormData entries were being dropped.","titleGenerated":"Next.js v15.5.19 fixes FormData entry loss","titleShort":"FormData entries no longer dropped","content":"> [!NOTE]\r\n> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.\r\n\r\n### Core Changes\r\n\r\n- [15.5.x] Don't drop `FormData` entries (#94244)\r\n\r\n### Other\r\n\r\n- [15.5.x] Fix CI (#94281)\r\n\r\n### Credits\r\n\r\nHuge thanks to @eps1lon for helping!\r\n","publishedAt":"2026-06-01T20:09:02.000Z","url":"https://github.com/vercel/next.js/releases/tag/v15.5.19","media":[],"prerelease":false,"source":{"slug":"next-js","name":"Next.js","type":"github"},"org":{"slug":"vercel","name":"Vercel"},"product":{"slug":"nextjs","name":"Next.js"},"groupSlug":"nextjs","groupName":"Next.js","coverageCount":0,"composition":{"bugs":1,"features":0,"enhancements":0}},{"id":"rel_uF78CfsWgCtTv-rHtVNbI","version":"v16.2.7","type":"feature","title":"v16.2.7","summary":"Fixed a dev mode hydration failure when pages are served from HTTP cache, catch-all router.query corruption with basePath and rewrites, and server action forwarding loops with middleware rewrites. Also fixed FormData entry dropping, playwright-core promise resolution, non-ASCII cache tag encoding, and type module support in standalone/adapter deployments.","titleGenerated":"Next.js v16.2.7 fixes hydration, router.query, and server action forwarding","titleShort":"Dev mode hydration fixed; router.query corruption resolved","content":"> [!NOTE]\r\n> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.\r\n\r\n### Core Changes\r\n\r\n- Backport documentation fixes for v16.2 (#93804)\r\n- [backport] Patch `playwright-core` to resolve `_finishedPromise` on `requestFailed` (#93920)\r\n- [backport] Fix dev mode hydration failure when page is served from HTTP cache (#93492)\r\n- [backport] Fix catch-all `router.query` corruption with `basePath` + `rewrites` (#93917)\r\n- [backport] Encode non-ASCII characters in cache tags at construction (#93918)\r\n- [backport] Fix server action forwarding loop with middleware rewrites (#93919)\r\n- [backport] Turbopack: switch from base40 to base38 hash encoding (#93932)\r\n- [ci] Disable hanging node 24 typescript tests on 16.2 backport branch (#94164)\r\n- [backport] Fix \"type: module\" in project dir when using standalone or adapters (#94050)\r\n- [backport] Propagate adapter preferred regions (#94200)\r\n- [16.2.x] Don't drop `FormData` entries (#94240)\r\n- [backport] feat(turbopack): add LocalPathOrProjectPath PostCSS config resolution (#94284)\r\n\r\n### Credits\r\n\r\nHuge thanks to @eps1lon, @icyJoseph, @unstubbable, @mischnic, @bgw, @timneutkens, and @lukesandberg for helping!\r\n","publishedAt":"2026-06-01T19:53:29.000Z","url":"https://github.com/vercel/next.js/releases/tag/v16.2.7","media":[],"prerelease":false,"source":{"slug":"next-js","name":"Next.js","type":"github"},"org":{"slug":"vercel","name":"Vercel"},"product":{"slug":"nextjs","name":"Next.js"},"groupSlug":"nextjs","groupName":"Next.js","coverageCount":0,"composition":{"bugs":9,"features":0,"enhancements":2}},{"id":"rel_pS9rXhjgPjBlIPTxIkor3","version":null,"type":"feature","title":"What’s new in Svelte: June 2026","summary":"This month we got a bunch of improvements in SvelteKit's forms and remote functions. Plus, a new query function (`.live(...)`) that makes accessing re...","titleGenerated":null,"titleShort":null,"content":"This month we got a bunch of improvements in SvelteKit's forms and remote functions. Plus, a new query function (`.live(...)`) that makes accessing real-time data from the server easier.\n\nKeep an eye out for a few breaking changes in remote functions, if you're using those. Otherwise, enjoy all the new SvelteKit features and bug fixes in the latest versions of Svelte.\n\nLet's dive in!\n\n## What's new in SvelteKit\n\n- Form `submit` now returns a boolean to indicate submission validity for enhanced remote forms (**2.57.0**, [Docs](https://svelte.dev/docs/kit/$app-forms#enhance), [#15530](https://github.com/sveltejs/kit/pull/15530))\n- Breaking: `requested(...)` now requires `limit` and yields `{ arg, query }` entries instead of returning the validated argument directly (**2.58.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#Single-flight-mutations-Client-requested-refreshes), [#15739](https://github.com/sveltejs/kit/pull/15739))\n- `requested(...)` now supports `query.batch(...)`, which makes batch remote query workflows easier to inspect in request-time logic (**2.59.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#query.batch), [#15751](https://github.com/sveltejs/kit/pull/15751))\n- `submit` and `hidden` remote form fields can now accept booleans and numbers directly (**2.60.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#form-Fields), [#15802](https://github.com/sveltejs/kit/pull/15802))\n- SvelteKit now warns when remote form validation issues are never read, helping catch missed UX paths earlier (**2.60.0**, [Docs](https://svelte.dev/docs/kit/remote-functions), [#15653](https://github.com/sveltejs/kit/pull/15653))\n- Breaking: `.run()` was removed from remote queries - use `await query()` directly in all contexts instead (**2.61.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#query), [#15779](https://github.com/sveltejs/kit/pull/15779))\n- Remote queries can now be awaited in event handlers, async callbacks and module scope, with cache deduping shared across reactive and non-reactive consumers (**2.61.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#query-Query-arguments), [#15779](https://github.com/sveltejs/kit/pull/15779))\n- `query.live(...)` makes working with long-lived remote query subscriptions easier and are now async-iterable (experimental **2.59.0**, async in **2.61.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#query.live), [#15878](https://github.com/sveltejs/kit/pull/15878))\n- Breaking: Enhance callbacks now receive a copy of the form remote function instance, rather than a `{ form, data, submit }` object. Plus, remote form instances now expose a programmatic `submit()` API and can be passed into `enhance` callbacks (**2.61.0**, [Docs](https://svelte.dev/docs/kit/remote-functions#form-enhance), [#15657](https://github.com/sveltejs/kit/pull/15657))\n\nFor all the features and bugfixes that landed this month, check out the SvelteKit / Adapter [CHANGELOGs](https://github.com/sveltejs/kit/tree/main/packages).\n\n## What's new in Svelte and the Svelte ecosystem\n\n- Templates now allow declarations directly in markup, making it easier to define values close to where they're used (**svelte@5.56.0**, [#18282](https://github.com/sveltejs/svelte/pull/18282))\n- Svelte language-tools now support TypeScript 6.0 across the language server, svelte2tsx and svelte-check packages (**svelte-language-server@0.18.0/svelte2tsx@0.7.55/svelte-check@4.4.8/svelte-preprocess@6.0.4**, [Docs](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/), [#2985](https://github.com/sveltejs/language-tools/pull/2985) / [#675](https://github.com/sveltejs/svelte-preprocess/pull/675))\n- Svelte MCP's `stdio` mode can now read file content directly, reducing round trips in local tool workflows (**mcp@0.1.23**, [Docs](https://svelte.dev/docs/ai/svelte-mcp), [#198](https://github.com/sveltejs/ai-tools/pull/198))\n- vite-plugin-svelte now enables the optimizer for server environments during development (**vite-plugin-svelte@7.1.0**, [#1328](https://github.com/sveltejs/vite-plugin-svelte/pull/1328))\n\nWant to dive deep into everything new this month? Check out the [language-tools](https://github.com/sveltejs/language-tools/releases), [ai-tools](https://github.com/sveltejs/ai-tools/releases) and [vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/releases) releases.\n\nFor all the minor changes and bugfixes that came out in the Svelte compiler this month, you can read the full [Svelte CHANGELOG](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md).\n\n---\n\n## Community Showcase\n\n### Apps & Sites built with Svelte\n\n- [asciidia.com](https://asciidia.com) is an ASCII-style browser game experiment built with Svelte\n- [Bingewatcher.org](https://bingewatcher.org) is a daily movie guessing game based on data from Wikipedia and word vectors for 157 languages\n- [Delcard](https://delcard.fun) is an open source peer-to-peer card game platform built with SvelteKit ([GitHub](https://github.com/LucaDeltort/delcard_games))\n- [Dialyma](https://dialyma.com/tutorials) is an open source canvas builder that can export production-ready code ([GitHub](https://github.com/dialymaai/dialyma))\n- [Exort](https://www.exort.dev/) is a local workspace for writing microcontroller code, compiling and uploading projects, and monitoring live serial output on supported boards ([GitHub](https://github.com/Razz19/Exort/))\n- [Heavy Duty Inc](https://store.steampowered.com/app/4154670/Heavy_Duty_Inc/) is a turn-based tactics game built with Svelte ([Reddit](https://www.reddit.com/r/sveltejs/comments/1tq7cnr/built_a_turnbased_tactics_game_with_svelte_demo/))\n- [hope-art.app](https://www.hope-art.app/en) applies protection filters to artwork images before sharing them online to prevent unauthorized AI training and style mimicry ([GitHub](https://github.com/HopeArtOrg/hope-re))\n- [Image Palette Studio](https://image-palette-studio.vercel.app/) turns images into UI themes with generated CSS variables ([GitHub](https://github.com/aozoragh/image-palette-studio))\n- [Pad](https://getpad.dev) is a local-first collaboration tool that combines a Go CLI with an embedded Svelte web app for human-agent workflows ([GitHub](https://github.com/PerpetualSoftware/pad))\n- [Serverwat.ch](https://serverwat.ch/) is a SvelteKit dashboard for monitoring Hetzner-hosted projects\n- [Trezur](https://trezur.quirkdom.com/) is a privacy-preserving browser-side 2FA authenticator with PWA support and cloud sync ([GitHub](https://github.com/quirkdom/trezur))\n- [Splitwave](https://splitwave.app/) is a free node-based audio router for macOS built with Tauri + Svelte ([GitHub](https://github.com/Horuse/Splitwave))\n- [Tank Supremo](https://tanks.tiyal.com/) is a multiplayer 3D tank game built with Svelte\n- [Vivix](https://vivix.dev) is a JavaScript execution visualizer that uses a worker-based interpreter for smooth timeline scrubbing ([GitHub](https://github.com/HenryOnilude/vivix))\n- [Zenos](https://zenos.com) is a stealth startup from SvelteKit maintainer [Ben McCann](https://www.benmccann.com) that is bringing software productivity to the physical world.\n\n### Learning Resources\n\n*This Week in Svelte*\n\n- [Ep. 140](https://www.youtube.com/watch?v=AVX9lqFHOnM) - Changelog, Imperative interfaces\n- [Ep. 141](https://www.youtube.com/watch?v=mq-52XBwUbM) - Changelog\n- [Ep. 142](https://www.youtube.com/watch?v=P87sNdxZa6Q) - Changelog\n\n*To Read*\n\n- [Why Svelte Is Better Than React in the Agentic Era](https://zackwebster.com/blog/why-svelte-is-better-than-react-in-the-ai-era) by Zack Webster\n- [Automate LinkedIn Carousels with SvelteKit Remote Functions](https://orshot.com/blog/automate-linkedin-carousels-sveltekit) by Rishi Raj Jain\n- [Tank Supremo: From a Teenage Dream to a Multiplayer Game](https://www.linkedin.com/pulse/tank-supremo-from-teenage-dream-multiplayer-game-eyal-azulay-jylde/) by Eyal Azulay\n\n### Libraries, Tools & Components\n\n*UI Components and Visual Effects*\n\n- [Huey](https://hueycolor.pages.dev) provides a composable color picker for Svelte 5 ([GitHub](https://github.com/hueycolor/huey))\n- [Svelte Dot Matrix Loaders](https://sv-matrix.vercel.app) provides 50+ animated dot-matrix loaders for Svelte projects ([GitHub](https://github.com/SikandarJODD/sv-matrix))\n- [Paper Shaders for Svelte](https://shaders.devmischief.com) provides paper-style shader effects in an open source Svelte package ([GitHub](https://github.com/manuelogomigo/paper-shaders-svelte))\n- [EmbedPDF for Svelte](https://www.embedpdf.com/svelte-pdf-viewer) provides a headless PDF viewer for Svelte apps built on PDFium instead of PDF.js ([GitHub](https://github.com/embedpdf/embed-pdf-viewer))\n- [Svelte Event Calendar](https://svar.dev/demos/calendar/) is a Google-like event calendar component for Svelte with drag-and-drop editing and multiple calendar support ([GitHub](https://github.com/svar-widgets/calendar))\n\n*App Building and Product Tooling*\n\n- [Convex Better Auth UI for SvelteKit](https://etesie.dev/docs/auth/overview/introduction) provides self-hosted auth and organization UI components powered by Convex + Better Auth ([GitHub](https://github.com/mmailaender/Convex-Better-Auth-UI))\n- [Aphex CMS](https://getaphex.com/) is an open source Sanity-inspired CMS that runs inside a single SvelteKit app ([GitHub](https://github.com/IcelandicIcecream/aphex))\n- [svelte-visual-builder](https://github.com/BluePointDigital/svelte-visual-builder) is an Elementor-style visual builder for SvelteKit projects\n- [SvelteESP32 v3.0](https://github.com/BCsabaEngine/svelteesp32) lets you wire Svelte frontends to ESP32 workflows with an updated Vite plugin flow\n\n*Developer Tools and Utilities*\n\n- [Svelte Hero](https://plugins.jetbrains.com/plugin/31546-svelte-hero) is a new JetBrains plugin focused on better Svelte support\n- [jscpd v4.2.0](https://jscpd.dev/) now supports Svelte projects for duplicate code detection ([Changelog](https://github.com/kucherenko/jscpd/blob/master/CHANGELOG.md#420--2026-05-14))\n- [Svelte Use](https://svelte-use.ariefsn.dev) provides a collection of composable utilities for Svelte apps ([GitHub](https://github.com/ariefsn/svelte-use))\n\n*Plugins and Runtime Integrations*\n\n- [vite-plugin-svelte-tailwind-auto-reference](https://github.com/awaiden/vite-plugin-svelte-tailwind-auto-reference) automatically injects Tailwind CSS `@reference` in Svelte style blocks when `@apply` is used\n- [SvelteKit Proxy](https://github.com/ariefsn/sveltekit-proxy) provides a simple way to proxy requests in production using SvelteKit's `hooks.server.ts`\n- [svelte-ws](https://github.com/sowahq/svelte-ws) adds WebSocket support across SvelteKit runtimes with an adapter and Vite plugin\n\nThat's it for this month! Let us know if we missed anything on [Reddit](https://www.reddit.com/r/sveltejs/) or [Discord](https://discord.gg/svelte).\n\nUntil next time 👋🏼!","publishedAt":"2026-06-01T00:00:00.000Z","url":"https://svelte.dev/blog/whats-new-in-svelte-june-2026","media":[],"prerelease":false,"source":{"slug":"svelte-blog","name":"Svelte Blog","type":"feed"},"org":{"slug":"svelte","name":"Svelte"},"product":null,"groupSlug":"svelte-blog","groupName":"Svelte Blog","coverageCount":0,"composition":null},{"id":"rel_K7tCJdqPGyuMSj86hPNDD","version":"svelte@5.56.0","type":"feature","title":"svelte@5.56.0","summary":"### Minor Changes\n\n-   feat: allow declarations in the template ([#18282](https://github.com/sveltejs/svelte/pull/18282))\n\n### Patch Changes\n\n-   perf...","titleGenerated":null,"titleShort":null,"content":"### Minor Changes\n\n-   feat: allow declarations in the template ([#18282](https://github.com/sveltejs/svelte/pull/18282))\n\n### Patch Changes\n\n-   perf: use `createElement` instead of `createElementNS` for HTML elements ([#18262](https://github.com/sveltejs/svelte/pull/18262))\n\n-   perf: store `current_sources` as a `Set` for O(1) membership checks ([#18278](https://github.com/sveltejs/svelte/pull/18278))\n\n-   perf: deduplicate identical hoisted templates within a component ([#18320](https://github.com/sveltejs/svelte/pull/18320))\n\n-   perf: hoist `rest_props` exclude list as a module-scope `Set` ([#18252](https://github.com/sveltejs/svelte/pull/18252))\n","publishedAt":"2026-05-29T22:00:29.000Z","url":"https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.0","media":[],"prerelease":false,"source":{"slug":"svelte","name":"svelte","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"svelte","name":"Svelte"},"groupSlug":"svelte","groupName":"Svelte","coverageCount":0,"composition":null},{"id":"rel_OO_tgLc1FxtKcPCMDIlQx","version":"v20.0.0","type":"feature","title":"v20.0.0","summary":"v20.0.0\n\n### 🛠 Breaking changes\n\n- [eas-cli] Rename observe commands: `observe:logs` → `observe:events` (events emitted via `logEvent`), previous `ob...","titleGenerated":null,"titleShort":null,"content":"v20.0.0\n\n### 🛠 Breaking changes\n\n- [eas-cli] Rename observe commands: `observe:logs` → `observe:events` (events emitted via `logEvent`), previous `observe:events` → `observe:metrics` (individual performance metric samples), previous `observe:metrics` → `observe:metrics-summary` (aggregated stats by app version). ([#3778](https://github.com/expo/eas-cli/pull/3778) by [@kadikraman](https://github.com/kadikraman))\n\n### 🎉 New features\n\n- [eas-cli] `eas go` now prompts to select an Expo SDK version interactively when `--sdk-version` is not provided. ([#3768](https://github.com/expo/eas-cli/pull/3768) by [@gwdp](https://github.com/gwdp))\n- [eas-cli] Add `eas update:embedded:upload` command. ([#3720](https://github.com/expo/eas-cli/pull/3720) by [@gwdp](https://github.com/gwdp))\n\n### 🐛 Bug fixes\n\n- [build-tools] Fix `eas/start_ios_simulator` hanging on Xcode 26.4 by writing the readiness screenshot to a temp file instead of `/dev/null`. ([#3794](https://github.com/expo/eas-cli/pull/3794) by [@gwdp](https://github.com/gwdp))\n","publishedAt":"2026-05-29T00:04:38.000Z","url":"https://github.com/expo/eas-cli/releases/tag/v20.0.0","media":[],"prerelease":false,"source":{"slug":"eas-cli","name":"EAS CLI","type":"github"},"org":{"slug":"expo","name":"Expo"},"product":null,"groupSlug":"eas-cli","groupName":"EAS CLI","coverageCount":0,"composition":null},{"id":"rel_EN9yEUtAPpVSVZ-2J6BJG","version":"svelte@5.55.10","type":"feature","title":"svelte@5.55.10","summary":"### Patch Changes\n\n-   fix: unlink errored and otherwise finished batch ([#18264](https://github.com/sveltejs/svelte/pull/18264))\n\n-   perf: walk comp...","titleGenerated":null,"titleShort":null,"content":"### Patch Changes\n\n-   fix: unlink errored and otherwise finished batch ([#18264](https://github.com/sveltejs/svelte/pull/18264))\n\n-   perf: walk composedPath() directly in delegated event propagation ([#18268](https://github.com/sveltejs/svelte/pull/18268))\n\n-   fix: transfer effects when merging batches ([#18254](https://github.com/sveltejs/svelte/pull/18254))\n\n-   fix: allow `$derived(await ...)` in disconnected effect roots ([#18273](https://github.com/sveltejs/svelte/pull/18273))\n\n-   fix: remove temporary raw-text hydration markers ([#18269](https://github.com/sveltejs/svelte/pull/18269))\n\n-   fix: propagate async `@const` blockers through closure references so template expressions like `{(() => host)()}` correctly wait for the awaited value ([#18309](https://github.com/sveltejs/svelte/pull/18309))\n\n-   fix: properly unlink batches ([#18298](https://github.com/sveltejs/svelte/pull/18298))\n\n-   fix: settle discarded batch ([#18290](https://github.com/sveltejs/svelte/pull/18290))\n\n-   fix: declare `let:` directives before `{@const}` declarations on slotted elements ([#18271](https://github.com/sveltejs/svelte/pull/18271))\n\n-   fix: resume outro-ed branches if they were kept around ([#18291](https://github.com/sveltejs/svelte/pull/18291))\n\n-   fix: avoid waterfall-warning when async resolves to same value ([#18297](https://github.com/sveltejs/svelte/pull/18297))\n\n-   fix: correctly coordinate component-level effects inside async blocks ([#18260](https://github.com/sveltejs/svelte/pull/18260))\n\n-   fix: make unnecessary commit work less likely ([#18263](https://github.com/sveltejs/svelte/pull/18263))\n\n-   chore: add tag name to `a11y_click_events_have_key_events` warning ([#18272](https://github.com/sveltejs/svelte/pull/18272))\n\n-   fix: catch rejected promises while merging/committing ([#18266](https://github.com/sveltejs/svelte/pull/18266))\n","publishedAt":"2026-05-27T21:48:44.000Z","url":"https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10","media":[],"prerelease":false,"source":{"slug":"svelte","name":"svelte","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"svelte","name":"Svelte"},"groupSlug":"svelte","groupName":"Svelte","coverageCount":0,"composition":null},{"id":"rel_eH0AGZtNj4qgf--YeQrF9","version":null,"type":"feature","title":"The Expo MCP Server is now available on the Free plan","summary":"*Connect your AI coding assistant to your Expo project from any Expo plan.*\n\n![The Expo MCP Server is now available on the Free plan](https://cdn.sani...","titleGenerated":null,"titleShort":null,"content":"*Connect your AI coding assistant to your Expo project from any Expo plan.*\n\n![The Expo MCP Server is now available on the Free plan](https://cdn.sanity.io/images/9r24npb8/production/b6171f8441a5c600033a87eaa9525fbfdebd3fd8-2400x1350.png?auto=format&fit=max&q=75&w=1200)\n\nThe [Expo MCP Server](https://docs.expo.dev/eas/ai/mcp/) is now available on the Free plan, with monthly MCP usage included for Free accounts.\n\nWhen we first launched the Expo MCP Server, it was available only on paid plans. Now anyone with an Expo account can connect an AI coding assistant to Expo docs and tools.\n\n## What you can do with Expo MCP\n\nMCP (Model Context Protocol) is an open standard that lets AI assistants connect to external tools and project context. We introduced the Expo MCP Server in [Become an AI-native developer with the Expo MCP Server](https://expo.dev/blog/become-an-ai-native-developer-with-the-expo-mcp-server); this update makes that workflow available to anyone with an Expo account.\n\nDevelopers are already using Expo MCP for a few common workflows:\n\n- **Finding the right Expo answer faster.** Your assistant can pull in official Expo documentation and SDK guidance while you are editing code.\n- **Debugging builds and workflows.** It can inspect EAS build status, workflow runs, logs, failures, and related TestFlight crashes or feedback.\n- **Verifying app behavior locally.** With a local dev server and simulator or emulator, it can take screenshots, tap through flows, inspect views, and collect logs.\n\n## Included Free-plan usage\n\nFree accounts include monthly MCP usage intended to cover individual development, evaluation, prototypes, and occasional Expo-specific assistant help.\n\nUsage is counted at the billing account level. If your account belongs to an organization, all members share the same included monthly usage. If the account reaches its monthly limit, MCP requests will fail with an error until usage is available again.\n\nFor heavier MCP usage, [paid plans](https://expo.dev/pricing) include higher usage limits and may include access to newer MCP capabilities before they are broadly available.\n\n## Get started and feedback\n\nFollow the [MCP docs](https://docs.expo.dev/eas/ai/mcp/) to connect your AI coding assistant to Expo. MCP gives your agent access to Expo tools and project context; [Expo Skills](https://docs.expo.dev/skills/) give it Expo-specific instructions for building, deploying, and debugging apps.\n\nWe'd like to hear what you want MCP and Skills to help with next. Checking whether a release is ready? Understanding update rollout health? Turning build, workflow, or TestFlight signals into concrete fixes? Find us in [Discord](https://chat.expo.dev/) or on [X](https://x.com/expo).","publishedAt":"2026-05-26T19:00:40.000Z","url":"https://expo.dev/changelog/the-expo-mcp-server-is-now-available-on-the-free-plan","media":[{"type":"image","url":"https://cdn.sanity.io/images/9r24npb8/production/b6171f8441a5c600033a87eaa9525fbfdebd3fd8-2400x1350.png?auto=format&fit=max&q=75&w=1200","alt":"The Expo MCP Server is now available on the Free plan"}],"prerelease":false,"source":{"slug":"expo-changelog","name":"Expo Changelog","type":"feed"},"org":{"slug":"expo","name":"Expo"},"product":null,"groupSlug":"expo-changelog","groupName":"Expo Changelog","coverageCount":0,"composition":null},{"id":"rel_0t8u3BiKk4k7BsJBWm6Dx","version":"v19.1.0","type":"feature","title":"v19.1.0","summary":"v19.1.0\n\n### 🎉 New features\n\n- [eas-cli] Add `--refresh-ad-hoc-provisioning-profile` flag to refresh managed ad-hoc provisioning profiles from App St...","titleGenerated":null,"titleShort":null,"content":"v19.1.0\n\n### 🎉 New features\n\n- [eas-cli] Add `--refresh-ad-hoc-provisioning-profile` flag to refresh managed ad-hoc provisioning profiles from App Store Connect before gathering build credentials in non-interactive mode. ([#3716](https://github.com/expo/eas-cli/pull/3716) by [@sswrk](https://github.com/sswrk))\n- [eas-build-job] Add optional `refreshAdHocProvisioningProfile` field to iOS build jobs. ([#3717](https://github.com/expo/eas-cli/pull/3717) by [@sswrk](https://github.com/sswrk))\n- [build-tools] Pass `refreshAdHocProvisioningProfile` through `eas build:internal` for git-based integration builds. ([#3770](https://github.com/expo/eas-cli/pull/3770) by [@sswrk](https://github.com/sswrk))\n","publishedAt":"2026-05-25T13:45:58.000Z","url":"https://github.com/expo/eas-cli/releases/tag/v19.1.0","media":[],"prerelease":false,"source":{"slug":"eas-cli","name":"EAS CLI","type":"github"},"org":{"slug":"expo","name":"Expo"},"product":null,"groupSlug":"eas-cli","groupName":"EAS CLI","coverageCount":0,"composition":null},{"id":"rel_bxgOYbRPmSF8So1Hf3PDt","version":"@sveltejs/kit@2.61.1","type":"feature","title":"@sveltejs/kit@2.61.1","summary":"### Patch Changes\n\n-   fix: regression where routes starting and ending with a route group are not matched correctly ([#15903](https://github.com/svel...","titleGenerated":null,"titleShort":null,"content":"### Patch Changes\n\n-   fix: regression where routes starting and ending with a route group are not matched correctly ([#15903](https://github.com/sveltejs/kit/pull/15903))\n","publishedAt":"2026-05-24T00:20:19.000Z","url":"https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%402.61.1","media":[],"prerelease":false,"source":{"slug":"kit","name":"kit","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"sveltekit","name":"SvelteKit"},"groupSlug":"sveltekit","groupName":"SvelteKit","coverageCount":0,"composition":null},{"id":"rel_jCsHeWhYPqOZsoUK9NJvA","version":"@sveltejs/kit@2.61.0","type":"feature","title":"@sveltejs/kit@2.61.0","summary":"### Minor Changes\n\n-   breaking: the `.run()` method has been removed from remote queries on both the client and the server. Use `await query()` direc...","titleGenerated":null,"titleShort":null,"content":"### Minor Changes\n\n-   breaking: the `.run()` method has been removed from remote queries on both the client and the server. Use `await query()` directly instead — it now works everywhere ([#15779](https://github.com/sveltejs/kit/pull/15779))\n\n\n-   feat: remote queries can now be awaited in any context (event handlers, module scope, async callbacks), not just inside reactive contexts. The cache is shared across reactive and non-reactive subscribers, so awaiting a query in an event handler will dedupe with components that have already subscribed to the same query. ([#15779](https://github.com/sveltejs/kit/pull/15779))\n\n\n-   feat: live query instances are now themselves async-iterable ([#15878](https://github.com/sveltejs/kit/pull/15878))\n\n\n-   feat: add programmatic `submit` method to `form` remote function instances ([#15657](https://github.com/sveltejs/kit/pull/15657))\n\n\n-   feat: pass `form` remote function instance into `enhance` callback ([#15657](https://github.com/sveltejs/kit/pull/15657))\n\n### Patch Changes\n\n-   fix: resolve the app payload without using `process.env.NODE_ENV` ([#15852](https://github.com/sveltejs/kit/pull/15852))\n\n\n-   fix: support `exactOptionalPropertyTypes` for optional route params ([#15825](https://github.com/sveltejs/kit/pull/15825))\n\n\n-   fix: correctly send `true` value to the server for 'submit' and 'hidden' form fields ([#15858](https://github.com/sveltejs/kit/pull/15858))\n\n\n-   fix: avoid build warnings about undefined universal hooks ([#15895](https://github.com/sveltejs/kit/pull/15895))\n\n\n-   fix: prefer default error page when failing to decode the URL pathname ([#15744](https://github.com/sveltejs/kit/pull/15744))\n\n\n-   fix: disable link prefetching on slow internet connections ([#15885](https://github.com/sveltejs/kit/pull/15885))\n\n\n-   fix: allow routes ending with optional parameters next to more specific routes ([#15861](https://github.com/sveltejs/kit/pull/15861))\n\n\n-   fix: remove reliance on Content-Length header in deserialize_binary_form, which caused failures when proxies (e.g. Vercel, Azure) strip the header and use chunked transfer encoding ([#15796](https://github.com/sveltejs/kit/pull/15796))\n","publishedAt":"2026-05-22T21:31:37.000Z","url":"https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%402.61.0","media":[],"prerelease":false,"source":{"slug":"kit","name":"kit","type":"github"},"org":{"slug":"svelte","name":"Svelte"},"product":{"slug":"sveltekit","name":"SvelteKit"},"groupSlug":"sveltekit","groupName":"SvelteKit","coverageCount":0,"composition":null},{"id":"rel_VI-JqM4HAX9eeJJT827UC","version":"v19.0.8","type":"feature","title":"v19.0.8","summary":"v19.0.8\n\n### 🐛 Bug fixes\n\n- [eas-cli] `eas go` now pre-selects the SDK version from the current project's `app.json` or `app.config.js` when availabl...","titleGenerated":null,"titleShort":null,"content":"v19.0.8\n\n### 🐛 Bug fixes\n\n- [eas-cli] `eas go` now pre-selects the SDK version from the current project's `app.json` or `app.config.js` when available. ([#3776](https://github.com/expo/eas-cli/pull/3776) by [@gwdp](https://github.com/gwdp))\n","publishedAt":"2026-05-21T23:19:53.000Z","url":"https://github.com/expo/eas-cli/releases/tag/v19.0.8","media":[],"prerelease":false,"source":{"slug":"eas-cli","name":"EAS CLI","type":"github"},"org":{"slug":"expo","name":"Expo"},"product":null,"groupSlug":"eas-cli","groupName":"EAS CLI","coverageCount":0,"composition":null},{"id":"rel_bnEe1mrIfs2g25uRiSe7t","version":"v19.0.7","type":"feature","title":"v19.0.7","summary":"v19.0.7\n\n\n","titleGenerated":null,"titleShort":null,"content":"v19.0.7\n\n\n","publishedAt":"2026-05-21T21:02:42.000Z","url":"https://github.com/expo/eas-cli/releases/tag/v19.0.7","media":[],"prerelease":false,"source":{"slug":"eas-cli","name":"EAS CLI","type":"github"},"org":{"slug":"expo","name":"Expo"},"product":null,"groupSlug":"eas-cli","groupName":"EAS CLI","coverageCount":0,"composition":null}],"pagination":{"nextCursor":"2026-05-21T21:02:42.000Z|2026-05-22T00:01:24.743Z|rel_bnEe1mrIfs2g25uRiSe7t","limit":20}}