DotJs 2025: Rediscovering JavaScript's Future
After a five-year hiatus, the dotJS Conference made a triumphant return at the iconic Folies Bergère in Paris. Marmelab had the pleasure of attending the event and we were thrilled to be back. From the stunning venue to the captivating talks and valuable networking opportunities, the conference exceeded our expectations.
Here's our review of the event's talks, listed in order of preference:
- Lea Verou: API Design Is UI Design
- Malte Ubl: Generative UI: Bring your React Components to AI today!
- James Quick: Dante's Inferno of Full-stack Development
- David Flanagan: The Future of Serverless
- Ben Lesh: Thinking About Your Code: Push vs Pull
- Stoyan Stefanov - Your app crashes my browser (Quick Talk)
- Minko Gechev: Converging Web Frameworks
- Eleanor McHugh - Encrypt All Transports (Quick Talk)
- Bassel Ghandour - Adding Undo/Redo to Complex Web Apps (Quick Talk)
- Ben Halpern: Multi-Armed Bandit
- Mark Dalgleish: Remixing the Bundler
- Alex Moulinneuf: Mario Kart 3.js (Quick Talk)
- Jessica Sachs: What To Test In Your Web App
- Maud Nalpas - Our future without passwords (Quick Talk)
Lea Verou: API Design Is UI Design
YouTube might track you and we would rather have your consent before loading this video.
How do you design the API of a function, a class, or a library? In Lea opinion, you should follow the same process for DX (Developer Experience) as for other US (User Experience). This resonated a lot with us, as we are the authors of a popular React library, React-admin, and we think about API design all the time.
Here's a famous quote that every developer should keep in mind:
Simple things should be easy, complex things should be possible. Alan Kay
Lea started with a badly designed API: the SVG DOM API. It turns out that displaying the radius value of a circle is surprisingly difficult. Then, she shared some great tips to design a good API, including:
- Reveal complexity progressively
- Expose orthogonal controls for orthogonal concepts
- Optimize for the most common use cases
- Encapsulate complexity
- Remove boilerplate
- User testing works for APIs too
- It's not the user's fault
- Dogfood the hell out of it
- Hone your empathy
This talk is a must-watch for any developer collaborating with other developers.
Malte Ubl: Generative UI: Bring your React Components to AI today!
YouTube might track you and we would rather have your consent before loading this video.
In a jaw-dropping demo, Malte, CTO at Vercel, built a chatbot with a rich UI that goes way beyond the usual text-based chatbots. Check out the AI SDK 3.0 announcement for a glimpse of what's possible.
The API of the SDK is super smart, and leverages generators to stream React components as a response to an LLM function call. The resulting UI improves readability and reduces hallucinations (but only works in a finite problem space).
Malte thinks that AI will change software. LLMs are becoming the new backend. But we need to go beyond text interfaces. Frontend is evolving and has become the main source of product differentiation.
AI is a disruption, but we, developers, are still relevant.
What an inspiring talk!
James Quick: Dante's Inferno of Full-stack Development
YouTube might track you and we would rather have your consent before loading this video.
Do you find full-stack web development overwhelming? During his presentation, James listed the various rendering modes of the web platform. From Server-Side Rendering to Server Components, via Single-Page Apps and Incremental Static Generation, James showed how each new rendering model fixes new issues, but adds complexity, and has diminishing returns.
The last "circle of hell" is Server Components / Islands, currently used by React, Next.js, Remix, Redwood, and Astro. It may look a lot like good old Server-Side Rendering, but it's not. This new model capitalizes on the best of both worlds: the speed of Server-Side Rendering and the interactivity of Single-Page Apps.
We keep circling back to existing principles, but we continue to climb, which is a good thing.
This talk gave us many compelling points to counter our PHP colleagues' argument that JavaScript is reinventing the wheel!
David Flanagan: The Future of Serverless
YouTube might track you and we would rather have your consent before loading this video.
David presented Spin, an HTTP framework based on WebAssembly and WASI (WebAssembly on the server). The promise is simple: to be several orders of magnitude faster than containers when replying to a request.
WebAssembly is sandboxed, secure, portable, and fast. It's the ideal alternative to Docker. For instance, you can compile Drupal to WebAssembly and run it entirely in a browser!
Spin builds up on WebAssembly and lets you write HTTP servers in any language (including TypeScript). You can compile a Remix app into WebAssembly and run it in Spin. The Spin platform supports triggers, crons, relational databases and key/value stores. And it's extensible.
Spin is based on the WASI spec, which is only at version 0.2. Mozilla was the leader of the WASM effort and quit the project 2 years ago. But a new collective of developers, sponsored by the likes of Etsy and Akamai, are working again on WASI and WASM. So Spin is early-stage and not yet ready for production.
but it's a giant leap in the right direction. We've added Spin to our watch list, and we'll probably take Spin for a spin it in the near future.
Ben Lesh: Thinking About Your Code: Push vs Pull
YouTube might track you and we would rather have your consent before loading this video.
The first talk of the day featured Ben, the creator of RxJS, explaining the principles of push/producer and pull/consumer in code. These concepts are very important in async programming, and misunderstanding them can lead to backpressure problems.
Ben associated familiar development concepts with these two principles:
- Pull: functions and iterables
- Push: callbacks, promises, and observables
- Pull then Push: asyncIterable and async functions
- Push then Pull: signals
According to Ben, React is push-based, while RxJS and signals are pull-based. This may translate to a difference in performance, as push-based systems can be more efficient.
This super technical talk was a great way to start the day. Ben definitely knows a lot about async programming, and putting words on these concepts is the first step to understanding them. We'll need to watch it again to let it sink in.
Stoyan Stefanov - Your app crashes my browser (Quick Talk)
YouTube might track you and we would rather have your consent before loading this video.
In five minutes, Stoyan Stefanov introduced many tools and techniques to detect and fix memory leaks in your web applications.
It was enough to make us want to test:
We've dug deep into memory leaks in JavaScript in the past (see our article on the subject), and we're glad to see that the tools have evolved since then.
Minko Gechev: Converging Web Frameworks
YouTube might track you and we would rather have your consent before loading this video.
Minko is the Angular project lead. The main takeaway of his talk is aptly summarized by this quote:
“When you need to pick a framework, don’t overthink, they are all the same with different facades.”
So whatever framework you choose, you will be in a good place. Just pick the one you enjoy the most, that favors stability and reliability, and with a large enough community to support you.
But if you want to understand the differences between React, Angular, Svelte, Vue, and Wiz (an internal Google framework), Minko has a few tips:
- For B2C applications, lower-latency frameworks are better, and signals are a good choice. They are now available in Angular.
- The Signals implementation used by Angular is also used in Wiz, currently powering the YouTube UI. So it's fast and robust.
- Angular has dependency injection, and React has context. They serve the same purpose with a different developer experience.
Today, web frameworks collaborate on standards, and look for convergence. But they must all keep the compatibility with the existing codebase. So the convergence will take time.
There are many open challenges in JavaScript frameworks (event replay, fine-grained file loading, etc.), so the frameworks will continue to evolve.
It was a privilege to get a glimpse at the challenges of the JS framework maintainers. And we're glad that they are working together to make our lives easier.
Eleanor McHugh - Encrypt All Transports (Quick Talk)
YouTube might track you and we would rather have your consent before loading this video.
What a strange talk! Eleanor talked about the importance of privacy while playing a YouTube video about hardcore networking & cryptography in JavaScript. To learn anything technical from this presentation, we'll have to spend at least a day reading the associated slides.
But the arguments about the importance of privacy were crystal clear and well-presented. Gentle reminder: There is no privacy unless we build it from the beginning.
You won't lose your time by watching this talk, and it may even open your eyes.
Bassel Ghandour - Adding Undo/Redo to Complex Web Apps (Quick Talk)
YouTube might track you and we would rather have your consent before loading this video.
In a very practical talk, Bassel explained how to implement an undo/redo feature in a web application. The solution isn't straightforward, but it's effective:
- capture actions
- map opposite actions
- encapsulate sequences
- add commands to apply undo/redo
If you ever want to add this feature to your app, this talk is a must-watch.
Ben Halpern: Multi-Armed Bandit
YouTube might track you and we would rather have your consent before loading this video.
The Multi-Armed Bandit algorithm is a lesser known technique to make data-informed decisions. Ben showed us how controlled randomness, when data is lacking or unusable, can be a great help.
This algorithm can be useful in A/B testing, in reinforcement learning, and wherever variants are cheap to test.
This is another super technical talk that is worth rewatching, as Ben went a bit fast on the details.
Mark Dalgleish: Remixing the Bundler
YouTube might track you and we would rather have your consent before loading this video.
Mark is a member of the Remix core team. He explained the reasons that led the team to officially merge Remix and React-router. This talk was interesting to know the history of Remix and the reasons behind the choices made by the team. Yet, we were a bit disappointed that it didn't contain any useful tip for us Remix users.
The main takeaway is that Vite is doing a lot, and it's becoming a platform for frameworks. Like Remix, many libraries could simply be Vite plugins.
“Remix is just React-router with a Vite plugin.”
Also, a scoop: they are working on integrating React Server Components in Remix, although it'll have to wait for Vite v6.
Alex Moulinneuf: Mario Kart 3.js (Quick Talk)
YouTube might track you and we would rather have your consent before loading this video.
Cocorico, Alex is French. You have probably come across him on Twitter. His project to recreate Mario Kart in the browser has created quite a buzz.
Through his public build experience, Alex advocates for the public sharing of ideas, progress, and vision of a product. Marmelab, being very active in open source, can only agree with this view.
Jessica Sachs: What To Test In Your Web App
YouTube might track you and we would rather have your consent before loading this video.
Have you ever wondered how people tested their applications 25 years ago? Jessica did, and through a timeline, she traced the evolution of test runners up to today.
From Selenium, JS Test Driver, Testacular (yes, you read that right) to Vitest, the talk ended with a question: How will we test AI?
Not many takeaways, but a good reminder of how far we've come in testing, and that all tooling is about velocity.
Maud Nalpas - Our future without passwords (Quick Talk)
YouTube might track you and we would rather have your consent before loading this video.
Passkeys are a safer replacement for passwords. A developer advocate at Google, Maud introduced this new standard in a general talk that didn't feature any code.
It can be a good starting point for those who want to know more about the subject.
Special Thanks to Amélie Benoit
We would like to thank Amélie Benoit for her amazing sketchnotes at the dotJS conference. Her work captured the key points beautifully and made the event even more memorable.
If you don't have time to watch the talks, reading the following sketchnotes will give you a good overview of the content:
Conclusion
This dotJS conference was a pleasure. Interesting talks, great venue, the joy of returning to offline events, and let's not forget the networking!
For sure, we'll meet again at dotJS 2025.