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
I would just hate if some regulator mandated browser engine choice but forgot about the add-to-homescreen UX.
November 12, 2025 at 7:43 PM
Did you also get a hydration error? 🫠
November 12, 2025 at 7:26 PM
To be fair, that’s something a linter usually catches.
But what’s the status of “sideEffects: false" in package.json or a similar mechanism?
November 12, 2025 at 7:25 PM
should have done HTML and CSS
November 12, 2025 at 7:22 PM
Yes, that with the rational numbers resonates more with me. It all depends on your choice of equality. The refactored program should be equivalent to the previous one, if equal means that it produces all the same outputs for the same inputs.
November 12, 2025 at 6:21 PM
haha, I feel we’re straining the analogy. all I can say with certainty is that if you have a monoid, applying the identity element (e.g. multiplying by 1) does the same thing as the “nop” assembly instruction: nothing.
November 12, 2025 at 5:58 PM
Or as the imperative programmers say: a noop.
November 12, 2025 at 5:49 PM
More powerful browser on iOS would be nice. But what’s holding PWAs back is that nobody knows how to install them on iOS.
November 12, 2025 at 5:26 PM
You’re welcome! With all the abstractions it can be hard to see the forest for the trees.
November 12, 2025 at 9:46 AM
Ah yeah, sounds you need to do myString || null somewhere. Either before sending to the GraphQL server or when setting the useState. And if it’s then uncontrolled you can do value={myString || “”} to do the reverse.
November 12, 2025 at 9:17 AM
Thanks a lot! If you have any more questions, let us know!
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
November 12, 2025 at 7:11 AM
Ah, un/controlled the React concept. But warnings from what, a linter? Or a TypeScript error? In TypeScript, null and undefined are not the same thing, so you’d need useState<string | null>(null);
November 12, 2025 at 6:53 AM
oh, I never got that deep into GraphQl. is un/controlled a GtaphQL concept? like here? stackoverflow.com/questions/76...
GraphQL field level authorization and nullability
We've implemented field level authorization in the type resolvers of our server, where a field is only returned with a value if the user has access to it, otherwise &quot;null&quot; is returned (with
stackoverflow.com
November 11, 2025 at 8:47 PM
Async Iterator Helpers 🥳
Just a map function would be enough for 80% of my async iterable needs!
November 11, 2025 at 6:40 PM
The GraphQL server doesn’t accept it and you cannot change the server?
Or if you can change the server why not make the field optional and use undefined instead of empty string?
November 11, 2025 at 6:33 PM
Only one way to find out!
November 11, 2025 at 7:27 AM
Looks very similar to mastrojs.github.io/reactive/ 🙂
Reactive Mastro – GUI library for MPAs
A tiny reactive GUI library for your existing MPA.
mastrojs.github.io
November 11, 2025 at 7:17 AM
Oh, you are right! But that’s unusual. Perhaps because the event queue is already quite full or something like that?
November 10, 2025 at 3:17 PM
This. They are actually not computationally expensive, just throttled.
November 10, 2025 at 7:11 AM
Oh cool! I see that’s Chrome-only for now. Any CDNs implement this already out of the box?
November 9, 2025 at 4:02 PM
oh, so “all of the above” 😬
Regarding state, if you say you’re a noob, I find the official docs quite good: react.dev/learn/choosi...
Choosing the State Structure – React
The library for web and native user interfaces
react.dev
November 9, 2025 at 3:33 PM
In the React ecosystem good pattern change into bad one every other year ;-)
But what is your team struggling with? Initial page load speed? Development/iteration speed? Bugs? Regarding global state management, or..?
November 9, 2025 at 1:09 PM
Perhaps @programmingart.bsky.social can shed some light on this?
November 9, 2025 at 12:30 PM