โ€ข

newsletter

Waiting for a breakthrough: Client, server, and local-first

A big wave of new standards and frameworks is coming, both client and server. But right now we are stuck in the middle. This is how things will change.


Sandro Maglione

Sandro Maglione

Software development

We are in the middle of an interlude. Here and there, major projects are cooking behind the scenes, each with promises of big improvements.

Yet, right now we are stuck in the middle.

Here is some of the projects I am following:

  • React 19 (stable)
  • TanStack Start
  • React Router v7
  • Vite v6
  • Effect cluster
  • Main-stream local first

Let's take a closer look at this situation ๐Ÿ‘‡


When client is not enough (anymore)

Vite is great. Seriously. The experience is fast and smooth, the project always improving.

Yet, Vite alone is not enough. The other major piece of the puzzle is routing. And routing is complex.

Ideally, a framework would provide a seamless experience on top of Vite, while at the same time offering a complete solution for routing (navigation, SEO, code splitting).

Guess what? Things are cooking. Two projects I am following:

They both build on top of Vite, they both offer all the features you expect from a modern router. And they both are work in progress ๐Ÿ—๏ธ

Meanwhile, Vite v6 is currently in beta and soon to be released.

Tension between client and server

The other piece of the puzzle dwells on the server. With the promise of React 19 stable soon, frontend is not just about the client anymore.

Features like server components and new hooks like use and useActionState are bound to become the standard. Frameworks will be expected to support these features.

This adds a new layer of complexity, especially when it comes to configuration, builds, and deployments.

Sprinkle some Rust in the mix

Tooling for javascript is moving in the Rust direction. Recently with the release of Rspack v1 and now also Rsbuild v1.

Also Vite is slowly moving in this direction. Rolldown is the successor of Rollup, written in Rust, and (quoting from the website) "Designed for Vite".

You may not be into implementing frontend tools, but it's not improbable that learning Rust may become necessary, if only to understand how your configuration works ๐Ÿคจ

The next Effect breakthrough is called cluster

On a more backend-side, Effect cluster is currently in full development. We are talking about things like durable workflows here (I will probably write about the details in the future).

That's complex territory here. The effect team is sharing the details behind how cluster works in a series of live streams.

Take a look if you are curious ๐Ÿ‘€

How is local first evolving?

I have been exploring the practice of local first lately. Also here we are in the middle of a big shift. But not yet there ๐Ÿค”

There are a lot of moving parts:

All these pieces are tightly interconnected.

The API works on local storage, but the data structure should keep track of changes (CRDTs) and also allow for server-side syncing.

Many libraries out there, each proposing a solution for one of these problems, but it's still a struggle to picture all together and build a complete app.

This is coming, not sure how far ahead ๐Ÿค”


In this situation, starting a new project right now may be a hazard. A major shift is coming, not sure how soon. Starting something now may leave you stuck behind when this new wave hits.

Definitely keep an eye open ๐Ÿ‘€


XState course is released ๐Ÿš€

XState is a safe-bet during this interlude: it's stable and here to stay ๐Ÿ’ฏ

Meanwhile, I updated my personal website to focus on a more broad variety of topics.

Expect all my tech content to be available on Typeonce (new courses, projects, articles, snippets).

See you next ๐Ÿ‘‹

Start here.

Timeless coding principles, practices, and tools that make a difference, regardless of your language or framework, delivered in your inbox every week.