Why I Built a React Component Streamer
Do you know how much of your life online that Silicon Valley owns? It can be hard to vibe as a consumer. You have Facebook and Google and Apple in your face. You know they are there front and center. They are also behind the scenes though, doing their damn best to control the technology developers build with.
The Facebook Notification Bug That Changed Everything
A long time ago, Facebook had an issue displaying the right number of notifications in the little red badge they show to their users. The number said 2 when you really had 3. Innocuous enough, except at Facebook that means showing a billion wrong numbers a day.
To cut to the chase, a couple engineers solved it by creating a development tool called React. It got adapted as an industry-leading tool and became embedded in the core marketing efforts of a company called Vercel via a project of theirs called Next.js that they give for free to entice developers to buy server capacity from them.
What Really Matters
While the technical underpinnings of "React component streaming" are nuanced and interesting in the same way the pigments that make up paint are interesting to artists, just like the pigments are not what art viewers care about, the technicalities are not what internet users care about. They, you, and I all care about the buttons we press working and serving us.
As a software engineer, I serve my bosses by building technology that grows the company and makes the users pay for what we build. The tools I use are up to me in many scenarios. The tools I use matter to me.
Building My Own Tools
A couple of years ago, I started building tools for myself. What I built were replacements for free tools that were come-ons for someone else's product. I did not like that these businesses were being positioned between me and my bosses when I would be led towards pitching my bosses on servers from one of the tool-building companies like Vercel.
I felt that if I built the tools and were their primary user then they'd always serve me, serve my bosses, my company, my buyers. They may not get adopted by the rest of the world and I may not ever release them, though I hope to with my friends at The Crazement. That doesn't matter though. All that matters is that by building my own tools I can deliver on the promises I make.
The Hidden Cost of "Free"
Why can't I deliver with something like Next.js?
You need to understand that the team that builds it does not care about making money on Next.js. They therefore modify and update it for free. Each time they update it they break something that previously worked. Then I need to change my usage of Next.js in order to get my application working again. I need to keep updating the application for bad reasons and tell my bosses why.
It's hard to tell my bosses bad reasons. I'm encouraged to make some change sound necessary when they are only necessary because the tool I chose changed and now we are dealing with the consequences.
The Path of Independence
That's why I chose to build my own React component streamer instead of Next.js. And my own database access methods instead of Drizzle. And my own component library instead of shadcn. Even though you've never heard those names that I replaced before, I want you to know that I refused them with justification.
A Moment of Clarity
I wanted to share this with you while I can. I'm on my couch in Kenya. I'm using these tools on my project for The Hook Club. I'm recovered from a long day of mistakes made by me that affected my girlfriend. I'm feeling guilty about that. And I'm feeling otherwise very positive about the right things I've done as a developer.
I won't have another chance to share, so you get it now.