@souporserious.com
470 followers 21 following 30 posts
Design / Systems / React Building https://www.renoun.dev/
Posts Media Videos Starter Packs
souporserious.com
renoun has taken a long time to build because I run into every single issue it's trying to solve for the documentation site. It feels good to finally talk about now though, I'm really happy with where the API is. The changelog is quite the history of where it has been so far 😄 renoun.dev/changelog
renoun - The Documentation Toolkit for React
The renoun toolkit uses your React framework to keep documentation polished, in sync, and on brand.
renoun.dev
souporserious.com
It's fully composable through React Server components that work with any bundler and ships everything you need in one package: syntax highlighting, support for multiple themes, advanced API references, table of contents, and a full-featured file system utility that works with each component.
souporserious.com
Excited to officially launch renoun.dev 🚀

This has been years in the making to deliver a focused set of components, hooks, and utilities in React for building great documentation exactly to your standards that always stay in sync.
renoun - The Documentation Toolkit for React
The renoun toolkit uses your React framework to keep documentation polished, in sync, and on brand.
renoun.dev
souporserious.com
Is Promise.all necessary when returning an array of promises as children or will Suspense/SuspenseList essentially optimize this?

I also noticed iterator maps work as well which is so nice! Would be great to document this as well.
souporserious.com
Documenting inversion of control could help here instead of baking it in:
const transition = useTransition()
<Button transition={transition}>...</Button>

Then if it's not defined the Button works as normal.
souporserious.com
Yeah, it's super limited and tedious to manage this way. Hopefully we'll get first-class support for classes and more advanced overloading someday.
souporserious.com
This will be a much nicer onboarding experience overall, thank you for contributing all of these fixes! 🙏
souporserious.com
So exciting! I felt like this was always a huge hinderance to adopting MDX in App Router.
souporserious.com
The new Chinese American Bear EP. It's slowed down versions of their previous songs, but it's good. open.spotify.com/album/0rCKf5...
Waaaaaaaah!!!
Chinese American Bear · EP · 2025 · 6 songs
open.spotify.com
souporserious.com
I don't think that's exclusive to RSC, we've always needed to guard those calls with something like "typeof document !== undefined" if it is initially server rendered.
souporserious.com
Love this! I've wanted to explore variants for posts like a free version and then more in-depth paid version. It's more work obviously, but thinking there would be more incentive to go deeper.
souporserious.com
Just implemented this on one of my projects and it cleaned up so much, thank you!
souporserious.com
Yeah, sorry tsxmod isn't really helpful yet. You can code golf with a chat app, but if I understand what you're after you probably want to use structures and prune out any info you don't care about. Whipped up something to start with here stackblitz.com/edit/stackbl...
ts-morph navigation - StackBlitz
Starter project for Node.js, a JavaScript runtime built on Chrome&#39;s V8 JavaScript engine
stackblitz.com
souporserious.com
never finished this project, but you can play with ts-morph here fairly quick to get an idea www.tsxmod.com
www.tsxmod.com
souporserious.com
Haha yeah need to finally start posting over here!
souporserious.com
Appreciate the kind words and shoutout, Josh! Happy New Year 🎊
souporserious.com
This also works great for "duplicate" class methods where you can set default private field values:

class Counter {
#​count = 0

duplicate() {
const counter = new Counter()
counter.#count = this.#count
return counter
}
}
souporserious.com
I just use the TypeScript cli nowadays which has been refreshingly simple.