Skip to content
TwitterGithub

2022 in Review

β€” 2022, Year in Review β€” 5 min read

2022
Photo by zero take
    No translations available.
  • Add translation
Like the monospace font in the code blocks?
Check out monolisa.dev

2022 has been quite a wild ride for me, so let me share the high (and low) points of the year with you:

React Summit 2022

I went to my first ever in-person tech conference this year, React Summit. It was an overall great experience, as we combined the conference with a bit of sightseeing in Amsterdam. We even got super lucky and got tickets to the anne frank house - an attraction that is usually sold out for months in advance.

My personal highlight of the conference has to be that I got to meet Tanner Linsley in person for the first time. Having worked with him virtually for over one year, it was great to finally meet him.

Also, his talk 5 Years of Building React Table was one of the most energetic and entertaining talks I have ever seen. Make sure to watch it if you haven't had the chance yet.

React Query v4

I was really excited about the v4 release, which is also why I was so disappointed when we finally released it. For me, it was a personal disaster at the time (It's better now, I'm quite happy with it). To understand why, we have to take a step back:

Background

We've started working on v4 in late 2021. There were some issues around offline mode that we couldn't fix without introducing breaking changes, so we've bundled everything together that has amassed ove the last year or so to release a new major version.

At the same time, we had a separate branch that was migrating over to React 18 useSyncExternalStore. We could've added this in a minor version, because it only changes internal things, but it felt safer to me to bundle it with the breaking changes.

I was pretty confident that the timelines would align and that we would be able to release v4 shortly after React 18 becomes "officially stable".

v4 beta

React 18.0.0 was released on March 29th, and we shipped the first beta of v4 on April 2nd. At this time, I was hoping for lots of adoption and feedback from the community. I'm really thankful for everyone who tried out the beta version, and feedback was mostly positive.

We got some bug reports around React Native (thanks to Hirbod) and started to add ESM compliant bundling (thanks to Sachin for this contribution).

v3 and React 18

v3 does not support React 18. Not really. There's no support for concurrent features because it doesn't use useSyncExternalStore. I tried to explain this, repeatedly.

Still, lots of issues and even PRs were opened that wanted to update our peerDependency on React to ^18.0.0. I closed them on sight, because I didn't want to give people the wrong impression that v3 would work with React 18.

I don't really remember what drove me over the edge, but it's likely it was some sort of entitled comment somewhere on the internet. πŸ˜… I gave in and released v3.35.0 with a somewhat angry release note. Give the people what they want...

Last minute pivot

Just before we were ready to release v4, and about one week before ReactSummit, we decided to only release React Query v4 as @tanstack/react-query, with everything that goes with it:

  • migrating to a monorepo
  • releasing everything as separate packages
  • changing the docs towards tanstack.com

I dug up the original Discord conversation:

TkDodo:we can also just do @tanstack/react-query? v4 is breaking anyways :) Tanner: That's true

We wanted to get it ready before ReactSummit so that Tanner could announce v4 on stage, but it just wasn't enough time. We announced it anyways, and said that it would be ready within 30 days.

The release

We managed to stick to that timeline, and v4.0.0 was released on July 18th. πŸš€

But to be honest, the release wasn't very stable. To be quite frank, everything below 4.3.0 is nigh unusable. The monorepo and bundling changes that went with it introduced many things I didn't anticipate. Devtools were included in prod builds for some bundlers, and all the ESM changes were basically lost during the move. Version 4.0.0 didn't even have types published. πŸ™ˆ

To add to the confusion, we accidentally released 4.0.0 of the react-query package as well. This is also what Theo was struggling with in this video. It was really messy.

isLoading

I already felt bad about all of this, when on top of that, complaints were coming in about the loading state for disabled queries in v4. I don't want to go too much into detail, you can read up on this on the GitHub issues if you like.

The whole situation was challenging for me personally because a) this was the first time I've driven a major release of a popular open-source library and b) it just seemed like I got everything wrong. πŸ˜”

I was also disappointed because we had a beta release out for over 6 months, and there was no feedback whatsoever that this API is not ideal for some cases. Mostly though, I was angry at myself because I clearly "missed this" in the API design.

(Plot twist: We thought we need to fix the API in v5, but we likely won't. It's trading edge-cases, and it's fine. I might explain this in more detail in a separate post)

Learnings

There is no better way to learn than to make mistakes. I've learned a lot from this experience, and I'm really thankful for everyone who helped me through it. So for v5, I'm going to:

  • be more open about what we're going to do. I've released the v5 roadmap πŸ—Ί publicly to get as much feedback as early as possible.
  • likely release an RC (release-candidate) version after the beta to get even more feedback. I've really underestimated that people are not trying out beta releases in fear of further breaking changes. I've been vocal about not going to change APIs drastically anymore once we're in beta, but I understand now that this is not what a beta version usually communicates.
  • not rush anything. There's no point in sticking to a self-imposed timeline. We'll release v5 when it's ready.

Streaming

Producing content has always been something I like to do, but I've generally limited myself to written content so far.

This changed when Jason Lengstorf invited me to Learn with Jason to talk about TanStack Query. In case you missed the stream, you can watch the recording here. It was super well received and a lot of fun for me, too. At times during the stream, it really felt like I was just talking to Jason, and I really enjoyed that.

This experience led me to think that I should do more streaming, so I've taken the opportunity to set up a twitch account and already published a first two-hour stream of me working on a feature for TanStack Query v5. You can watch the recording on YouTube. I'm happy that people like this form of my content as well, and I'm looking forward to doing more of it next year.

Other online appearances

I've further been on:

I've also more than quadrupled my twitter account this year, which is still astonishing to me, as I'm not doing anything different than last year. I guess the bigger you already are, the easier it is to gain new followers. I'm glad that I am doing this by hopefully providing valuable content that people like to read (and watch). πŸ˜„οΈ

Rewriting my blog

Yeah, that didn't happen, and it's also not going to happen. πŸ˜‚ I've got better things to do, and the blog runs just fine. I'd rather add more content than rewrite the whole thing.

Looking at the numbers for 2022 (stats are public), my articles have been read over 1 million times, which is just crazy:

Unique visitors: 569k(+558%), Total page views: 1.1M(+700%)

Again, this shows that people are interested in the content I'm producing, and I'm really happy about that. 😊

2023

I'm sure 2023 will have some exciting things in store for me. I'm aware that I am incredibly lucky to be where I am right now. I'm also trying to create luck for myself by "doing and telling". If that doesn't mean anything to you, make sure to read this great blog post by swyx about how to create luck. It's from 2020, but I've only just read it sometime this year.

History has shown that I'm bad at predicting the future, so I'm not trying to do that. I'm just going to keep doing what I'm doing, and see where it takes me. Happy new year!


That's it for today. Feel free to reach out to me on twitter if you have any questions, or just leave a comment below. ⬇️

Β© 2023 by TkDodo's blog. All rights reserved.
Theme by LekoArts