The Evolution of urql
react-fast-compare all the way to large-scale libraries for complex matters such as data visualization (a la
victory) and data fetching (a la
Within the consulting industry, things change quickly – we work with a broad range of clients of varying sizes with varying needs. Similarly, most developers that work within the web ecosystem know that the landscape changes quickly – from evolving browser technologies and specifications to the regular churn of libraries and frameworks. From helping our clients solve novel problems across varying industries and domains to keeping up with the ever-evolving web landscape, evolution is in our blood at Formidable.
In this post, we want to share how the GraphQL client, urql, has evolved whilst developed and maintained at Formidable, and how we see it evolving into the future.
urql was created at Formidable at the start of 2018 with a goal of making GraphQL consumption in React apps simpler and more approachable, without losing the powerful features you’d expect to find in a robust GraphQL client. urql provides sensible defaults and is architected around a notion of “exchanges” that allows the urql team to ship a set of exchanges that allows the end-user to choose which additional behavior to add to their GraphQL client, and allows end-users to tap into the urql pipeline and add their own custom behavior. At the time of creation, the GraphQL client landscape consisted of Apollo Client and Relay – which are wonderful contributions to the space – but came with a slightly larger learning curve and less flexibility.
Another goal of urql was to simplify caching. urql’s default caching exchange is document-based, ideal for static content. However, urql also ships a sophisticated graph-based exchange known as graphcache that does granular, entity-level caching that’s more tailored for dynamic applications.
As a React client, urql has evolved over the years with React – migrating from a render prop pattern to a more modern hooks-based approach. In later years, urql has further evolved to be more than just a React client, with support for Preact, Svelte, and Vue! With an extendible core, extending urql to support other frontend frameworks is a matter of writing the bindings between the urql core and said framework, allowing urql to evolve as the frontend landscape evolves.
The urql library has seen wide adoption throughout the community and is in production in several of Formidable's clients, including The Atlantic and PUMA. urql has found itself in boilerplates, GraphQL-focused talks, and blog posts introducing front-end developers to GraphQL. Overall, urql has grown and evolved to find itself as one of the leading GraphQL clients in the broader ecosystem today.
From urql’s infancy, then-Formidables Phil Pluckthun and Jovi De Croock have been amongst the core contributors to the urql project, and in later years have been the maintainers and primary contributors. Even after their departure from Formidable in mid/late 2021, Phil and Jovi have continued to keep urql moving forward, serving as urql’s core ongoing maintainers.
urql has always accepted community contributions just like our entire lineup of OSS projects here at Formidable. As Formidable and urql evolve, urql has grown to be a project that is driven more by the urql community, including Phil and Jovi, than by Formidable itself. Because of this, and our commitment to the ethos of OSS, we are using this opportunity to kick off what we’re calling Formidable OSS Partnerships – a program where Formidable will move certain Formidable OSS projects into community-driven organizations in circumstances where we feel that said projects will continue to grow more organically through community contributions and development.
For urql specifically, this entails a few things:
- urql and its packages/exchanges will continue to be published to NPM under the same names, so no action is needed on the end of urql library users.
- urql, and its sibling repositories, will be moved out of Formidable’s GitHub organization and into a dedicated GitHub organization urql GraphQL. Therefore, the new URL for the urql monorepo on GitHub is https://github.com/urql-graphql/urql. This has no impact on existing issues or pull requests filed against urql, it’s merely a change in git remote origin.
- Formidable will continue to contribute to and support urql, but project direction and roadmap will no longer be controlled solely by Formidable, and instead will be driven by the urql community and the lead maintainers of urql. We believe this will allow urql to grow faster and be more responsive to community feedback and needs.
We’ve invested heavily in urql and are committed to seeing it succeed for the foreseeable future. For us, this means allowing urql to be driven more by the urql community than by Formidable itself, and setting up a structure for this to happen successfully.
We have the utmost faith in Phil and Jovi, and believe they will continue driving urql in the direction of greatness. We also believe that this partnership will be much more sustainable in the long term, and will allow Phil, Jovi, and other community members to be more integrally involved in the direction of urql. We couldn’t be more excited about this partnership, and future partnerships to come.
We're glad that Formidable is taking this leap with us and letting a project go into full Open Source ownership, where everyone can support and benefit from urql without any questions about its longevity and direction. Phil and Jovi
We will still be contributing to urql, using urql in our projects and workshops, talking about urql in blog posts and at conferences, and be urql’s biggest fan. We’re just evolving to give urql the best foundation for a bright, successful, and endured future!