Chats About urql: With Max Stoiber

March 23, 2021

urql is our highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow. As part of our larger effort to support the community with a flexible GraphQL client in the ecosystem we're also growing urql's community. In this interview series we're chatting with ambassadors of our community on how they discovered and why they're supporting urql.

For our first part, we're chatting with Max Stoiber, a JavaScript engineer from Vienna in Austria, who's a well known constant in the React community, co-creator of styled-components, serial co-founder of Spectrum, Changefeed, and Feedback Fish, and specialty coffee geek.

Max Stoiber

Hi, Max! We're excited to have you be the first to chat with us in this series about urql. We know you're not only an engineer and a maker but also highly adept at making coffee. What coffee bean are you having this week?

I've been drinking a lot of Alpha Coffee's El Palto because that's what my favorite local coffeeshop, Kaffemik, uses for their espressos! It's a nice washed Peruvian coffee that goes well with milk.

You always seem to be at the forefront of new developments in the React community and beyond. Your first big project with GraphQL was at Spectrum, right? It was rather new at the time, but something must've convinced you that GraphQL was perfect for a new community platform—evidently there was already prior art around with GitHub moving towards building a public GraphQL API, so what pushed you in that direction in the end?

None of us at Spectrum had ever built an API before, nevermind one used by hundreds of thousands of users. The fact that GraphQL is strictly typed and well-specified gave us confidence to use it. That meant that we could follow its conventions and know we would be on a good path. Worked out well for us!

It seems that as you were moving around from project to project, urql kind of followed you along or rather, you were taking urql with yourself, like at Gatsby. How did you feel about introducing a "newcomer" project to the teams around you when other solutions existed, and what aspect of it made it a convincing option over choosing a more established GraphQL client?

Interestingly, until I announced Bedrock nobody had ever asked me "Why urql?" I've literally never had to enumerate the reasons before! I think that's a testament to the convenient and intuitive APIs that urql has. Most engineers I worked with just went "Ah, nice!" and kept building.

I have used urql for all of my projects over the past two years and love it for four main reasons:

  1. the fantastic developer experience and APIs;
  2. the great extensibility;
  3. the small bundle size;
  4. and the active maintenance. I wrote about this in more detail in my recent post!

Initially you've reached out to us just as our normalized caching was being implemented, helping us to cover all edge cases and making sure it would work for you and your team. Why did you chose urql back then and what motivated you to reach out directly?

I was building an app at GitHub based on Preact and needed the small bundle size and the hooks API. However, I also had caching needs that weren't covered by the default document cache, so I reached out to be an early tester of the normalized cache, which worked out perfectly!

We hear you're now building a new project, "Bedrock", to help SaaS (Software as a Service) founders to build MVPs for their projects more quickly. This seems to be a really natural continuation of your work on React Boilerplate. What need are you trying to fill this time and is that building on how you built your last project, Feedback Fish? I understand you built the first MVP for Feedback Fish in just a single weekend.

I've built multiple SaaS apps, yet every time I have a new idea it takes me weeks to months to build it—because I have to spend weeks implementing the same basic functionality over and over and over again!

That was frustrating me, so I made Bedrock, really for myself to have something to base my own SaaS apps on. However, I quickly realised through conversations with friends that other people could also benefit from it, so I launched a landing page and took pre-orders to gauge interest.

Turns out, a lot of other people are also frustrated by this and are happy for this solution!

And since "Bedrock" builds on GraphQL, why do you think GraphQL is the right choice for most new founders?

The tooling around GraphQL is simply unparalleled. Between Nexus, GraphQL Codegen, and urql I can move way faster with GraphQL than building an API any other way!

You've also recently announced that you'll be supporting early-stage startups as an advisor and investor. It seems that being a young founder yourself, helping other founders is just part of your drive.

It's fun to be a fly on the wall during other startup's journey's. The founders are still the ones building their company day-to-day, but sometimes an outsider can notice (potential) problems ahead of time that the founders might be too busy to see. Honestly, it's really fun, I love doing it!

Obviously, we have a long way to go and are supporting efforts like "Bedrock," which help us to learn more about how GraphQL clients in general, and urql specifically, are used. For you, what's your favourite feature in urql, or do you have a future feature that you're looking forward to?

One feature?! That's impossible to pick, but I guess I'll cheat and say "the exchanges". The fact that I can adjust the way my GraphQL client behaves down to the most core details gives me so much power, I love it!

Is there anything you'd like to tell our core contributors?

Keep rocking!

Thank you so much for your time! We wish you great success with "Bedrock" and we'll see you later on the urql repo!

Related Posts

urql DevTools: Introducing Explorer View

October 17, 2019
In its current state, the urql DevTools make it easy to understand how these responses come in, but you’re still not able to observe your GraphQL data as a whole. We wanted a simpler way for users to see what data their app is currently consuming with a clear overview of which exact query produced which response, without the need to check the network tab manually. We also wanted to see that data update in real time and include any metadata such as cache outcomes as part of the view.

How to urql, Part 1

February 10, 2020
When picking a GraphQL client for React, many default to using Apollo or Relay, but now there’s a new kid on the block rising in popularity over the last year: Its name is urql. It's not as packed with features as other GraphQL clients. Instead, urql aims to be minimal and highly customizable. This blog post series will start by walking you through getting started with urql, and then move on to more advanced topics like subscriptions, normalised caching, etc.

How to urql, Part 2: Authentication & Multiple Users

February 26, 2020
In the last blog-post we covered the basics on how to query and mutate our data; in real-world applications, there's more to it. In this post, we'll cover setting an authentication token and handling multiple users interacting with the same data.