Marvin Hagemeister
marvinh.dev
Marvin Hagemeister
@marvinh.dev
I build simple and fast things. Part of Preact team.
I want to explore making frameworks less "framework-y". I'm curious how far you could go in that direction.

I want simpler things and less to worry about.
November 12, 2025 at 8:32 PM
I'm totally not the target customer for this, but I keep coming back to this site just to marvel at how quickly it loads: www.mcmaster.com

I wish more sites were like that.
November 11, 2025 at 7:58 PM
Reposted by Marvin Hagemeister
Yesterday at TPAC I publicized my draft proposal for adding a declarative templating API to the DOM.

github.com/justinfagnan...

The repo has:

📖 Explainers for the templating API and DOM scheduler API
🏗️ Full prototype implementations
⚗️ a JSX transform
⚛️ a mini React-like framework
github.com
November 10, 2025 at 11:04 PM
We have so many frameworks because we're trying to optimize for ease of development (locality of behavior), but the underlying platform is optimized for delivery.
November 9, 2025 at 11:30 PM
Long overdue! This was super annoying and I could never figure out how to get back to a particular comment on a commit.
❗ Breaking: notifications from @ mentions in commit messages will be removed next month. 👀
https://github.blog/changelog/2025-11-07-removing-notifications-for-mentions-in-commit-messages/
November 8, 2025 at 8:33 PM
Hands down the best SSG and it's rust based. It's ridiculously fast!
Zensical – a modern static site generator.

We're excited to release @zensical.org, our new SSG that is compatible with Material for MkDocs:

– 5x faster rebuilds
– Modern design
– Blazing-fast search

Read the full announcement on our blog:
squidfunk.github.io/mkdocs-mater...

A thread ⬇ 1/7
Zensical - A modern static site generator - Material for MkDocs
We are thrilled to announce Zensical, our next-gen static site generator that addresses and overcomes the technical limitations of MkDocs
squidfunk.github.io
November 6, 2025 at 11:15 AM
Whenever I wrote something clever, it comes back to bite me in the end. Dumb and simple code always wins.
November 3, 2025 at 3:54 PM
Reposted by Marvin Hagemeister
Neat lil learning from today’s @perfnow.nl (via Umar Hansa):

You can now throttle individual requests in Chrome!

Neat for experimenting with stuff like
- lazy-loading: does the UI look okay if this chunk takes MUCH longer to arrive
- resilience: what happens if this specific CDN is extremely slow
October 30, 2025 at 5:29 PM
Reposted by Marvin Hagemeister
The estimated cost of legacy JavaScript = 37,000,000 trees.

@inesakrap.bsky.social at #perfnow
October 30, 2025 at 2:00 PM
Reposted by Marvin Hagemeister
Another source from my #PerfNow talk…

Here’s why you need to know the performance plateau for your site.

www.speedcurve.com/blog/web-per...
SpeedCurve | Why you need to know your site's performance plateau (and how to find it)
Have you ever wondered why your site got faster, but your business and user engagement metrics didn't change? Here's why.
www.speedcurve.com
October 30, 2025 at 9:43 AM
Reposted by Marvin Hagemeister
If you have an interest in understanding garbage collection better, or in how Go's new GC works under-the-hood, I highly recommend reading @michael.express's thorough guide through Go's current and Green Tea GC.
“The Green Tea Garbage Collector” by Michael Knyszek and Austin Clements — https://go.dev/blog/greenteagc

#golang
October 29, 2025 at 7:20 PM
Reposted by Marvin Hagemeister
In the latest version of @rolldown.rs, JSON imports are tree-shaken!

No more superfluous JSON values in your bundle, only these that you actually access. Without any change of code or config ✨

Interested in the code? Then check out the PR! github.com/rolldown/rol...
October 29, 2025 at 2:01 PM
Wrote down some thoughts on the online vs offline tech discourse and building from first principles:

marvinh.dev/blog/buildin...
Building From First Principles
Web presense of Marvin Hagemeister who is a core developer of preactjs
marvinh.dev
October 28, 2025 at 9:43 PM
Hierarchy of performance:

HTML > CSS >>>>>>>> JS
October 28, 2025 at 8:37 PM
Bundling is such an underused feature of server dev. It can easily reduce cold start times by 30-40%.

Maybe it's because most backend deps are still stuck with commonjs.
October 28, 2025 at 11:51 AM
web fragments are a pretty genius take on micro frontends. It's a problem most apps won't have, but for enterprise software with >1000 devs working on the same app this is huge!
I am not around here very often anymore, but we had such a great time with @ryansolid.bsky.social @tannerlinsley.com @igorminar.bsky.social dissecting Web Fragments, I had to come back and share

Curious? Watch!
www.youtube.com/live/sneufVy...
Web Fragments: Micro-Frontends Done Right?
YouTube video by Ryan Carniato
www.youtube.com
October 26, 2025 at 8:05 AM
Reposted by Marvin Hagemeister
A CSS terrain generator. No WebGL, just stacked grids and 3D transforms: terra.layoutit.com
October 22, 2025 at 3:44 PM
Reposted by Marvin Hagemeister
v3 just released 🎉
if ShadCN and Open Props had a baby…

✨ **Open Props UI** ✨

An introduction and overview of this new **copy & paste** UI Library
https://nerdy.dev/open-props-ui

Congrats Felix Bohlin! Lib looks rad 🤘🏻💀
October 22, 2025 at 4:58 PM
Reposted by Marvin Hagemeister
Vitest 4 is out!

- Browser Mode is Stable
- Visual Regression Testing
- Improved Debugging
- Pool Stabilization
- New APIs
- Bug Fixes

Stay updated with our blog post:

vitest.dev/blog/vitest-4
Announcing Vitest 4.0
Vitest 4.0 Release Announcement
vitest.dev
October 22, 2025 at 3:43 PM
I have a lot of respect for developers who don't mind removing their own code when a better solution emerges.

Big kudos for that!
After maintaining Tinypool for over 2 years I'm happy to see next version of Vitest dropping it. I've written some reasoning about this in the linked PR. Even though this change is significant for Vitest, I'm more confident about it than making new changes in Tinypool.
github.com/vitest-dev/v...
feat!: rewrite pools without `tinypool` by AriPerkkio · Pull Request #8705 · vitest-dev/vitest
Description Removes Tinypool and adds new custom internal pool for Vitest only. Some previous thoughts I wrote ~2 months ago about this below. Vitest uses tinypool for orchestrating how test file...
github.com
October 21, 2025 at 6:06 PM
This blog post mirrors my impression of Rust code too. I often need to step through multiple abstractions or macros until you find the code that actually does something.

daymare.net/blogs/everbo...
Everybody's so Creative!
After 4 years with Rust, I love the language – but I’m starting to think the ecosystem has an abstraction addiction. Or: why every Rust crate feels like a research paper on abstraction.
daymare.net
October 19, 2025 at 10:59 AM
Reposted by Marvin Hagemeister
Signals flip the script. React renders where you create state. Signals render where you use state. Same state, but you are pushed into patterns that will lead to better performance by default. One paradigm shift away from memoization hell. 🎯

www.jovidecroock.com/blog/state-v...
State and rerenders
Exploring the paradigm shift from 'render where you create state' to 'render where you use state'.
www.jovidecroock.com
October 18, 2025 at 2:17 PM
Reposted by Marvin Hagemeister
added grouped updates to the preact signals devtools 🎉
thanks to @jovidecroock.com and the team for being open to early contributions 🙏
August 29, 2025 at 10:40 AM
Reposted by Marvin Hagemeister
🎉 Preact 11 beta is here! After years of thoughtful development, we're delivering major improvements with minimal breaking changes. Better hydration, forward refs by default, and performance upgrades - all while maintaining the stability you love about Preact X.
August 22, 2025 at 1:53 PM
I'm so glad that CSS is receiving so much attention in the browser space. It's amazing what you can do without any JS these days!
Thanks @una.im for showing us the future of HTML and CSS in "Back to the future: of web development". We've never been more excited about... not using JavaScript 😅❤️

www.youtube.com/watch?v=BEXe...
October 17, 2025 at 7:53 AM