Blog
![Partial caching with defer](/_next/image?url=%2Fimages%2Fblog%2Fpartial-caching.png&w=3840&q=100)
Partial caching with defer
![Graeme Coupar](/_next/image?url=%2Fimages%2Favatars%2Fgraeme.png&w=48&q=75)
Reduce latency and load on slow services
![Announcing Rate Limiting](/_next/image?url=%2Fimages%2Fblog%2Frate-limiting.png&w=3840&q=100)
Announcing Rate Limiting
![Hugo Barrigas](/_next/image?url=%2Fimages%2Favatars%2Fhugo.png&w=48&q=75)
Protect GraphQL APIs with Grafbase Rate Limiting.
![Introducing Node.js runtime support](/_next/image?url=%2Fimages%2Fblog%2Fnodejs-runtime.png&w=3840&q=100)
Introducing Node.js runtime support
![Jakub Wieczorek](/_next/image?url=%2Fimages%2Favatars%2Fjakub.png&w=48&q=75)
![Marc Mettke](/_next/image?url=%2Fimages%2Favatars%2Fmarc.png&w=48&q=75)
Introducing Node.js runtime support
![JWT claims in resolver context](/_next/image?url=%2Fimages%2Fblog%2Fjwt-claims-in-resolver-context.png&w=3840&q=100)
JWT claims in resolver context
![Tom Houlé](/_next/image?url=%2Fimages%2Favatars%2Ftom.png&w=48&q=75)
Expanding the usefulness of custom resolvers
![Graph management improvements to the Grafbase CLI](/_next/image?url=%2Fimages%2Fblog%2Fcli-branch-and-environment-management%2Fcli-branch-and-environment-management.png&w=3840&q=100)
Graph management improvements to the Grafbase CLI
![Julius de Bruijn](/_next/image?url=%2Fimages%2Favatars%2Fjulius.png&w=48&q=75)
Easier ways to manage graphs from CI based workflows and your terminal
![Introducing graphql-lint and gqlint](/_next/image?url=%2Fimages%2Fblog%2Fgraphql-lint.png&w=3840&q=100)
Introducing graphql-lint and gqlint
![Yoav Lavi](/_next/image?url=%2Fimages%2Favatars%2Fyoav.png&w=48&q=75)
A Rust based GraphQL linter crate and CLI
![Introducing the Grafbase Lambda Gateway](/_next/image?url=%2Fimages%2Fblog%2Fgrafbase-lambda-gateway%2Flambda-gateway.png&w=3840&q=100)
Introducing the Grafbase Lambda Gateway
![Julius de Bruijn](/_next/image?url=%2Fimages%2Favatars%2Fjulius.png&w=48&q=75)
Self-host the Grafbase Gateway in AWS Lambda platform
![Introducing Trusted Documents](/_next/image?url=%2Fimages%2Fblog%2Ftrusted-documents.png&w=3840&q=100)
Introducing Trusted Documents
![Tom Houlé](/_next/image?url=%2Fimages%2Favatars%2Ftom.png&w=48&q=75)
Forbid unwanted GraphQL queries using an allow-list
![Benchmarking Grafbase vs Apollo vs Cosmo vs Mesh](/_next/image?url=%2Fimages%2Fblog%2Fgraphql-federation-benchmarks%2Fcover.png&w=3840&q=100)
Benchmarking Grafbase vs Apollo vs Cosmo vs Mesh
![Benjamin Rabier](/_next/image?url=%2Fimages%2Favatars%2Fbenjamin.png&w=48&q=75)
![Graeme Coupar](/_next/image?url=%2Fimages%2Favatars%2Fgraeme.png&w=48&q=75)
![Julius de Bruijn](/_next/image?url=%2Fimages%2Favatars%2Fjulius.png&w=48&q=75)
Benchmarking GraphQL Federation gateways
![Batching](/_next/image?url=%2Fimages%2Fblog%2Fbatching.png&w=3840&q=100)
Batching
![Graeme Coupar](/_next/image?url=%2Fimages%2Favatars%2Fgraeme.png&w=48&q=75)
Combine multiple GraphQL requests into one
![Configurable Introspection](/_next/image?url=%2Fimages%2Fblog%2Fintrospection-configuration.png&w=3840&q=100)
Configurable Introspection
![Yoav Lavi](/_next/image?url=%2Fimages%2Favatars%2Fyoav.png&w=48&q=75)
Enable or disable introspection of your API schema
![Automatic Persisted Queries](/_next/image?url=%2Fimages%2Fblog%2Fautomatic-persisted-queries.png&w=3840&q=100)
Automatic Persisted Queries
![Benjamin Rabier](/_next/image?url=%2Fimages%2Favatars%2Fbenjamin.png&w=48&q=75)
Reduce request payload size to improve performance