From 72e3b27d03d0fab3616174a346559fd413fad76f Mon Sep 17 00:00:00 2001 From: Joe Birch Date: Mon, 13 Jul 2026 12:16:07 +0100 Subject: [PATCH 1/7] Add Buffer case study --- .../content/case-studies/buffer.mdx | 175 ++++++++++++++++++ .../case-studies/buffer_youtube_thumbnail.jpg | Bin 0 -> 96050 bytes 2 files changed, 175 insertions(+) create mode 100644 packages/documentation/content/case-studies/buffer.mdx create mode 100644 packages/documentation/content/case-studies/buffer_youtube_thumbnail.jpg diff --git a/packages/documentation/content/case-studies/buffer.mdx b/packages/documentation/content/case-studies/buffer.mdx new file mode 100644 index 00000000..6683d64c --- /dev/null +++ b/packages/documentation/content/case-studies/buffer.mdx @@ -0,0 +1,175 @@ +--- +title: "How Buffer Built Its Public GraphQL API on Top of Its Internal Schema" +excerpt: + "Buffer is a social media workspace that lets you plan, publish, and analyze posts and comments + across 10+ social networks. After closing its public REST API back in 2019, Buffer has been + rebuilding its public offering on GraphQL." +category: Social Media +date: 2026-07-13 +authors: + - name: Joe Birch + position: Staff Engineer & API Lead + avatar: https://avatars.githubusercontent.com/u/3879281?v=4 +--- + +import { ContactButton } from "@hive/design-system/contact-us"; + +import { DocsIcon, LargeCallout } from "#components/large-callout"; +import { Lede } from "#components/lede"; + + + [Buffer](https://buffer.com/) is a social media workspace that lets you plan, + publish, and analyze posts and comments across 10+ social networks including + LinkedIn, Facebook, Instagram, Bluesky, and several others. The company used + to have a public REST API, but closed it back in 2019, and has since been deep + in migrating everything internally to GraphQL, and the [Public + API](https://buffer.com/api) has been the next step on that journey. After + over 45K API clients and 3.6M posts being created through it, Buffer is + continuing to build on its Public API to position its API as the product. + + +[![How to Build on Buffer's New API](./buffer_youtube_thumbnail.jpg)](https://www.youtube.com/watch?v=lgB0HMkbx34) + +## Challenges + +Buffer wasn't building this from scratch, as there was already an established internal GraphQL API +powering its own apps, so the work wasn't about creating something new but about getting the +existing API ready to safely expose to the public. THis shaped a lot of the decisions that followed, +because opening up something that had only ever been built with an internal audience in mind meant +it needed to hold up to external use without becoming a separate thing to maintain. + +In the long term, Buffer wants the API to be public by default, but the team didn't want to open +everything up on day one. So to start with, they set out to expose a smaller subset of the schema, +while rolling out API usage and getting a feel for how it was being used in practice. This meant +they needed a way to make parts of the existing schema public while keeping the rest internal, +without closing the door on that longer-term goal. + +They also wanted to avoid maintaining separate schemas for public and internal use, as keeping two +in sync would have been a constant source friction, so the public API needed to give access to part of +Buffer's existing schema rather than a different version of it. + +When it comes to the schema itself and the contract it defines, changing something internally now becomes very different from +changing something that's been exposed externally. Internally, a change can be made and +they can update everything that depends on it, but once something is public it can't be changed as freely. This meant that the team needed to start treating +those changes with a lot more process, and without having access to the same level of communication that they have internally. + +There were also two different types of API access to support: personal access, where someone uses +the API to interact with their own Buffer account, and third-party integrations that perform actions +on behalf of other people's Buffer accounts. Supporting both meant being really clear about how +access is granted and scoped, so that an integration acting for other people works differently to +someone using the API against their own account. + +On top of all of this, GraphQL introduces a lot of new attack vectors to account for. Because +opening up the API means queries can be expensive or malicious, Buffer needed to understand that +surface and put the right protections in place before letting anyone in. + +## Architecture + +Buffer uses a single schema for its API, and while each domain lives in its own GraphQL files +internally, these are merged together so that clients can access everything in one place. This keeps +things organized on Buffer's side while giving external developers a single, unified schema to work +against. + +To decide what actually gets exposed, the team created their own custom directive, `@public`, which +controls what external clients are able to access and also determines what shows up in Buffer's +external tooling. So rather than keeping a separate list of what's public elsewhere, the schema +itself is the source of truth and anything without `@public` stays private. This gives the +team flexibility in what they want to expose - for example, they may wish to expose a whole type, or +only certain fields within it. + +`@public` also requires scopes to be defined, which means that when an integration wants to perform +an action, it can request only the scopes it needs for what it's actually trying to do, keeping +access tied closely to intent. + +Alongside this, Buffer uses `@experimental`, `@preview` and `@stable` directives to signal how far +along each part of the API is, and these let the team expose new operations early and build in +public. This allows developers to start working with something while it's still evolving, giving Buffer the space to be +clear about how stable it is and what clients can rely on. This allows the team to expose functionality +through the API alongside features landing in the product, while still being able to iterate on them +without a strict contract in place. + +Because the schema drives all of this, Buffer has been able to build automated tooling on top of it. This means that +whenever the schema changes, an updated [GraphiQL explorer](https://developers.buffer.com/explorer.html), [schema documentation](https://developers.buffer.com/reference.html), and +[schema changelog](https://developers.buffer.com/changelog.html) are automatically published to the [Developer Portal](https://developers.buffer.com), and the schema is published to Hive's +registry too. This means the external tooling is always in sync with the schema without any manual work, +while Hive gives the team a live view of how that schema is actually being used through its Insights and Schema Explorer. + +For rate limiting, Buffer takes a tier-based approach that depends on the account's plan, along with +a trusted partner status for integrations they've verified. This lets them apply limits that are +appropriate for different types of access, as opposed to putting a single blanket limit on everyone. + +On the security side, opening up a GraphQL API means protecting against queries that could be expensive or +abused. Buffer achieves this through a combination of complexity scoring, depth limiting, alias +limiting, token limiting, and pagination limiting. All together, this keep queries within reasonable +bounds and guards the API against both accidental and malicious load. + +## Implementation + +Buffer uses Hive to understand its API traffic and usage, all the way down to the field level, which +means they can see exactly which parts of the schema are being used, and by who, rather than just how much traffic the API is getting. + +The private beta of the API shipped in early 2026, and this is when Buffer rolled out Hive usage. +Starting with the beta gave the team a controlled environment to get everything set up and make sure +they were capturing the data they needed before opening things up more widely. + +The private beta was really about being able to roll things out incrementally, and the +`@experimental`, `@preview` and `@stable` Directives are a big part of how Buffer does that. +Rather than hiding an operation until it's completely finished, they can expose it early as +experimental, gather real usage and feedback and then promote it through `@preview` to `@stable` as +confidence grows. This means the team is building in public and shipping iteratively, as opposed to +waiting for everything piece to be finished before anyone can use it. Since opening the API, they’ve +already added new operations around features such as Ideas and Insights, with more coming soon. + +To start with, Buffer onboarded a small group of trusted partners to build against the API. Keeping +this group small meant they could observe how it was being used, spot the gaps, and +make changes before opening things up any further. In these early stages only external traffic was +sent to Hive, which kept things simple and let the team easily monitor how external clients were +using the API, without affecting Buffer's internal systems through additional tooling. + +Once things were operating smoothly, Buffer added internal traffic during the beta too, which mean that +everything was now flowing into the same place. To resolve this they needed to be able +to tell the two sources of traffic apart, so they made sure every client is easily identifiable as either +internal or external. That distinction matters because the two tell them very different things, as +external usage shows how developers are adopting the API while internal usage reflects Buffer's own +apps, and mixing them would muddy both. Buffer worked with the team at Hive to create +improved filtering for exactly this, which gave them much better visibility when moving between +internal and external usage and made the data far more useful for the decisions they wanted to make. + +Being able to understand usage has allowed Buffer to move quickly and with less friction when it +comes to making decisions that involve API clients. Some examples of these include: + +- While the API was in Beta, the team needed to migrate the structure of some input types before the + stable release, and were able to do this without affecting clients. Using Hive, Buffer was able to + identify what clients were using these fields and then automate an email for them to migrate. +- The team has been refactoring internal operations so that they are ready for public consumption, + and using Hive to know what internal clients are using these (along with what they are using) is + what enabled Buffer to ship extending Ideas support so soon after the initial release of the + Public API. +- Identifying an internal operation that was silently failing over 90% of the time, due to it being + called too early in the app start-up. Buffer identified this in Hive and was able to ship a fix. + +For breaking change detection, Buffer currently runs its own internal checks rather than using +Hive's, and while this works well for them today, it's something they plan to migrate over to Hive +eventually so that more of this lives in one place. + +## Looking Ahead + +The longer-term goal for Buffer is to bridge the gap between the in-app experience of Buffer and the +Public API. This means that no matter where you interact with Buffer, the same experience and +functionality will be available, allowing users to choose where they want to use Buffer. + +As Buffer expands the surface of their Public API, there are plans to invest further into the +Developer Tooling and Experience, while also expanding on functionality based on feedback from the +community. If you’re interested in building with Buffer on their Public API, [sign up](https://buffer.com/) today! + +} + heading="Elevate Your GraphQL Journey" + icon={} + variant="primary" +> + Open up your GraphQL API with confidence like Buffer. Whether you're exposing + an internal schema to the public, tracking field-level usage across clients, + or evolving your API without breaking consumers, Hive gives you the visibility + and tooling to do it safely. + diff --git a/packages/documentation/content/case-studies/buffer_youtube_thumbnail.jpg b/packages/documentation/content/case-studies/buffer_youtube_thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc397242bbd88592c5fd68b1da87fc2e32a1a234 GIT binary patch literal 96050 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 A8UO$Q literal 0 HcmV?d00001 From 25147b606125530711510e9fe5847a0787616565 Mon Sep 17 00:00:00 2001 From: Joe Birch Date: Tue, 21 Jul 2026 13:14:33 +0100 Subject: [PATCH 2/7] Apply suggestion from @jdolle Co-authored-by: jdolle <1841898+jdolle@users.noreply.github.com> --- packages/documentation/content/case-studies/buffer.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/documentation/content/case-studies/buffer.mdx b/packages/documentation/content/case-studies/buffer.mdx index 6683d64c..8b17fd8d 100644 --- a/packages/documentation/content/case-studies/buffer.mdx +++ b/packages/documentation/content/case-studies/buffer.mdx @@ -34,7 +34,7 @@ import { Lede } from "#components/lede"; Buffer wasn't building this from scratch, as there was already an established internal GraphQL API powering its own apps, so the work wasn't about creating something new but about getting the -existing API ready to safely expose to the public. THis shaped a lot of the decisions that followed, +existing API ready to safely expose to the public. This shaped a lot of the decisions that followed, because opening up something that had only ever been built with an internal audience in mind meant it needed to hold up to external use without becoming a separate thing to maintain. From 5c10ccce3462bc464aae06e69d7a70210cb312d9 Mon Sep 17 00:00:00 2001 From: Joe Birch Date: Tue, 21 Jul 2026 19:07:54 +0100 Subject: [PATCH 3/7] Update buffer.mdx --- .../content/case-studies/buffer.mdx | 196 ++++++------------ 1 file changed, 69 insertions(+), 127 deletions(-) diff --git a/packages/documentation/content/case-studies/buffer.mdx b/packages/documentation/content/case-studies/buffer.mdx index 8b17fd8d..ade27bd1 100644 --- a/packages/documentation/content/case-studies/buffer.mdx +++ b/packages/documentation/content/case-studies/buffer.mdx @@ -30,137 +30,79 @@ import { Lede } from "#components/lede"; [![How to Build on Buffer's New API](./buffer_youtube_thumbnail.jpg)](https://www.youtube.com/watch?v=lgB0HMkbx34) -## Challenges - -Buffer wasn't building this from scratch, as there was already an established internal GraphQL API -powering its own apps, so the work wasn't about creating something new but about getting the -existing API ready to safely expose to the public. This shaped a lot of the decisions that followed, -because opening up something that had only ever been built with an internal audience in mind meant -it needed to hold up to external use without becoming a separate thing to maintain. - -In the long term, Buffer wants the API to be public by default, but the team didn't want to open -everything up on day one. So to start with, they set out to expose a smaller subset of the schema, -while rolling out API usage and getting a feel for how it was being used in practice. This meant -they needed a way to make parts of the existing schema public while keeping the rest internal, -without closing the door on that longer-term goal. - -They also wanted to avoid maintaining separate schemas for public and internal use, as keeping two -in sync would have been a constant source friction, so the public API needed to give access to part of -Buffer's existing schema rather than a different version of it. - -When it comes to the schema itself and the contract it defines, changing something internally now becomes very different from -changing something that's been exposed externally. Internally, a change can be made and -they can update everything that depends on it, but once something is public it can't be changed as freely. This meant that the team needed to start treating -those changes with a lot more process, and without having access to the same level of communication that they have internally. - -There were also two different types of API access to support: personal access, where someone uses -the API to interact with their own Buffer account, and third-party integrations that perform actions -on behalf of other people's Buffer accounts. Supporting both meant being really clear about how -access is granted and scoped, so that an integration acting for other people works differently to -someone using the API against their own account. - -On top of all of this, GraphQL introduces a lot of new attack vectors to account for. Because -opening up the API means queries can be expensive or malicious, Buffer needed to understand that -surface and put the right protections in place before letting anyone in. - -## Architecture - -Buffer uses a single schema for its API, and while each domain lives in its own GraphQL files -internally, these are merged together so that clients can access everything in one place. This keeps -things organized on Buffer's side while giving external developers a single, unified schema to work -against. - -To decide what actually gets exposed, the team created their own custom directive, `@public`, which -controls what external clients are able to access and also determines what shows up in Buffer's -external tooling. So rather than keeping a separate list of what's public elsewhere, the schema -itself is the source of truth and anything without `@public` stays private. This gives the -team flexibility in what they want to expose - for example, they may wish to expose a whole type, or -only certain fields within it. - -`@public` also requires scopes to be defined, which means that when an integration wants to perform -an action, it can request only the scopes it needs for what it's actually trying to do, keeping -access tied closely to intent. - -Alongside this, Buffer uses `@experimental`, `@preview` and `@stable` directives to signal how far -along each part of the API is, and these let the team expose new operations early and build in -public. This allows developers to start working with something while it's still evolving, giving Buffer the space to be -clear about how stable it is and what clients can rely on. This allows the team to expose functionality -through the API alongside features landing in the product, while still being able to iterate on them -without a strict contract in place. - -Because the schema drives all of this, Buffer has been able to build automated tooling on top of it. This means that -whenever the schema changes, an updated [GraphiQL explorer](https://developers.buffer.com/explorer.html), [schema documentation](https://developers.buffer.com/reference.html), and -[schema changelog](https://developers.buffer.com/changelog.html) are automatically published to the [Developer Portal](https://developers.buffer.com), and the schema is published to Hive's -registry too. This means the external tooling is always in sync with the schema without any manual work, -while Hive gives the team a live view of how that schema is actually being used through its Insights and Schema Explorer. - -For rate limiting, Buffer takes a tier-based approach that depends on the account's plan, along with -a trusted partner status for integrations they've verified. This lets them apply limits that are -appropriate for different types of access, as opposed to putting a single blanket limit on everyone. - -On the security side, opening up a GraphQL API means protecting against queries that could be expensive or -abused. Buffer achieves this through a combination of complexity scoring, depth limiting, alias -limiting, token limiting, and pagination limiting. All together, this keep queries within reasonable -bounds and guards the API against both accidental and malicious load. - -## Implementation - -Buffer uses Hive to understand its API traffic and usage, all the way down to the field level, which -means they can see exactly which parts of the schema are being used, and by who, rather than just how much traffic the API is getting. - -The private beta of the API shipped in early 2026, and this is when Buffer rolled out Hive usage. -Starting with the beta gave the team a controlled environment to get everything set up and make sure -they were capturing the data they needed before opening things up more widely. - -The private beta was really about being able to roll things out incrementally, and the -`@experimental`, `@preview` and `@stable` Directives are a big part of how Buffer does that. -Rather than hiding an operation until it's completely finished, they can expose it early as -experimental, gather real usage and feedback and then promote it through `@preview` to `@stable` as -confidence grows. This means the team is building in public and shipping iteratively, as opposed to -waiting for everything piece to be finished before anyone can use it. Since opening the API, they’ve -already added new operations around features such as Ideas and Insights, with more coming soon. - -To start with, Buffer onboarded a small group of trusted partners to build against the API. Keeping -this group small meant they could observe how it was being used, spot the gaps, and -make changes before opening things up any further. In these early stages only external traffic was -sent to Hive, which kept things simple and let the team easily monitor how external clients were -using the API, without affecting Buffer's internal systems through additional tooling. - -Once things were operating smoothly, Buffer added internal traffic during the beta too, which mean that -everything was now flowing into the same place. To resolve this they needed to be able -to tell the two sources of traffic apart, so they made sure every client is easily identifiable as either -internal or external. That distinction matters because the two tell them very different things, as -external usage shows how developers are adopting the API while internal usage reflects Buffer's own -apps, and mixing them would muddy both. Buffer worked with the team at Hive to create -improved filtering for exactly this, which gave them much better visibility when moving between -internal and external usage and made the data far more useful for the decisions they wanted to make. - -Being able to understand usage has allowed Buffer to move quickly and with less friction when it -comes to making decisions that involve API clients. Some examples of these include: - -- While the API was in Beta, the team needed to migrate the structure of some input types before the - stable release, and were able to do this without affecting clients. Using Hive, Buffer was able to - identify what clients were using these fields and then automate an email for them to migrate. -- The team has been refactoring internal operations so that they are ready for public consumption, - and using Hive to know what internal clients are using these (along with what they are using) is - what enabled Buffer to ship extending Ideas support so soon after the initial release of the - Public API. -- Identifying an internal operation that was silently failing over 90% of the time, due to it being - called too early in the app start-up. Buffer identified this in Hive and was able to ship a fix. - -For breaking change detection, Buffer currently runs its own internal checks rather than using -Hive's, and while this works well for them today, it's something they plan to migrate over to Hive -eventually so that more of this lives in one place. +Buffer wasn't building this from scratch, as there was already an established internal GraphQL API powering its own apps. The work was really about getting that existing API ready to safely expose to the public, and a lot of the decisions that followed came from opening up something that had only ever been built with an internal audience in mind, without it becoming a separate thing to maintain. + +## Exposing part of a schema without splitting it in two + +In the long term Buffer wants the API to be public by default, but the team were not in a position to open everything up on day one. So to start with, they needed to expose a smaller subset of the schema while rolling out API usage and getting a feel for how it was being used in practice. The harder constraint was that they didn't want to maintain separate schemas for public and internal use, as keeping two in sync would have been a constant source of synchronization and rework. This meant that the public API needed to be a view onto the existing schema rather than a copy of it. + +Buffer uses a single schema for its API, and while each domain lives in its own GraphQL files internally, these are merged together so that clients can access everything in one place. To decide what gets exposed, the team created their own custom directive, `@public`, which controls what external clients are able to access and also determines what shows up in Buffer's external tooling. So rather than keeping a separate list of what's public somewhere, the schema itself is the source of truth and anything without `@public` simply stays internal. This gives the team flexibility in what they expose, so they can open up a whole type or only certain fields within it. + +While Hive offers [schema contracts](https://the-guild.dev/graphql/hive/docs/schema-registry/contracts) for this kind of public and internal split, contracts are currently supported for federated projects only. Buffer runs a single, non-federated schema, so they weren't a fit here. On top of that, Buffer needed more than filtering a schema into subsets, as the same mechanism also had to carry required scopes, which the custom directive handles in one place. It's an area the team would happily revisit if contracts grow to cover non-federated graphs. + +## Granting the right access to the right clients + +There are two different types of API access Buffer needed to support: personal access, where someone uses the API to interact with their own Buffer account, and third-party integrations that perform actions on behalf of other people's Buffer accounts. Supporting both meant being clear about how access is granted and scoped, so that an integration acting for other people works differently to someone using the API against their own account. + +Because of this, `@public` also requires scopes to be defined, which means that when an integration wants to perform an action it can request only the scopes it needs for what it's actually trying to do, keeping access tied closely to intent. Tying scopes to the same directive that decides what's public keeps the two concerns together, so exposing something and defining how it can be accessed happen in the same place rather than drifting apart over time. + +## Shipping to the API while features are still moving + +Changing something internally is very different from changing something that's been exposed externally, because internally a change is Buffer's to make and they can update everything that depends on it, but once something is public and developers are building on it, it can't be changed as freely, and there isn't the same line of communication with consumers that the team has internally. The risk was that a strict public contract would slow down shipping, or that features would land in the product long before they reached the API. + +To handle this, Buffer uses `@experimental`, `@preview` and `@stable` directives to signal how far along each part of the API is, which lets the team expose new operations early and build in public, so developers can start working with something while it's still evolving and Buffer can be clear about how stable it is and what they can rely on. This means functionality can go out through the API alongside features landing in the product, while the team keeps room to iterate without a strict contract locked in from day one. Since opening the API they've already added new operations around features such as Ideas and Insights, with more coming soon. + +## Building the developer portal and tooling + +A public API needs somewhere for developers to explore it and keep up with how it changes. Buffer looked at existing solutions first, but couldn't find anything customizable that also worked well with GraphQL, so the developer portal was built from scratch. + +The most complex part was building Buffer's own documentation and changelog generator. With a schema contract defined, GraphQL opens up a lot of possibilities for automating change management, and the team wanted to lean into that as much as possible, so whenever the schema changes an updated [GraphiQL explorer](https://developers.buffer.com/explorer.html), [documentation](https://developers.buffer.com/reference.html), and [changelog](https://developers.buffer.com/changelog.html) are automatically published to the [Developer Portal](https://developers.buffer.com), and the schema is published to Hive's registry too. The schema being the contract is what makes all of that automation possible, so the more you can lean on it, the less change management you end up doing by hand. Joe Birch went into more detail on this in a [talk at GraphQL Conf 2025](https://graphql.org/conf/2025/schedule/e6262da79f7c90fd01a2a13570d6b6bc/). + +## Protecting an open GraphQL endpoint + +Opening up GraphQL introduces a lot of new attack vectors to account for, because queries can be expensive or malicious in ways an internal-only API never really has to worry about, so Buffer wanted to understand that surface and put the right protections in place before letting anyone in. + +On the security side, Buffer guards the API through a combination of complexity scoring, depth limiting, alias limiting, token limiting, and pagination limiting, which together keep queries within reasonable bounds and protect against both accidental and malicious load. Alongside this, rate limiting takes a tier-based approach that depends on the account's plan, along with a trusted partner status for integrations the team has verified, which lets them apply limits appropriate for different types of access rather than putting a single blanket limit on everyone. + +## Understanding who uses what + +With a public API, the hard part is knowing how it's actually being used, and without that, decisions like changing or removing a field come down to guesswork. Buffer needed to see usage down to the field level, not just overall traffic. + +Buffer uses Hive for this, all the way down to the field level, which means the team can see exactly which parts of the schema are being used and by which clients. The Schema Explorer is easy to navigate, and being able to see precisely who is using what, and how often, has been genuinely useful. It's changed the kind of decisions the team can make quickly and with less friction: + +- While the API was in beta, the team needed to migrate the structure of some input types before the stable release, and were able to do this without affecting clients. Using Hive, Buffer identified which clients were using these fields and then automated an email prompting them to migrate. +- The team has been refactoring internal operations so they're ready for public consumption, and using Hive to know which internal clients are calling these, along with what they're using, is what enabled Buffer to ship extended Ideas support so soon after the initial release of the Public API. +- Buffer identified an internal operation that was silently failing over 90% of the time, because it was being called too early in the app start-up, and was able to spot this in Hive and ship a fix. + +## Telling internal and external traffic apart + +When Buffer started ingesting internal traffic alongside external, it became difficult to tell what Hive traffic was split between the two. Getting an external-only view meant manually selecting each internal client in the filter, which isn't ideal, and there was no easy way to save those filters for later use. + +Buffer shared this feedback with The Guild, and one of their designers hopped on a call, arriving with a prototype that already solved the problem. A few days later it shipped to production, and it now lets the team easily switch between internal and external traffic, as well as filter between internal web and mobile traffic. It's a good example of how the two teams work together, where a specific bit of friction on Buffer's side turned into a shipped feature quickly, and it's worth noting the insights filters improvement came directly out of that conversation. + +## Migrating to Yoga + +Buffer had been using Apollo Server since it first adopted GraphQL, but had always heard about the benefits of the alternatives. Yoga stood out on performance alone, and having access to the improvements available in Hive through the use of Yoga made the switch even more appealing. Having access to OpenTelemetry data and improved insights will allow Buffer to make even more informed decisions for their API, as well as debug issues for users as they arise. + +In the near future, Buffer will be exploring GraphQL Subscriptions for internal real-time functionality, which Yoga makes even simpler as it ships with built-in support. + +## Where the gaps are + +Beyond the Explorer, having API access to Hive has been essential. Buffer is currently building its own deprecation triaging system to stay on top of deprecations for internal clients, which would have been very difficult without an API. + +Buffer is also missing alerts and proactive monitoring, so right now the team has to check Hive manually when they'd rather get notifications when certain events occur, such as error rate or performance changes. Custom policies would help too, as Buffer has specific standards defined for its GraphQL schema with custom ESLint checks written for them, and without a way to express those in Hive, the team is keeping all its checks in one place for now. + +Buffer limits requests using complexity scoring, but there's no way to see the complexity score for requests in Hive, so it would be great to be able to configure complexity values and then view that data in Hive alongside everything else. Right now the team tracks this using their own internal solutions, which puts API observability data in more than one place. + +Hive has already improved Buffer's experience when it comes to identifying clients, but the team has run into some limits with how little data there is for each client beyond its name and version. Being able to add extra data or tags to clients, and filter by them, would make the observability even more flexible. + +There are a couple of oppourtunities for Buffer to utilise Hive features. One is schema checks in Hive, which would mean the team could move away from their own implementation of breaking-change checks in GitHub Actions. The other is building Buffer's own MCP server on top of Hive's API, so that folks inside Buffer can easily get at data about the API through Claude. ## Looking Ahead -The longer-term goal for Buffer is to bridge the gap between the in-app experience of Buffer and the -Public API. This means that no matter where you interact with Buffer, the same experience and -functionality will be available, allowing users to choose where they want to use Buffer. +The longer-term goal for Buffer is to bridge the gap between the in-app experience and the Public API, so that no matter where you interact with Buffer, the same experience and functionality are available, and users can choose where they want to use Buffer. A lot of this is about feature parity, as there's plenty of existing functionality the team hasn't exposed through the API yet, and the aim is to expose new features by default going forward. -As Buffer expands the surface of their Public API, there are plans to invest further into the -Developer Tooling and Experience, while also expanding on functionality based on feedback from the -community. If you’re interested in building with Buffer on their Public API, [sign up](https://buffer.com/) today! +As the surface of the Public API expands, Buffer plans to invest further in developer tooling and experience, while continuing to build on functionality based on feedback from the community. If you're interested in building with Buffer on its Public API, [sign up](https://buffer.com/) today! } From 490b6bbc986a390ef9587b74a36963a8043fbb82 Mon Sep 17 00:00:00 2001 From: Laurin Quast Date: Wed, 22 Jul 2026 20:04:57 +0200 Subject: [PATCH 4/7] add buffer logo --- .../src/components/case-studies/company-logos.tsx | 2 ++ .../src/components/company-logos/index.tsx | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/documentation/src/components/case-studies/company-logos.tsx b/packages/documentation/src/components/case-studies/company-logos.tsx index 9b972254..baf1ffdc 100644 --- a/packages/documentation/src/components/case-studies/company-logos.tsx +++ b/packages/documentation/src/components/case-studies/company-logos.tsx @@ -1,4 +1,5 @@ import { + BufferLogo, HemnetLogo, SoundYXZLogo, ToastLogo, @@ -10,6 +11,7 @@ import { * Take note that these logos may have different dimensions than logos used elsewhere. */ export const companyLogos = { + buffer: , hemnet: , "sound-xyz": , toast: , diff --git a/packages/documentation/src/components/company-logos/index.tsx b/packages/documentation/src/components/company-logos/index.tsx index eae98dd7..cda2693d 100644 --- a/packages/documentation/src/components/company-logos/index.tsx +++ b/packages/documentation/src/components/company-logos/index.tsx @@ -375,3 +375,14 @@ export function TrivagoLogo(props: LogoProps) { ); } + +export function BufferLogo(props: LogoProps) { + return ( + + + + ); +} From c242a4d1dd644616ebb1ee9ad803ba2f998dd39f Mon Sep 17 00:00:00 2001 From: Laurin Quast Date: Wed, 22 Jul 2026 20:09:59 +0200 Subject: [PATCH 5/7] link to some github issues --- packages/documentation/content/case-studies/buffer.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/documentation/content/case-studies/buffer.mdx b/packages/documentation/content/case-studies/buffer.mdx index ade27bd1..9de62971 100644 --- a/packages/documentation/content/case-studies/buffer.mdx +++ b/packages/documentation/content/case-studies/buffer.mdx @@ -88,11 +88,11 @@ In the near future, Buffer will be exploring GraphQL Subscriptions for internal ## Where the gaps are -Beyond the Explorer, having API access to Hive has been essential. Buffer is currently building its own deprecation triaging system to stay on top of deprecations for internal clients, which would have been very difficult without an API. +Beyond the Explorer, having API access to Hive has been essential. Buffer is currently building its own deprecation triaging system to stay on top of [deprecations for internal clients](https://github.com/graphql-hive/console/issues/8245), which would have been very difficult without an API. -Buffer is also missing alerts and proactive monitoring, so right now the team has to check Hive manually when they'd rather get notifications when certain events occur, such as error rate or performance changes. Custom policies would help too, as Buffer has specific standards defined for its GraphQL schema with custom ESLint checks written for them, and without a way to express those in Hive, the team is keeping all its checks in one place for now. +Buffer is also [missing alerts and proactive monitoring(https://github.com/graphql-hive/console/issues/253), so right now the team has to check Hive manually when they'd rather get notifications when certain events occur, such as error rate or performance changes. Custom policies would help too, as Buffer has specific standards defined for its GraphQL schema with custom ESLint checks written for them, and without a way to express those in Hive, the team is keeping all its checks in one place for now. -Buffer limits requests using complexity scoring, but there's no way to see the complexity score for requests in Hive, so it would be great to be able to configure complexity values and then view that data in Hive alongside everything else. Right now the team tracks this using their own internal solutions, which puts API observability data in more than one place. +Buffer limits requests using complexity scoring, but there's [no way to see the complexity score for requests in Hive](https://github.com/graphql-hive/console/issues/7803), so it would be great to be able to configure complexity values and then view that data in Hive alongside everything else. Right now the team tracks this using their own internal solutions, which puts API observability data in more than one place. Hive has already improved Buffer's experience when it comes to identifying clients, but the team has run into some limits with how little data there is for each client beyond its name and version. Being able to add extra data or tags to clients, and filter by them, would make the observability even more flexible. From 92c91a2042ee41f1ec706041298bea69fb6f2c86 Mon Sep 17 00:00:00 2001 From: Laurin Quast Date: Wed, 22 Jul 2026 20:15:48 +0200 Subject: [PATCH 6/7] more links --- packages/documentation/content/case-studies/buffer.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/documentation/content/case-studies/buffer.mdx b/packages/documentation/content/case-studies/buffer.mdx index 9de62971..bd5f4762 100644 --- a/packages/documentation/content/case-studies/buffer.mdx +++ b/packages/documentation/content/case-studies/buffer.mdx @@ -82,7 +82,7 @@ Buffer shared this feedback with The Guild, and one of their designers hopped on ## Migrating to Yoga -Buffer had been using Apollo Server since it first adopted GraphQL, but had always heard about the benefits of the alternatives. Yoga stood out on performance alone, and having access to the improvements available in Hive through the use of Yoga made the switch even more appealing. Having access to OpenTelemetry data and improved insights will allow Buffer to make even more informed decisions for their API, as well as debug issues for users as they arise. +Buffer had been using Apollo Server since it first adopted GraphQL, but had always heard about the benefits of the alternatives. [Yoga stood out on performance alone](https://the-guild.dev/graphql/yoga-server/docs/comparison#graphql-yoga-and-apollo-server), and having access to the improvements available in Hive through the use of Yoga made the switch even more appealing. Having access to OpenTelemetry data and improved insights will allow Buffer to make even more informed decisions for their API, as well as debug issues for users as they arise. In the near future, Buffer will be exploring GraphQL Subscriptions for internal real-time functionality, which Yoga makes even simpler as it ships with built-in support. From 2751f7929b5cebbd370c2acd37b832e798bf6b5c Mon Sep 17 00:00:00 2001 From: Laurin Quast Date: Wed, 22 Jul 2026 20:22:01 +0200 Subject: [PATCH 7/7] update date --- packages/documentation/content/case-studies/buffer.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/documentation/content/case-studies/buffer.mdx b/packages/documentation/content/case-studies/buffer.mdx index bd5f4762..fd466364 100644 --- a/packages/documentation/content/case-studies/buffer.mdx +++ b/packages/documentation/content/case-studies/buffer.mdx @@ -5,7 +5,7 @@ excerpt: across 10+ social networks. After closing its public REST API back in 2019, Buffer has been rebuilding its public offering on GraphQL." category: Social Media -date: 2026-07-13 +date: 2026-07-22 authors: - name: Joe Birch position: Staff Engineer & API Lead