Sign in

Mauro

@mb21.bsky.social
109 followers 95 following 528 posts

Hacking on @mastrojs.bsky.social – a no dependencies, #nobuild step web framework and site generator for people who care about their users and web standards. maurobieg.com 
github.com/mb21 Zurich, Switzerland

PostsRepliesMedia
Mauro @mb21.bsky.social · 02/09/2026
Finally got around to moving my personal website from Jekyll to @mastrojs.bsky.social 🥳 Also added a fancy dark mode picker – can you spot it?
maurobieg.com
Mauro Bieg
I debug teams and their code.
130
Mauro @mb21.bsky.social · 20/08/2026
I want that house!
Screenshot from the game trailer showing shade sails outside a Rotonda-like house.
010
Mauro @mb21.bsky.social · 10/08/2026
“For most employees, we owe it to each other to remind one another that this work is not […] all that important. […] Almost no one will remember all the work we do. But they might remember the types of people we were, the relationships we had and how we treated the people we worked with.”
noemamag.com
Why Is Everyone In Tech So Sad? | NOEMA
A lot of people seem to be realizing that knowledge work is mostly pointless. AI might give us the pleasure of finding out what happens if an entire class of workers loses faith in their careers.
020
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 05/08/2026
Don't you have to compile TypeScript to JavaScript before you can run it?
mastrojs.github.io
TypeScript web framework with no build step – but how? | Mastro Blog
Don't you have to compile TypeScript to JavaScript before you can run it?
2123
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 10/07/2026
Updated hero and footer on mastrojs.github.io 🥳 Also, "Getting started" is hopefully easier to find now. Thanks @tobbe.dev for the help!
mastrojs.github.io
Mastro: No dependencies. No build step. Just a simple web framework and static site generator.
A minimal tool for people who care about their users and web standards.
121
Reposted by Mauro
Kris Walker @kriswalker.me · 31/05/2026
Was introduced to the german Brauhaus movement by @mb21.bsky.social blog post on web quality, and I think it captures my sentiment on the software development landscape perfect right now. Craftsmanship and quality matters. But so does efficiency and production. en.wikipedia.org/wiki/Bauhaus
en.wikipedia.org
Bauhaus - Wikipedia
331
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 23/05/2026
What AI is doing to the jobs of programmers feels very familiar to a lot of us frontend developers – because it has happened to us before.
mastrojs.github.io
Is AI causing a repeat of Frontend’s Lost Decade? | Mastro Blog
AI is doing to programming what framework-brain did to the frontend before. Deskilling, or just working at a higher level of abstraction?
76714
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 23/04/2026
We all hate img’s `sizes` attribute. It’s a workaround for: “A browser can’t know about the space an image will occupy in a layout because it makes decisions about image requests long before it has the information it needs to render that layout” But now there is <img loading=lazy sizes=auto 🥳
2308
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 23/03/2026
I disagree with blaming full-stack eng. But this definitely resonated: "It isn’t about awareness. It’s about who’s writing the front-end code, and whether they’re qualified to write it. [frontend skills] require years of focused attention. They require someone whose job it is to care about them"
473
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 05/02/2026
Had a blast on @typescript.fm We talked about why I started Mastro, the design decisions behind it, and why modern #webdev feels harder than it should. Thanks a lot for having me, Kamran and Erik!
typescript.fm
TypeScript.fm - The Friendly Show for TypeScript Developers | Mastro.js, the Simplest Web Framework and Site Generator | Mauro Bieg | Ep 54B
Mauro Bieg joins the two fools to talk about Mastro, a simple and minimal web framework and site generator. If 11ty and Astro had a baby, it might look like Mastro! With support for routing, HTML t...
062
Mauro @mb21.bsky.social · 30/01/2026
How can a complete web framework be ~700 lines of TypeScript? For one, everything is a route in Mastro. mastrojs.github.io/blog/2026-01...
mastrojs.github.io
Everything is a route – one interface for servers, static sites, and assets | Mastro Blog
Use the standards-based Request/Response-API not only for writing your server, but also for static site and asset generation.
020
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 16/01/2026
Congrats! Developing and maintaining a complex framework takes lots of funding, and I’m glad Astro found a new home. With Mastro, we have a different approach. The name originally stood for minimal Astro, and we’re staying true to that. At just ~700 lines, Mastro will always be easily maintainable.
021
Reposted by Mauro
Stoyan Stefanov @stoyan.me · 28/12/2025
Web Performance Calendar day 28 when Ian Duffy shows us how to tame Chrome’s Performance panel: reduce noise, search fast, annotate, use Insights, and customize tracks calendar.perfplanet.com/2025/tips-fo...
calendar.perfplanet.com
Tips for making the Performance Panel less overwhelming
Introduction The Performance Panel is used for detailed investigations on traces captured during page load or during user interactions. It's a critical tool for understanding and debugging performanc...
0133
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 27/12/2025
Is “web components” finally no longer considered a dirty word by anyone outside the React-die-hard circle? thenewstack.io/web-componen...
thenewstack.io
Web Components Are the Comeback Nobody Saw Coming
Web components enable UI interoperability, allowing you to build reusable components that work across any framework — or to avoid frameworks altogether.
372
Mauro @mb21.bsky.social · 01/12/2025
Thanks for having me @stoyan.me !
030
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 06/11/2025
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
Migrating from Express to the standards-based Request/Response-API | Mastro undefined
011
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 30/10/2025
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.
241
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 27/10/2025
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
What I learned porting Mastro from Deno to Node.js | Mastro
011
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 23/10/2025
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
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.
121
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 16/10/2025
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?
011
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 15/10/2025
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!
021
Mauro @mb21.bsky.social · 19/09/2025
I always used to like the vibes in the Ruby community. Between DHH and Ruby Central, sorry to hear that bullshit has come to those shores as well.
010
Mauro @mb21.bsky.social · 18/09/2025
Nice article about when it might, or might not make sense to inline critical CSS. csswizardry.com/2022/09/crit...
csswizardry.com
Critical CSS? Not So Fast! – CSS Wizardry
Critical CSS promises faster loading, but is it worth the complexity? Learn when Critical CSS actually boosts performance or when it might slow you down.
010
Reposted by Mauro
Mastro.{js,ts} @mastrojs.bsky.social · 17/09/2025
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
Bundling, pregenerating assets and caching | Mastro
151
Mauro @mb21.bsky.social · 15/09/2025
In order for mastrojs.github.io to have an Atom feed, of course I had to add a new module to non-core: jsr.io/@mastrojs/ma...
mastrojs.github.io
Mastro: the simplest web framework and site generator you’ve ever seen.
No bloat, no magic, no config. Mastro gets out of the way, so that you can focus on building awesome websites.
010
Reposted by Mauro
Dominik 🔮 @tkdodo.eu · 13/09/2025
Can't believe what I'm reading. Accidentally DDoS yourself because you fetch in useEffect in 2025 is so avoidable 😂 blog.cloudflare.com/deep-dive-in...
The API calls were managed by a React useEffect hook, but we mistakenly included a problematic object in its dependency array.
612613
Reposted by Mauro
gabby @fullmoon.id · 11/09/2025
I keep saying that there is no empirical evidence that vibe coding makes people more productive I believe vibe coding users keep confusing "I enjoy coding in this way" (believable, subjective) with "I'm more productive coding in this way" (unsupported, dubious to me) substack.com/inbox/post/1...
substack.com
Where's the Shovelware? Why AI Coding Claims Don't Add Up
78% of developers claim AI makes them more productive. 14% say it's a 10x improvement. So where's the flood of new software? Turns out those productivity claims are bullshit.
7438
Mauro @mb21.bsky.social · 09/09/2025
I’m thinking of selling an EPUB version of The Mastro Guide (which will remain free to read online): mastrojs.github.io/guide/ Anybody has any experience with publishing an ebook or can recommend a publisher or self-publication platform that handles payments etc? Please share for further reach 🤗
mastrojs.github.io
Learn to build a website for free with HTML, CSS and JavaScript
Learn the fundamental web technologies by building your very first website and putting it live – all in your browser.
010
Mauro @mb21.bsky.social · 08/09/2025
I’m really happy with HTTP-first assets in Mastro: create a GET route that responds with the transformed image or bundled CSS/JS. For static site generation, you’re done. For server, add an `export const pregenerate = true` and add the build step to your CI/CD. mastrojs.github.io/guide/bundli...
mastrojs.github.io
Bundling, pregenerating assets and caching | Mastro
110
Mauro @mb21.bsky.social · 07/09/2025
“Preload only the fonts that are actively used above the fold.” www.erwinhofman.com/blog/should-...
erwinhofman.com
Should you preload fonts for performance? | Erwin Hofman
Preloading fonts can speed up or slow down your site. Learn how it affects FCP/LCP, how Chrome handles preloads, and when to use them for better performance.
000
Mauro @mb21.bsky.social · 07/09/2025
While Mastro is proudly #nobundler by default, I’ve started writing a chapter about what you’d do if you’re unfortunate enough that your client-side JS has grown beyond a few dozen of files: mastrojs.github.io/guide/bundli...
mastrojs.github.io
Bundling, pregenerating assets and caching | Mastro
110
Reposted by Mauro
Mauro @mb21.bsky.social · 04/09/2025
True, but the use-cases where an SPA make sense really seem to shrink every year. Has there been an HTML attribute or similar proposed that would keep an element’s scroll bar position or an input’s text and cursor position across page transitions, if it has the same id? Similar to view transitions?
111
Reposted by Mauro
Jake Lazaroff @jakelazaroff.com · 02/09/2025
modern CSS is so good. need to take a color from your design system, desaturate it and lower the opacity? oh and you want different values for light mode and dark mode, too? boom, easy:
--color-shadow: light-dark(
	hsl(from var(--color-primary) h 40 l / 15%),
	hsl(from var(--color-primary) h 20 20)
);
0203
Reposted by Mauro
Jake Lazaroff @jakelazaroff.com · 03/09/2025
i should explain why i'm so excited about this. i have a love/hate relationship with javascript. it's the most brittle part of the web stack. all else being equal, if you can do something without javascript you probably should.
3217
Mauro @mb21.bsky.social · 25/08/2025
I rarely link to the orange site, but this is a really good comment: news.ycombinator.com/item?id=4387... Feels like that's the same kind of reasoning like "Nobody was ever fired for choosing React".
000
Mauro @mb21.bsky.social · 25/08/2025
That’s why you need to learn HTML and CSS if you’re serious about web design.
frontendmasters.com
Web Design: What is the web capable of that is hard to express in design software?
The web platform has a heaping helping of more design capability built into it than any design software does.
000
Reposted by Mauro
The New Stack @thenewstack.io · 22/08/2025
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
bit.ly
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).
041
Mauro @mb21.bsky.social · 20/08/2025
I was interviewed! Please share to get the word out. I’d love to get a conversation going where Mastro (and web dev in general) should be heading for.
020
Reposted by Mauro
Bramus @bram.us · 19/08/2025
Very exciting news. With these changes, you can more easily build accordions such as seen in this recording. developer.chrome.com/blog/styling... Currently supported in Chrome and Safari, and soon Firefox!
4789
Mauro @mb21.bsky.social · 18/08/2025
I wonder whether anybody will do a talk similar to this one in a decade, but instead about React and/or bundlers: www.youtube.com/watch?v=wo84...
youtube.com
Casey Muratori – The Big OOPs: Anatomy of a Thirty-five-year Mistake – BSC 2025
000
Mauro @mb21.bsky.social · 16/08/2025
Does any somewhat standardized url query parameter format exist for image resizings and transforms? I could have sworn I saw a spec on GitHub a while ago, but absolutely cannot find it anymore! Did I hallucinate it? Something like imgproxy or Cloudflare images but they all use different formats.
100
Reposted by Mauro
Christian Alder @hejchristian.com · 04/08/2025
Really liking CSS Relative colours paired with CSS variables combo 👌 developer.mozilla.org/en-US/docs/W... My variable names could probably do with some work, but it's nice to drop a colour in and have a set of variables ready to go. (I know I'm late to learning OKLCH - soon!)
CSS Code sample, showing some CSS variables being defined to setup a light colour, with light/dark variant, and five opacity levels.

  --light-hex: #f1f2f3;
  --color-light: hsl(from var(--light-hex) h s l);
  --color-light-lighten: hsl(from var(--light-hex) h s calc(l + 10));
  --color-light-darken: hsl(from var(--light-hex) h s calc(l - 10));
  --color-light-90: hsl(from var(--light-hex) h s l / 0.9);
  --color-light-75: hsl(from var(--light-hex) h s l / 0.75);
  --color-light-50: hsl(from var(--light-hex) h s l / 0.5);
  --color-light-25: hsl(from var(--light-hex) h s l / 0.25);
  --color-light-10: hsl(from var(--light-hex) h s l / 0.1);
2152
Reposted by Mauro
html energy @htmlenergy.bsky.social · 02/08/2025
happy html day ❇️
05217
Mauro @mb21.bsky.social · 30/07/2025
Saying Astro is “HTML first, framework second” seems to me a bit weird. It is a JS framework after all, just server-first. Wondering what the right framing/messanging here is for Mastro. mas.to/@frontenddog...
000
Reposted by Mauro
html energy @htmlenergy.bsky.social · 18/07/2025
On Saturday, August 2nd, 2025, we'll be gathering in places around the world to write and celebrate HTML. Join us ❇️ html.energy/html-day/202...
html.energy
HTML Energy
HTMl Day is on August 2nd, 2025!
46535
Mauro @mb21.bsky.social · 26/07/2025
Need to work on that SEO for mastrojs.github.io
100 Performance, Accessibility, Best Practices
91 SEO
110
Reposted by Mauro
Schalk Neethling @schalkneethling.com · 25/07/2025
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/conjecture/i...
jonoalderson.com
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.
042
Mauro @mb21.bsky.social · 24/07/2025
The Astro-based Starlight framework was already very good. But by moving the docs to Mastro itself, I could declutter things even further.
784 lines of code added, 7121 lines deleted
111
Mauro @mb21.bsky.social · 24/07/2025
Eat your own dog food, they say. That’s why I’m redoing the docs and guide website using Mastro itself: mastrojs.github.io
mastrojs.github.io
Static site generation in your browser | Mastro
Build and publish websites right from your browser.
110