Mastro.{js,ts}
@mastrojs.bsky.social
The simplest web framework and site generator.
Runs on Deno, Node.js, Bun and in your browser as a VSCode extension.
https://mastrojs.github.io 🧑🍳
#noBuild #noBloat #noMagic
Runs on Deno, Node.js, Bun and in your browser as a VSCode extension.
https://mastrojs.github.io 🧑🍳
#noBuild #noBloat #noMagic
Pinned
Mastro: the simplest web framework and site generator
No bloat, no magic, no config. Mastro gets out of the way, so that you can focus on building awesome websites.
mastrojs.github.io
Besides running on Deno, Node.js, and inside a web browser as a VSCode extension, Mastro now also runs on Bun! 🥳
mastrojs.github.io
mastrojs.github.io
When you start arguing for HTML/CSS, but end up in a buzzword bingo contest instead. Oh well, at least I “won” 🙈
I think it’s more like: 50% of all programs run on the C ABI, the other 50% on JavaScript :P
November 9, 2025 at 12:00 PM
When you start arguing for HTML/CSS, but end up in a buzzword bingo contest instead. Oh well, at least I “won” 🙈
New blog post on how to incrementally migrate from Express.js to the standards-based Request/Response-API
mastrojs.github.io/blog/2025-11...
mastrojs.github.io/blog/2025-11...
Migrating from Express to the standards-based Request/Response-API | Mastro undefined
mastrojs.github.io
November 6, 2025 at 4:20 PM
New blog post on how to incrementally migrate from Express.js to the standards-based Request/Response-API
mastrojs.github.io/blog/2025-11...
mastrojs.github.io/blog/2025-11...
Reposted by Mastro.{js,ts}
✨ One line of CSS. Smooth page transitions. No JavaScript.
```
@view-transition {
navigation: auto;
}
```
The 🆕 CSS View Transitions bring native animations to multi-page apps, no SPA setup needed!
Explore now 👇
developer.mozilla.org/en-US/blog/...
```
@view-transition {
navigation: auto;
}
```
The 🆕 CSS View Transitions bring native animations to multi-page apps, no SPA setup needed!
Explore now 👇
developer.mozilla.org/en-US/blog/...
A beginner-friendly guide to view transitions in CSS | MDN Blog
Learn how to bring smooth, animated navigation to multi-page apps with view transitions. With just one line of CSS, you can enable seamless transitions between pages.
developer.mozilla.org
November 4, 2025 at 9:00 PM
✨ One line of CSS. Smooth page transitions. No JavaScript.
```
@view-transition {
navigation: auto;
}
```
The 🆕 CSS View Transitions bring native animations to multi-page apps, no SPA setup needed!
Explore now 👇
developer.mozilla.org/en-US/blog/...
```
@view-transition {
navigation: auto;
}
```
The 🆕 CSS View Transitions bring native animations to multi-page apps, no SPA setup needed!
Explore now 👇
developer.mozilla.org/en-US/blog/...
Reposted by Mastro.{js,ts}
We Completely Missed width/height: stretch: "stretch does the same thing as declaring 100%, but ignores padding. In short, if you’ve ever wanted 100% to actually mean 100% (when using padding), stretch is what you’re looking for." #CSS css-tricks.com/we-completel...
We Completely Missed width/height: stretch | CSS-Tricks
The TL;DR is that stretch does the same thing as declaring 100%, but ignores padding when looking at the available space.
css-tricks.com
November 4, 2025 at 8:02 PM
We Completely Missed width/height: stretch: "stretch does the same thing as declaring 100%, but ignores padding. In short, if you’ve ever wanted 100% to actually mean 100% (when using padding), stretch is what you’re looking for." #CSS css-tricks.com/we-completel...
I wrote down what I struggled with when porting Mastro to Bun: mastrojs.github.io/blog/2025-10...
I’m sure the #Bun folks will tell me I’m doing it all wrong. Suggestions welcome!
I’m sure the #Bun folks will tell me I’m doing it all wrong. Suggestions welcome!
What I struggled with when porting Mastro to Bun | Mastro undefined
mastrojs.github.io
November 4, 2025 at 5:26 PM
I wrote down what I struggled with when porting Mastro to Bun: mastrojs.github.io/blog/2025-10...
I’m sure the #Bun folks will tell me I’m doing it all wrong. Suggestions welcome!
I’m sure the #Bun folks will tell me I’m doing it all wrong. Suggestions welcome!
Besides running on Deno, Node.js, and inside a web browser as a VSCode extension, Mastro now also runs on Bun! 🥳
mastrojs.github.io
mastrojs.github.io
Mastro: the simplest web framework and site generator
No bloat, no magic, no config. Mastro gets out of the way, so that you can focus on building awesome websites.
mastrojs.github.io
October 30, 2025 at 1:18 PM
Besides running on Deno, Node.js, and inside a web browser as a VSCode extension, Mastro now also runs on Bun! 🥳
mastrojs.github.io
mastrojs.github.io
Reposted by Mastro.{js,ts}
In case you missed it, I wrote about the basics CSS Anchor Positioning.
🔗 ishadeed.com/article/anch...
🔗 ishadeed.com/article/anch...
August 29, 2025 at 1:48 PM
In case you missed it, I wrote about the basics CSS Anchor Positioning.
🔗 ishadeed.com/article/anch...
🔗 ishadeed.com/article/anch...
I wrote down "what I learned porting Mastro from Deno to Node.js" Hope my learnings help somebody on their next server-side JS/TS project!
mastrojs.github.io/blog/2025-10...
mastrojs.github.io/blog/2025-10...
What I learned porting Mastro from Deno to Node.js | Mastro
mastrojs.github.io
October 27, 2025 at 1:33 PM
I wrote down "what I learned porting Mastro from Deno to Node.js" Hope my learnings help somebody on their next server-side JS/TS project!
mastrojs.github.io/blog/2025-10...
mastrojs.github.io/blog/2025-10...
One month ago I submitted this to Interop. Unfortunately was not selected for this year. But probably also due to the noise that made, at least web devs are now being made aware of this huge Safari bug: top-level await is no longer considered 'baseline' caniuse.com/mdn-javascri...
I made a submission to #Interop 2026 – the WebKit bug that results in a race condition with multiple top-level awaits in different modules: github.com/web-platform...
We’ve talked about this one on here @rich-harris.dev and @jensimmons.bsky.social
Let me know if I should add anything else?
We’ve talked about this one on here @rich-harris.dev and @jensimmons.bsky.social
Let me know if I should add anything else?
ESM Module Loading: Cyclic Module Records / multiple top-level awaits in different modules · Issue #1105 · web-platform-tests/interop
Description While officially supporting ESM modules, even with top-level await, WebKit doesn't actually implement the module loader spec. This leads to a race condition, where one or more modules f...
github.com
October 27, 2025 at 7:03 AM
One month ago I submitted this to Interop. Unfortunately was not selected for this year. But probably also due to the noise that made, at least web devs are now being made aware of this huge Safari bug: top-level await is no longer considered 'baseline' caniuse.com/mdn-javascri...
Mastro now runs on Node.js 🎉🍾
Deno makes your life still a bit easier, but I can appreciate that people like Node’s commitment to stability. And it’s catching up: can run TypeScript natively now, has a builtin --watch flag and test runner, etc.
Share if you care! mastrojs.github.io
Deno makes your life still a bit easier, but I can appreciate that people like Node’s commitment to stability. And it’s catching up: can run TypeScript natively now, has a builtin --watch flag and test runner, etc.
Share if you care! mastrojs.github.io
Mastro: the simplest web framework and site generator
No bloat, no magic, no config. Mastro gets out of the way, so that you can focus on building awesome websites.
mastrojs.github.io
October 23, 2025 at 6:45 PM
Mastro now runs on Node.js 🎉🍾
Deno makes your life still a bit easier, but I can appreciate that people like Node’s commitment to stability. And it’s catching up: can run TypeScript natively now, has a builtin --watch flag and test runner, etc.
Share if you care! mastrojs.github.io
Deno makes your life still a bit easier, but I can appreciate that people like Node’s commitment to stability. And it’s catching up: can run TypeScript natively now, has a builtin --watch flag and test runner, etc.
Share if you care! mastrojs.github.io
Reposted by Mastro.{js,ts}
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...
www.youtube.com/watch?v=BEXe...
October 16, 2025 at 8:10 AM
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...
www.youtube.com/watch?v=BEXe...
Mastro (currently Deno and browser only web framework) is coming to Node.js!
Just not sure whether via JSR (and they recommend pnpm), or via old NPM. Thoughts?
Just not sure whether via JSR (and they recommend pnpm), or via old NPM. Thoughts?
October 16, 2025 at 4:44 AM
Mastro (currently Deno and browser only web framework) is coming to Node.js!
Just not sure whether via JSR (and they recommend pnpm), or via old NPM. Thoughts?
Just not sure whether via JSR (and they recommend pnpm), or via old NPM. Thoughts?
With all the excitement of view transitions coming to Firefox (which is great!), just be aware that cross-document view transitions for MPAs are “level 2” and thus only in Chrome and Safari so far. But I’m sure it won’t be long, and it’s just a progressive enhancement. No reason to not add it now!
October 15, 2025 at 7:17 PM
With all the excitement of view transitions coming to Firefox (which is great!), just be aware that cross-document view transitions for MPAs are “level 2” and thus only in Chrome and Safari so far. But I’m sure it won’t be long, and it’s just a progressive enhancement. No reason to not add it now!
Reposted by Mastro.{js,ts}
Journal: Simplify
Reminding myself just how much you can do with CSS these days.
🔗https://adactio.com/journal/22178
Reminding myself just how much you can do with CSS these days.
🔗https://adactio.com/journal/22178
October 9, 2025 at 10:21 AM
Journal: Simplify
Reminding myself just how much you can do with CSS these days.
🔗https://adactio.com/journal/22178
Reminding myself just how much you can do with CSS these days.
🔗https://adactio.com/journal/22178
“They called me just after midnight. Said they’d found another one. A website that used to be fast, lean, full of life, now lying cold on the server room floor.”
I’ve been investigating dead websites for years.
Same symptoms every time - bloated code, missing structure, too many dependencies and not enough care.
It’s not murder. It’s neglect.
And it’s everywhere.
www.jonoalderson.com/misc/the-dea...
Same symptoms every time - bloated code, missing structure, too many dependencies and not enough care.
It’s not murder. It’s neglect.
And it’s everywhere.
www.jonoalderson.com/misc/the-dea...
The death of a website
The call came in after midnight. Another site down. Same pattern. Same rot. Somebody’s killing the web, and nobody’s talking.
www.jonoalderson.com
October 9, 2025 at 6:39 AM
“They called me just after midnight. Said they’d found another one. A website that used to be fast, lean, full of life, now lying cold on the server room floor.”
Reposted by Mastro.{js,ts}
SVGOMG has been updated to use SVGO 4! (thanks Adrien Crivelli!)
This is the URL for SVGOMG. Unfortunately someone maintains a fork with ads, so, err, don't use that 😀
jakearchibald.github.io/svgomg/
This is the URL for SVGOMG. Unfortunately someone maintains a fork with ads, so, err, don't use that 😀
jakearchibald.github.io/svgomg/
SVGOMG - SVGO's Missing GUI for minifying SVGs
Easy & visual compression of SVG images.
jakearchibald.github.io
September 29, 2025 at 8:37 AM
SVGOMG has been updated to use SVGO 4! (thanks Adrien Crivelli!)
This is the URL for SVGOMG. Unfortunately someone maintains a fork with ads, so, err, don't use that 😀
jakearchibald.github.io/svgomg/
This is the URL for SVGOMG. Unfortunately someone maintains a fork with ads, so, err, don't use that 😀
jakearchibald.github.io/svgomg/
I made a submission to #Interop 2026 – the WebKit bug that results in a race condition with multiple top-level awaits in different modules: github.com/web-platform...
We’ve talked about this one on here @rich-harris.dev and @jensimmons.bsky.social
Let me know if I should add anything else?
We’ve talked about this one on here @rich-harris.dev and @jensimmons.bsky.social
Let me know if I should add anything else?
ESM Module Loading: Cyclic Module Records / multiple top-level awaits in different modules · Issue #1105 · web-platform-tests/interop
Description While officially supporting ESM modules, even with top-level await, WebKit doesn't actually implement the module loader spec. This leads to a race condition, where one or more modules f...
github.com
September 20, 2025 at 8:16 AM
I made a submission to #Interop 2026 – the WebKit bug that results in a race condition with multiple top-level awaits in different modules: github.com/web-platform...
We’ve talked about this one on here @rich-harris.dev and @jensimmons.bsky.social
Let me know if I should add anything else?
We’ve talked about this one on here @rich-harris.dev and @jensimmons.bsky.social
Let me know if I should add anything else?
New chapter is up, showing how you can precompute assets and HTML pages in a unified way. (spoiler: it’s just like static site generation, but for only a subset of routes) #WebDev
mastrojs.github.io/guide/bundli...
mastrojs.github.io/guide/bundli...
Bundling, pregenerating assets and caching | Mastro
mastrojs.github.io
September 17, 2025 at 6:26 PM
New chapter is up, showing how you can precompute assets and HTML pages in a unified way. (spoiler: it’s just like static site generation, but for only a subset of routes) #WebDev
mastrojs.github.io/guide/bundli...
mastrojs.github.io/guide/bundli...
Reposted by Mastro.{js,ts}
Why are you shipping 3MB of JavaScript to animate a link?
Modern CSS now handles seamless page transitions - natively.
No routing hacks. No hydration tax. No excuse.
Modern CSS now handles seamless page transitions - natively.
No routing hacks. No hydration tax. No excuse.
It's time for modern CSS to kill the SPA
Native CSS transitions have quietly killed the strongest argument for client-side routing. Yet people keep building terrible apps instead of performant websites.
www.jonoalderson.com
July 24, 2025 at 9:23 PM
Why are you shipping 3MB of JavaScript to animate a link?
Modern CSS now handles seamless page transitions - natively.
No routing hacks. No hydration tax. No excuse.
Modern CSS now handles seamless page transitions - natively.
No routing hacks. No hydration tax. No excuse.
Reposted by Mastro.{js,ts}
Forget SPAs, choose MPAs. We interview @mb21.bsky.social, the creator of @mastrojs.bsky.social, a modern JavaScript meta-framework designed to build multipage apps (MPAs).
By @lorainelawson.bsky.social
By @lorainelawson.bsky.social
Minimalist Mastro Framework Offers Modern Take on MPAs
Forget SPAs, choose MPAs. We interview the creator of Mastro, a modern JavaScript meta-framework designed to build multipage apps (MPAs).
bit.ly
August 24, 2025 at 6:00 PM
Forget SPAs, choose MPAs. We interview @mb21.bsky.social, the creator of @mastrojs.bsky.social, a modern JavaScript meta-framework designed to build multipage apps (MPAs).
By @lorainelawson.bsky.social
By @lorainelawson.bsky.social
Reposted by Mastro.{js,ts}
The Astro-based Starlight framework was already very good. But by moving the docs to Mastro itself, I could declutter things even further.
July 24, 2025 at 7:13 PM
The Astro-based Starlight framework was already very good. But by moving the docs to Mastro itself, I could declutter things even further.