Mastro.{js,ts}
mastrojs.bsky.social
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
Pinned
Besides running on Deno, Node.js, and inside a web browser as a VSCode extension, Mastro now also runs on Bun! 🥳

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
Reposted by Mastro.{js,ts}
A few image format discoveries:

AVIF is Baseline Newly Available as of 2024 (so I use that for icon tiles, which are much smaller than what they were in PNG and even smaller than webp).

And, social sharing services now also support webp for Open Graph images: darekkay.com/blog/open-gr...
Open Graph images: Format compatibility across platforms
A comparison of image format support for Open Graph preview cards across different social media and messaging platforms.
darekkay.com
December 31, 2025 at 10:48 PM
Reposted by Mastro.{js,ts}
Our Web Performance Journey guide is live on PerfPlanet Calendar!
Web Performance Calendar day 30 with @sergeyche.dev, Eric Goldstein and Alex Chernyshev on mastering perf: get business to care, link UX speed to outcomes, set thresholds, understand real users with percentiles, trends, distributions, tie to business metrics
calendar.perfplanet.com/2025/7-steps...
7 Steps of a Web Performance Journey
This year, Sergey Chernyshev, Eric Goldstein, and Alex Chernyshev - members of the NY Web Performance meetup - decided to collaborate on the future of the UX Speed Calculator tool Sergey created a few...
calendar.perfplanet.com
December 30, 2025 at 4:41 PM
Reposted by Mastro.{js,ts}
My article for Performance Calendar is live, looking at tips to help focus when doing performance traces.
December 28, 2025 at 5:18 PM
Is “web components” finally no longer considered a dirty word by anyone outside the React-die-hard circle?

thenewstack.io/web-componen...
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.
thenewstack.io
December 27, 2025 at 8:11 AM
Reposted by Mastro.{js,ts}
CSS @​scope has landed in Firefox 146, making it a new baseline feature. Here's how it works:
December 9, 2025 at 3:55 PM
What are you all using for CI/CD these days?
December 8, 2025 at 6:57 PM
Reposted by Mastro.{js,ts}
Web Performance Calendar day 6 with Aaron T. Grogg (@aarontgrogg.com). What if I told you that you need low-to-no JavaScript for interactive UI elements such as accordions, auto-expanding or auto-suggestion inputs, modals, hamburger menus and even more...

calendar.perfplanet.com/2025/nolojs-...
NoLoJS: Reducing the JS Workload with HTML and CSS
With web performance, less is typically more: When possible, send less data, make the browser do less. Here are several examples where you can replace common JS patterns with HTML and CSS.
calendar.perfplanet.com
December 6, 2025 at 3:14 PM
Oh wow, we just passed 100 stars on GitHub 🤩
Thanks everyone, it means a lot! Here's to the next 100 stars!
GitHub - mastrojs/mastro: The simplest web framework and site generator yet – no bloat, no bundler, no client-side JS by default.
The simplest web framework and site generator yet – no bloat, no bundler, no client-side JS by default. - mastrojs/mastro
github.com
December 5, 2025 at 11:16 AM
Very interesting conversation.

For me, the main take-away was really that different people mean very different things when they say "encapsulation".

(1/n)
🎙️ New Episode of Igalia Chats - Web Backstories: Shadow DOM

@meyerweb.com and @bkardell.com chat with @jayhoffmann.bsky.social and @adactio.com about Shadow DOM's backstory and long origins

www.igalia.com/chats/shadow...
December 3, 2025 at 9:00 AM
@guypo.com I just discovered your awesome post on mobile browser cache sizes from 2012. Do you know of any more up-to-date sources or do you think it's still the same? www.guypo.com/mobile-brows...
Mobile Browser Cache Sizes - Round 2
Thoughts and research on Web Performance & Security
www.guypo.com
December 2, 2025 at 12:49 PM
If you haven't seen this yet: @infrequently.org looked at SPAs reporting soft-navigations to the RUM Archive:
On average, they see only one (1) soft-navigation for every full page load!
This suggests that for most SPAs out in the wild, it's not worth being an SPA.
The Performance Inequality Gap, 2026 - Infrequently Noted
Embedded in this year's network and device estimates is hopeful news about the trajectory of devices and networks. It has never been easier to deliver pages quickly, but we are not collectively hittin...
infrequently.org
December 2, 2025 at 10:17 AM
Looks like we’re doing Tailwind takes again (thanks @wlls.dev and others for the inspiration!)
We take a step back and look at abstractions like style names, components, and build steps. What do we gain and lose by using them?
Are abstractions like style names and components worth it? | Mastro Blog
mastrojs.github.io
November 27, 2025 at 2:42 PM
Had a lot of fun generating OpenGraph images from text with the standard Canvas API.
How to generate og:images from text with Canvas | Mastro Blog
mastrojs.github.io
November 26, 2025 at 6:49 PM
Reposted by Mastro.{js,ts}
Journal: Why use React?

Or, more precisely, why use React *in the browser*?

🔗https://adactio.com/journal/22265
November 26, 2025 at 12:40 PM
Reposted by Mastro.{js,ts}
I think the dependency "cooldown" approach is fundamentally flawed and a total distraction from the work that would actually solve supply chain issues - sandboxing and attestation.

insanitybit.github.io/2025/11/22/o...
On Dependency Cooldowns - InsanityBit
insanitybit.github.io
November 24, 2025 at 4:01 PM
@scottjehl.com recently posted about the pain of generating Open Graph images. Happy to report that we have a light-weight solution. And we blogged about it:
Generate og:images from text with the Canvas API | Mastro Blog
mastrojs.github.io
November 18, 2025 at 12:39 PM
I got nerd-sniped to spec a hypothetical <input> type for emojis and other special characters...
But how would the browser know where to position the picker? You’re right, it should be an <input>. <button> would be nice so you can put an svg inside and style things, but <input type="color"> sets a strong precedent.

<input type=character range=emoji onchange={e => e.target.value}>
November 18, 2025 at 8:03 AM
Reposted by Mastro.{js,ts}
posted this 6 years ago and it’s still relevant
November 15, 2025 at 10:12 AM
Reposted by Mastro.{js,ts}
Today on the pod, Node 24 goes LTS, Nuxt Image V2 brings TS goodies, and Anders shares insights on TypeScript's AI era rise. Plus community takes on engineering practices!

share.transistor.fm/s/b87c759b

#typescript
Nuxt Image Loves TypeScript, Node 24 Goes LTS, and a Satisfying Use of satisfies | News | Ep 43 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 43
News for the week of November 3, 2025: Node 24 promoted to LTS, Nuxt Image V2 is full of TS goodies, and Anders is humbled by TypeScript's rise. From the community: TypeScript is not a substitute for...
share.transistor.fm
November 12, 2025 at 6:00 AM
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
Reposted by Mastro.{js,ts}
websites in 2025
November 8, 2025 at 10:05 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...
Migrating from Express to the standards-based Request/Response-API | Mastro undefined
mastrojs.github.io
November 6, 2025 at 4:20 PM
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/...
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