What If We Just... Didn't?

There's a particular kind of exhaustion that every web developer knows. It's not the satisfying fatigue that comes after shipping a beautiful new feature. It's a deeper, more corrosive weariness. It's the exhaustion that comes from spending your day not solving a user's problem, but fighting a war of attrition against your own tools.


It’s the feeling of building scaffolding for scaffolding, of creating complexity to manage complexity, until the original purpose is a distant memory.
For us, that feeling boiled over on a Tuesday night earlier this week.
The three of us were on a video call, the kind that happens long after dinner, illuminated only by the glow of our monitors. The mood was bleak. This wasn't a creative brainstorming session; it was a support group.


One of us was lost in the digital weeds, trying to exorcise a ghost in the machine. A piece of data, a simple status update, was refusing to die. It would appear correctly, then revert, then vanish, only to reappear moments later, stale and incorrect. It was a phantom state, a quantum paradox living in the browser's cache, and it was single-handedly blocking a critical feature launch. The code said one thing, the database another, and the UI was a liar.


Another was describing their descent into a digital labyrinth of our own making. To add a single, simple field to a user's profile, they had to navigate a towering cathedral of abstraction. A change in the client-side type definitions, a modification to the query, a journey through an API gateway that federated three different microservices, each with its own deployment pipeline. What should have been a ten-minute task had become a multi-day expedition through layers of indirection.


Then, in a moment of shared despair, the third shared their screen. On one side was a simple button. On the other, the browser's performance profiler. They clicked the button. A cascade of yellow and purple bars flooded the timeline, a frantic, chaotic waterfall of activity. A single component, a tiny piece of the UI, was re-rendering over fifty times.


Fifty. Times. From one click.


We had all accepted this reality. This was the price of admission for building modern, interactive applications. We’d spent years configuring bundlers, writing boilerplate to connect state managers to APIs, and chasing down elusive race conditions between the client and the server. We treated the network as a chasm that had to be bridged with elaborate, fragile rope bridges of REST, GraphQL, and RPCs. This was just the way things were done.


But seeing that fifty-times-re-rendering component on that particular Tuesday, something snapped. The sheer absurdity of it broke the spell.
In the silence that followed, one of us asked the question that would change everything: "What if we just... didn't?"


"What if we didn't have a client-side state to synchronize? What if there were no REST endpoints, no GraphQL resolvers, no queries to write? What if the UI was just a direct, real-time reflection of the server's memory? What if we could just write the code that solved the user's problem and be done with it?"


The question hung in the air. It sounded preposterous. An idealistic fantasy. But in our state of collective burnout, it also felt like a lifeline.


This past weekend, fuelled by a mix of frustration and obsessive curiosity, our resident systems architect decided to find out just how naive the idea was. The goal wasn't to build a framework or a product, but to conduct a single experiment: could it even work?


What they came back with this morning was ugly, crude, and utterly magical.
It was a simple Deno server holding a single JavaScript object in memory. A few lines of vanilla JavaScript on the client opened a WebSocket and did nothing else. It just listened.

When a value in the server's object was changed, the server didn't send a new blob of JSON. It didn't fire off a "refetch" event. It sent a tiny, surgical binary instruction down the wire: "Find DOM node with ID #24 and change its text content to 'Completed'." Or "Find element with ID #52 and add the 'disabled' attribute."


We hooked it up to a simple todo list application. In one browser window, we clicked a checkbox. On the server, a boolean value flipped from false to true. And in a second browser window, open on a completely different computer, the corresponding text instantly struck itself out.


There was no loading spinner. No page flash. No virtual DOM diffing algorithm churning away. The connection didn't feel like a postal service, dutifully carrying messages back and forth. It felt like a nervous system. It was just... instant.


Right now, it's little more than a proof-of-concept. A digital napkin sketch. But the feeling it gave us—that sense of directness and immediacy—is too compelling to ignore. We've decided to chase this idea and see if we can build it into something real. We're starting this journal to document the process, with the hope that our notes from the journey might be useful to others who feel the same way.


Maybe it will go nowhere. But after that Tuesday night, we have to try. Because it shouldn't have to be this hard.