releases.shpreview
Home/Collections/Frontend Frameworks

Frontend Frameworks

The frameworks behind modern web UIs — full-stack React to fine-grained reactivity.

ThuJun 4, 20263 releases
Sveltesvelte@5.56.2
SvelteKit@sveltejs/kit@2.63.0

Code is Cheap(er)

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.

At times, when confronted with this admittedly uncomfortable fact, I have seen people I respect say something like “coding was never the problem.”

While I appreciate the sentiment, I don’t completely agree with that: certainly coding was at least part of the problem.

And that part of the problem has shrunk significantly with the advent of effective AI coding tools.

So 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?

Understanding is Expensive(er)

One 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.

In as much as understanding that code needs to exist, it has to be done after the code is written, by reading the code.

Note that conventional wisdom is that reading someone else’s code is harder than writing your own code.

Some AI enthusiasts say “Who cares, you don’t understand the output of compilers.”

I think that is a category error for multiple reasons:

  • Compilers are deterministic; LLMs are, by design, not
  • Compiler workflows retain their original source code; LLM workflows typically do not
  • Compiler output is to a narrowly constrained domain (machine code); LLM output is not (generalized software)

I 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.

And 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.

(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.)

The Sorcerer’s Apprentice Trap

One 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 from Disney’s movie Fantasia.

In 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.

The chaos is resolved when the Sorcerer reappears and asserts control over the situation, glaring at the apprentice for his foolishness.

This seems like an apt metaphor for the AI era: you want to be a sorcerer and not an apprentice.

And a sorcerer has to understand the code.

Complexity: Still Bad

Humans, generally, have a poor grasp of geometric and exponential curves.

(This is why they believe in fairy tales such as compound interest.)

The core danger of code being cheap is complexity, which I assert, without proof, tends to grow at least geometrically and often exponentially with the size of a system.

Before LLMs there were prolific human coders.

Perhaps you have worked with one: they can write a lot of code.

I 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.

LLMs are incapable of fear of complexity, and are prolific coders.

Seems dangerous to me.

The Subtractive, Constraining Engineer

To address this danger of LLM-generated code, I propose the subtractive, constraining engineer:

This engineer says no, closely examines LLM output, suggests simplifications and generally retains a firm hand when dealing with LLM-generated code.

Rather than priding themselves on the code they create, they pride themselves on the code (and layers) they remove from or prevent from entering systems.

This ethos is more sculptor and less builder.

Where 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.

The 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.

But, 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.

Read post
TueJun 2, 20264 releases
MonJun 1, 20264 releases

What’s new in Svelte: June 2026

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.

Keep 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.

Let's dive in!

What's new in SvelteKit

  • Form submit now returns a boolean to indicate submission validity for enhanced remote forms (2.57.0, Docs, #15530)
  • Breaking: requested(...) now requires limit and yields { arg, query } entries instead of returning the validated argument directly (2.58.0, Docs, #15739)
  • requested(...) now supports query.batch(...), which makes batch remote query workflows easier to inspect in request-time logic (2.59.0, Docs, #15751)
  • submit and hidden remote form fields can now accept booleans and numbers directly (2.60.0, Docs, #15802)
  • SvelteKit now warns when remote form validation issues are never read, helping catch missed UX paths earlier (2.60.0, Docs, #15653)
  • Breaking: .run() was removed from remote queries - use await query() directly in all contexts instead (2.61.0, Docs, #15779)
  • 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, #15779)
  • 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, #15878)
  • 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, #15657)

For all the features and bugfixes that landed this month, check out the SvelteKit / Adapter CHANGELOGs.

What's new in Svelte and the Svelte ecosystem

  • Templates now allow declarations directly in markup, making it easier to define values close to where they're used (svelte@5.56.0, #18282)
  • 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, #2985 / #675)
  • Svelte MCP's stdio mode can now read file content directly, reducing round trips in local tool workflows (mcp@0.1.23, Docs, #198)
  • vite-plugin-svelte now enables the optimizer for server environments during development (vite-plugin-svelte@7.1.0, #1328)

Want to dive deep into everything new this month? Check out the language-tools, ai-tools and vite-plugin-svelte releases.

For all the minor changes and bugfixes that came out in the Svelte compiler this month, you can read the full Svelte CHANGELOG.


Community Showcase

Apps & Sites built with Svelte
  • asciidia.com is an ASCII-style browser game experiment built with Svelte
  • Bingewatcher.org is a daily movie guessing game based on data from Wikipedia and word vectors for 157 languages
  • Delcard is an open source peer-to-peer card game platform built with SvelteKit (GitHub)
  • Dialyma is an open source canvas builder that can export production-ready code (GitHub)
  • Exort is a local workspace for writing microcontroller code, compiling and uploading projects, and monitoring live serial output on supported boards (GitHub)
  • Heavy Duty Inc is a turn-based tactics game built with Svelte (Reddit)
  • hope-art.app applies protection filters to artwork images before sharing them online to prevent unauthorized AI training and style mimicry (GitHub)
  • Image Palette Studio turns images into UI themes with generated CSS variables (GitHub)
  • Pad is a local-first collaboration tool that combines a Go CLI with an embedded Svelte web app for human-agent workflows (GitHub)
  • Serverwat.ch is a SvelteKit dashboard for monitoring Hetzner-hosted projects
  • Trezur is a privacy-preserving browser-side 2FA authenticator with PWA support and cloud sync (GitHub)
  • Splitwave is a free node-based audio router for macOS built with Tauri + Svelte (GitHub)
  • Tank Supremo is a multiplayer 3D tank game built with Svelte
  • Vivix is a JavaScript execution visualizer that uses a worker-based interpreter for smooth timeline scrubbing (GitHub)
  • Zenos is a stealth startup from SvelteKit maintainer Ben McCann that is bringing software productivity to the physical world.
Learning Resources

This Week in Svelte

  • Ep. 140 - Changelog, Imperative interfaces
  • Ep. 141 - Changelog
  • Ep. 142 - Changelog

To Read

Libraries, Tools & Components

UI Components and Visual Effects

App Building and Product Tooling

Developer Tools and Utilities

Plugins and Runtime Integrations

That's it for this month! Let us know if we missed anything on Reddit or Discord.

Until next time 👋🏼!

Read post
Sveltesvelte@5.56.1
FriMay 29, 20262 releases
Sveltesvelte@5.56.0
EAS CLIv20.0.0
WedMay 27, 20261 release
Sveltesvelte@5.55.10
TueMay 26, 20261 release

The Expo MCP Server is now available on the Free plan

Connect your AI coding assistant to your Expo project from any Expo plan.

The Expo MCP Server is now available on the Free plan, with monthly MCP usage included for Free accounts.

When 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.

What you can do with Expo MCP

MCP (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; this update makes that workflow available to anyone with an Expo account.

Developers are already using Expo MCP for a few common workflows:

  • Finding the right Expo answer faster. Your assistant can pull in official Expo documentation and SDK guidance while you are editing code.
  • Debugging builds and workflows. It can inspect EAS build status, workflow runs, logs, failures, and related TestFlight crashes or feedback.
  • 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.

Included Free-plan usage

Free accounts include monthly MCP usage intended to cover individual development, evaluation, prototypes, and occasional Expo-specific assistant help.

Usage 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.

For heavier MCP usage, paid plans include higher usage limits and may include access to newer MCP capabilities before they are broadly available.

Get started and feedback

Follow the MCP docs to connect your AI coding assistant to Expo. MCP gives your agent access to Expo tools and project context; Expo Skills give it Expo-specific instructions for building, deploying, and debugging apps.

We'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 or on X.

Read post
The Expo MCP Server is now available on the Free plan
MonMay 25, 20261 release
EAS CLIv19.1.0
SunMay 24, 20261 release
SvelteKit@sveltejs/kit@2.61.1
FriMay 22, 20261 release
SvelteKit@sveltejs/kit@2.61.0
ThuMay 21, 20262 releases