Ryan

Ryan

@rschristian.dev

Implicit "It depends" l Open Sourced Shenanigans http://github.com/rschristian l @preactjs.com stuffs

1.1K followers96 following1.1K posts

Ryan reposted

I'd love to hear from preact users, what are you doing with Preact? What is going well? What isn't? Have you tried 11?

One minor feature of Preact 11 that we haven't talked about much is the strictly typed aria roles on HTML elements, where possible. In short, `<header role="form">` will now be a type error. Spent quite a bit of time going through the spec docs to build that out, doing our part to make the web more

This did already catch a few mistakes in an app at $DAY_JOB, hope it catches mistakes in other apps too! Bad aria is worse than no aria and browsers have basically no guardrails for this unfortunately. Types in JS frameworks (along with linting tools and the like) can step up to help out.

One minor feature of Preact 11 that we haven't talked about much is the strictly typed aria roles on HTML elements, where possible. In short, `<header role="form">` will now be a type error. Spent quite a bit of time going through the spec docs to build that out, doing our part to make the web more

View full thread

TypeScript's handling of discriminated unions often leaves something to be desired in terms of ergonomics and, as we discovered, perf, which unfortunately this is very susceptible to. Polymorphic inputs are especially at risk here. It's going to be something we keep a close eye on, but for the

moment, the a11y benefits seem like they outweigh the edge cases. Worst case, we'll make the strict discriminated union types opt-in, still filtering roles, but making all roles available regardless of attributes that would reduce that list further.

One minor feature of Preact 11 that we haven't talked about much is the strictly typed aria roles on HTML elements, where possible. In short, `<header role="form">` will now be a type error. Spent quite a bit of time going through the spec docs to build that out, doing our part to make the web more

accessible. Now, there is a potential downside we're still looking out for, and would love to hear from you if it's a problem. Elements like `<input>` are not so simple as to just have a subset of roles that are applicable; instead, it relies on the input `type` attr: github.com/preactjs/pre...

github.compreact/src/dom.d.ts at 8ff8785bac0749c8129f2a76920b3f10b9d6766f · preactjs/preact⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM. - preactjs/preact

I've found the OSS scene to be super depressing lately. Quite a few individuals that I've respected for years due to the care, quality, and thoughtfulness put into their work have done this strange flip where they've entirely abandoned that, switching to a model of just throwing shit out the door.

View full thread

OSS was great specifically because it was a space in which many devs could invest time & effort at their own pace. Releases were when we were happy with it, you could put in a level of care that wouldn't fly at a day job. How you got to a result could matter just as much as the result itself.

And of course, the social aspect is totally dead too. No, I don't want to get home after a long day of work and review PRs from AI agents that scanned the codebase and imagined (rarely actually found) a few possible bugs. That's absolutely miserable and soulless.

I've found the OSS scene to be super depressing lately. Quite a few individuals that I've respected for years due to the care, quality, and thoughtfulness put into their work have done this strange flip where they've entirely abandoned that, switching to a model of just throwing shit out the door.

Their past work is still out there and is still proof of hundreds of hours of work, so what happened? Has the proliferation of AI eroded the way some people think about software? Devaluing their work to a corporate-like "whatever it takes to get it out the door, do it" mentality? It's super odd.

Ryan reposted

Finally Firefox lets redeclare variables in the console, it was one of my biggest pain points when debugging with it. Thanks @lochipi.bsky.social for implementing this!

This post is unavailable.
View full thread

What do the winners get? First place: $4000 USD + will likely be implemented as the new Preact site design Second: $2500 USD Third: $1500 USD Four extra designs that we like will receive $500 each. If there’s a bunch of designs that really blow us away, we might hand out more prizes yet.

We look forward to seeing what the community comes up with! Hope you all enjoy Preact 11!

To be as inclusive as possible, we’re making this design-only, no code required. Simply build out (at least) an interactive home page & a docs page, desktop & mobile views for both, and send us the link with your contact information in our linked form.

Please refrain from using AI in any form, we’re looking to celebrate the human creativity of our community. Anyone can ask Claude to generate a cookie-cutter design, it takes no effort. All submissions are due by the end of day October 23, and we’ll choose the winners shortly after.

Ryan reposted

Preact v11 is an amazing release! Kudos to the whole @preactjs.com team, with special shoutouts to @jovidecroock.com and @rschristian.dev, who have gone above and beyond to make this a killer release (both literally and figuratively).

Jovi 🐨@jovidecroock.com

Preact 11 is out 🎉 We’ve been hard at work at making our diffing use modern features like moveBefore , leveraging ESM for tree-shaking Preact Compat and ensuring you have a great experience with resumed hydration.

Damn, new Firefox looks fucking awful. Did we fire all designers for Claude? Because it looks indistinguishable from all the slop websites we've seen over the past 2 years with the ridiculous gradient and border radii. Thank god for userChrome.css for working around a locked-down about:config menu.

Ryan reposted

Preact 11 is out 🎉 We’ve been hard at work at making our diffing use modern features like moveBefore , leveraging ESM for tree-shaking Preact Compat and ensuring you have a great experience with resumed hydration.

Looking at 404 records always fascinates me; often it's a good reminder about outdated links somewhere, but just as often, you see things that make you go "Huh? What? Why?" To the person requesting `/blog/rss.xml` thousands of times over the past month, I shall add a duplicate output just for you.

That is a resource that has never existed at any point in the past and I see no references to anywhere. I'm sure it's just a buggy app, as most of these non-malicious requests are, but it's still kinda funny. It's like a river of faulty assumptions from other devs, just as they see mine.

Ryan reposted

Haven't been active much here, sorry, AI-in-OSS burnout is real. How do you care when nobody else does? When nobody engages? When all the human connection is gone? When all you read is AI slop? I want to go back to coding for fun. Because whatever this is, it's very much _not_ fun.

Ryan reposted

You know what’s harder than performance optimization? …Deoptimization. It’s a pretty fun concept you use every day without realizing it. The *only* reason modern dynamic languages can “fly so close to the sun” is because they have a safety-net when they over optimize.

I love getting spam PRs only to navigate to their profile to see the user has also submitted hundreds of other PRs to hundreds of repos in ~5 minutes and GitHub doesn’t for a second slow them down. Bot detection 25 years ago was better than what GitHub can scrape together today, it’s astounding.

Ryan reposted

Preact 11 will be tree-shakeable, you pay what you use of preact/compat. Soon you won't pay for createElement when using the jsx method. We're continuously trying to give the smallest bundle size, and 600 bytes saved might not seem like a lot but... to us it is

Ryan reposted

What’s the problem w using LLMs to write stuff you want other people to read -emails, articles, posts- and why are people (like me!) so incredibly hostile that they will block you/mute you/block your domain, to never read anything from you again? Bryan spells it out. Read it:

Bryan Cantrill@bcantrill.bsky.social

Your intellectual fly is open bcantrill.dtrace.org/2025/12/05/y...

Ryan reposted

Preact 11 has been long in the making and I'm really proud of what came out the other end. It has quite some history as we first started working on a backing-node (fiber-like) structure for Preact but reversed.

Ryan reposted

pretty wild how liberating it is to write code that just works in the browser without a build step

Ryan@rschristian.dev

It's still incredibly pleasing to run through old projects converting TS into JS + JSDoc. I made the decision to cut out TS (excluding `.d.ts` files, they get a pass) from all my personal projects years ago and I'm still very much convinced that's the right move. TS as an authoring format ain't it.

It's still incredibly pleasing to run through old projects converting TS into JS + JSDoc. I made the decision to cut out TS (excluding `.d.ts` files, they get a pass) from all my personal projects years ago and I'm still very much convinced that's the right move. TS as an authoring format ain't it.

Firefox, even with hardware acceleration, chokes so hard the second any site adds a few filters or blur effects to their CSS. I shouldn't be dropping to 10 fps scrolling a static site. Thank god for Tampermonkey as much of the web these days (largely from AI garbage) abuses these styles to no end.

Tailwind use (which is also guaranteed with AI garbage sites) at least makes it easy to override I suppose.

Ryan reposted

Released the first release candidate of Preact 11 and I'm pretty proud that all of the packages combined actually shrunk by 100 bytes while adding A LOT of features!

Damn, can't use new codepen without logging in? I mostly used it as a quick & handy REPL, guess I'm switching to jsfiddle

Yes FedEx, I’m sure you really did attempt to deliver that package. The complete black screenshot of “my front door” and submitting that update from ~20 blocks away really sells it.

I don’t understand how modern delivery is so awful. I’m not asking for the world here, if something needs my signature, an automated system should be able to ping me 5 minutes early so I can wait outside and speed up the driver. Instead, they’re egregiously backed up and have to lie about attempts.

The recent-ish changes Bluesky made to animations across the iOS app are a great example of how you can take a fine app & make it feel sluggish, slow, and frustrating in the pursuit of “flare”. It’s constantly showing me down as I wait for menus to shift in & off the screen.

Ryan reposted

Huuuuuge framework site update framework.sbesh.com the new site is live along with framework v0.11 and UI v0.3. shout out to @preactjs.com for being absolutely great to build on. Special thanks go out to @infrequently.org for helping me sort out some framework loading performance issues.

framework.sbesh.comhono-preacthono-preactOne framework from the edge to the browser: Hono on the server, Preact on the client, and a single typed connection for routing, data, mutations, and realtime.