You are viewing a deploy preview. Click to return to the live site.
Docs
Search Apollo content (Cmd+K or /)
Sign In
Home Home Schema Design Schema Design Connectors Connectors GraphOS Platform GraphOS Platform Routing Routing Resources Resources
Tools & SDKs Tools & SDKs
Apollo Router - v2 (latest)
OverviewGet StartedRequest Lifecycle
Configuration
OverviewEnvironment Variable ReferenceCLI ReferenceYAML Reference
Features

Security

OverviewPersisted QueriesAuthorization

Authentication

JWT AuthenticationRouter AuthenticationSubgraph Authentication
CORSCSRF PreventionTLSRequest LimitsDemand Control

Observability

Studio Insights

OverviewOperation Metrics ReportingFederated Trace Data

Router Telemetry (OTEL)

Overview

Telemetry Data

Metrics

InstrumentsStandard Instruments
Events

Traces

SpansStandard Attributes
ConditionsSelectors

Usage Guides

Subgraph Observability

Subgraph Error InclusionDebugging Subgraph RequestsInstrumenting Subgraphs

Client Observability

Debugging Client RequestsClient ID Enforcement

Telemetry Exporters

Metrics Exporters

OverviewOTLP

Log Exporters

OverviewStdout

Trace Exporters

OverviewOTLP

APM Guides

Datadog

Overview

Connecting to Datadog

OverviewOpenTelemetry Collector

Datadog Agent

MetricsTraces
Router InstrumentationDashboard Template

New Relic

MetricsTraces

Prometheus

MetricsTrace Metrics

Zipkin

Traces

Jaeger

Traces

Dynatrace

MetricsTraces

Performance and Scaling

Overview

Response Caching

OverviewQuickstartInvalidationCustomizationObservabilityFAQ
Traffic ShapingQuery Batching

Client Features

APQHTTP Header Propagation@defer

GraphQL Subscriptions

OverviewConfigurationCallback ProtocolMultipart ProtocolEnable with API Gateway
File Upload

Query Planning

Native Query PlannerBest PracticesCaching

Customization

Overview

Coprocessors

Coprocessor ConfigurationCoprocessor Reference

Rhai Scripts

Rhai ConfigurationRhai API Reference

Custom Builds

Building a BinaryRust Plugins
Deployment
Overview

Docker

Docker with the Apollo Runtime ContainerDocker with Apollo Router

Kubernetes

QuickstartDeploying with ExtensibilityEnabling MetricsOther Considerations

AWS

AWS ECS

Azure

Azure Container Apps

GCP

Google Cloud Run

Managed Hosting

RailwayRender

Apollo Cloud Routing

OverviewMigrate to Self-HostedConfigurationSecure SubgraphsSubscriptionsServerless

Dedicated

OverviewQuickstartCustom DomainsThroughput GuideMigrate to Dedicated

AWS Lattice

Lattice ConfigurationLattice ManagementLattice Troubleshooting

Tools

Router Resource EstimatorHealth ChecksResource Management
Releases
ChangelogsWhat's New in Router v2Upgrade from Router v1Migrate from GatewayAPI Gateway Comparison
GraphOS Integration
GraphOS Plan LicenseGraphOS Plan FeaturesApollo Uplink
Reference
Federation Version SupportErrors
Navigation controls

Schema Design

Overview
Federated Schemas
OverviewSchema TypesSchema CompositionSharing Types (Value Types)

Federation Reference

Federation ChangelogFederation DirectivesComposition Rules

Subgraph Reference

Federation Subgraphs SpecificationSubgraph Specific FieldsCompatible Subgraph Libraries

Development and Tooling

Query PlansComposition HintsErrors

From Federation 1 to 2

Upgrade GuideFederation 2 Backwards Compatibility
Entities
Introduction

Entity Essentials

Entity FieldsAdvanced KeysEntity Interfaces

Entity Guides

Entity Best PracticesMigrate FieldsResolve Another Subgraph's FieldsEnforce OwnershipUse Contexts
Schema Design Guides

Schema Design Principles

Demand Oriented Schema DesignNaming ConventionsNamespacing

Server-Driven UI

BasicsSchema DesignClient Design

Data Handling Techniques

Handling the N+1 ProblemNullabilityInterfacesResponse Type PatternErrors as DataAggregating DataGraph Identities

Schema Development and Evolution

Mocking to Unblock DevelopmentDeprecationsDistributed OrchestrationMigrating from a MonolithMigrating from Schema Stitching

Connectors

OverviewWhy use Connectors?
Getting Started
QuickstartAPI RequirementsVersion Requirements
Connectors Library
Overview

Prebuilt Connectors

AnthropicOpen AIAWS DynamoDBAWS LambdaStrapiStripeOData
Development and Tooling
OverviewIDE ExtensionsUsing RoverCLI ToolsMapping Playground
Making Requests
OverviewRequest URLsRequest HeadersRequest BodiesBatch RequestsgRPC over JSON
Handling Responses
OverviewMapping Response FieldsError Handling
Working with Entities
OverviewCommon PatternsWorking Across Subgraphs
Mapping Language
OverviewHandling ArraysMapping EnumsUsing Literal ValuesVariable ReferenceMethod Reference
Deployment
OverviewConfiguration

Deployment Configurations

Overriding Base URLsOverriding Headers

Security Configurations

OverviewAuthenticationRequest LimitsTLS

Performance Configurations

OverviewTraffic Shaping

Observability

OverviewTelemetry Configurations
Testing
Testing Framework
Connectors Reference
ChangelogDirectivesLimitations
Troubleshooting

GraphOS Platform

OverviewApollo Sandbox
Schema Management
Overview

Schema Delivery

Publishing

OverviewPublish with RoverPublish with the Platform APIGuide: Publish with GitHub Actions
LaunchesGraph Artifacts

Contracts

OverviewCreateUsage PatternsReference

Schema Checks

OverviewRun ChecksCustom ChecksChecks ConfigurationGitHub IntegrationChecks Reference

Schema Linting

OverviewLinter Rules

Schema Proposals

OverviewConfigureCreateReviewImplement
Explorer IDE
OverviewConnect and AuthenticateOperation CollectionsSubscription SupportEmbedScriptingAdditional Features
Graph Security
OverviewPersisted Queries
Metrics and Insights
Overview

Metrics Collection and Forwarding

Sending Metrics to GraphOSOperation SignaturesDatadog Forwarding

Insights and Analysis

Operation MetricsField UsageError DiagnosticsSubgraph MetricsSegmenting by Client

Notifications and Alerts

OverviewDaily ReportsSchema ChangesSchema ProposalsPerformance AlertsBuild Status
Access Management
OrganizationsAPI KeysMembers, Roles, and PermissionsAudit Logs

SSO

OverviewMulti-Organization

SAML

OktaMicrosoft Entra IDGeneric SAML Setup

OIDC

OktaMicrosoft Entra IDGeneric OIDC Setup

SCIM

OverviewOktaMicrosoft Entra ID
Graph Management
Using VariantsAdding SubgraphsManaging SubgraphsUpdating Graph ComponentsTransferring Graphs
Production Readiness
Production Readiness Checklist

Testing and Load Management

Overload ProtectionLoad TestingTesting with Federation

Environment and Deployment

Environment Best PracticesSchema Change ManagementUpdating Client SchemaDeployment Best Practices
Platform LimitsGraphOS Platform APIGraphOS MCP Tools

Routing

Apollo Router - v2 (latest)
OverviewGet StartedRequest Lifecycle
Configuration
OverviewEnvironment Variable ReferenceCLI ReferenceYAML Reference
Features

Security

OverviewPersisted QueriesAuthorization

Authentication

JWT AuthenticationRouter AuthenticationSubgraph Authentication
CORSCSRF PreventionTLSRequest LimitsDemand Control

Observability

Studio Insights

OverviewOperation Metrics ReportingFederated Trace Data

Router Telemetry (OTEL)

Overview

Telemetry Data

Metrics

InstrumentsStandard Instruments
Events

Traces

SpansStandard Attributes
ConditionsSelectors

Usage Guides

Subgraph Observability

Subgraph Error InclusionDebugging Subgraph RequestsInstrumenting Subgraphs

Client Observability

Debugging Client RequestsClient ID Enforcement

Telemetry Exporters

Metrics Exporters

OverviewOTLP

Log Exporters

OverviewStdout

Trace Exporters

OverviewOTLP

APM Guides

Datadog

Overview

Connecting to Datadog

OverviewOpenTelemetry Collector

Datadog Agent

MetricsTraces
Router InstrumentationDashboard Template

New Relic

MetricsTraces

Prometheus

MetricsTrace Metrics

Zipkin

Traces

Jaeger

Traces

Dynatrace

MetricsTraces

Performance and Scaling

Overview

Response Caching

OverviewQuickstartInvalidationCustomizationObservabilityFAQ
Traffic ShapingQuery Batching

Client Features

APQHTTP Header Propagation@defer

GraphQL Subscriptions

OverviewConfigurationCallback ProtocolMultipart ProtocolEnable with API Gateway
File Upload

Query Planning

Native Query PlannerBest PracticesCaching

Customization

Overview

Coprocessors

Coprocessor ConfigurationCoprocessor Reference

Rhai Scripts

Rhai ConfigurationRhai API Reference

Custom Builds

Building a BinaryRust Plugins
Deployment
Overview

Docker

Docker with the Apollo Runtime ContainerDocker with Apollo Router

Kubernetes

QuickstartDeploying with ExtensibilityEnabling MetricsOther Considerations

AWS

AWS ECS

Azure

Azure Container Apps

GCP

Google Cloud Run

Managed Hosting

RailwayRender

Apollo Cloud Routing

OverviewMigrate to Self-HostedConfigurationSecure SubgraphsSubscriptionsServerless

Dedicated

OverviewQuickstartCustom DomainsThroughput GuideMigrate to Dedicated

AWS Lattice

Lattice ConfigurationLattice ManagementLattice Troubleshooting

Tools

Router Resource EstimatorHealth ChecksResource Management
Releases
ChangelogsWhat's New in Router v2Upgrade from Router v1Migrate from GatewayAPI Gateway Comparison
GraphOS Integration
GraphOS Plan LicenseGraphOS Plan FeaturesApollo Uplink
Reference
Federation Version SupportErrors

Resources

OverviewChangelogsGlossaryExamplesUse Apollo docs with AI
Release Policies
Apollo Feature Launch StagesGraphOS Router Release LifecycleApollo Client Library Release Lifecycle
Architecture
Reference Architecture

Supergraph Architecture Framework

OverviewOperational ExcellenceSecurityReliabilityPerformanceDeveloper Experience
GraphQL Adoption Guides
GraphQL Adoption PatternsUsing GraphQL for AbstractionSupergraph Stewardship

Rover CLI

OverviewInstallConfigureProxy ConfigurationCI/CDConventionsPrivacy and Data CollectionContributingError Codes
Commands
api-keycloudcompletionconfigconnectorcontractdevexplaingraphinitlicensepersisted-queriesreadmesubgraphsupergraphtemplate
The Apollo CLI (deprecated)
InstallationValidating Client OperationsMoving to Rover

IDE Support

IDE Support
OverviewVisual Studio CodeJetBrains IDEsVim/NeoVim

Apollo Client (Web)

Apollo Client (Web) - v4 (latest)
IntroductionWhy Apollo Client?Get started
Core concepts
QueriesSuspenseFragmentsMutationsTypeScriptRefetchingSubscriptionsDirectivesError handlingPersisted queriesDocument transformsDeferring response dataBest practices
Caching
OverviewConfigurationReading and writingGarbage collection and evictionCustomizing field behaviorMemory ManagementAdvanced topics
Pagination
OverviewCore APIOffset-basedCursor-basedkeyArgs
Local State
OverviewLocal-only fieldsReactive variablesLocal resolvers
Development & Testing
Developer toolsGraphQL CodegenTesting React componentsSchema-driven testingMocking schema capabilitiesReducing bundle size
Performance
Improving performanceOptimistic mutation resultsServer-side renderingCompiling queries with Babel
Integrations
Using Apollo Client with your view layerIntegrating with React NativeLoading queries with Webpack
Networking
Basic HTTP networkingAdvanced HTTP networkingAuthentication
API Reference

Core

ApolloClientInMemoryCacheObservableQuery

Errors

CombinedGraphQLErrorsCombinedProtocolErrorsLinkErrorLocalStateErrorServerErrorServerParseErrorUnconventionalError

React

ApolloProvideruseQueryuseLazyQueryuseMutationuseSubscriptionuseFragmentuseApolloClientuseReactiveVaruseSuspenseQueryuseBackgroundQueryuseReadQueryuseLoadableQueryuseQueryRefHandlersskipTokencreateQueryPreloaderMockProviderSSR

Apollo Link

OverviewApolloLinkBaseHttpLinkBaseBatchHttpLinkBatchHttpLinkBatchLinkClientAwarenessLinkErrorLinkGraphQLWsLinkHttpLinkPersistedQueryLinkRemoveTypenameFromVariablesLinkRetryLinkSchemaLinkSetContextLinkWebSocketLink (deprecated)Community links
ChangelogMigrating to Apollo Client 4.0Versioning Policy

Apollo iOS

Apollo iOS - v2 (latest)
IntroductionGet Started
Project Configuration
Introduction1. Project Modularization2. Schema Types3. Operation ModelsSDK components
Migration Guides
v2.0
Tutorial
Code Generation

Build a project with Apollo

Introduction1. Configure your project2. Add the GraphQL schema3. Write your first query4. Running code generation5. Execute your first query6. Connect your queries to your UI7. Add more info to the list8. Paginate results9. Complete the details view10. Write your first mutation11. Authenticate your operations12. Define additional mutations
API Reference
Code Generation
IntroductionThe Codegen CLIConfigurationDownloading a SchemaRunning Code Generation in Swift CodeCode Generation Troubleshooting
Fetching
Fetching Data

Operations

QueriesMutationsSubscriptionsFragments
Operation ArgumentsError HandlingType ConditionsCustom ScalarsPersisted Queries@defer support
Caching
IntroductionSetupDirect Cache AccessCustom Cache KeysProgrammatic Cache Keys
Networking
Creating a Client
Pagination
IntroductionUsing Custom Response ModelsDirectional PaginationMulti-query Pagination
Development & Testing
Test MocksIncluding Apollo as an XCFramework
Advanced
File UploadsRequest Chain CustomizationClient Directives

Apollo Kotlin

Apollo Kotlin - v4 (latest)
Get StartedMigrating to v4ModulesEvolution policyTutorialKdocChangelog
Configuration
Gradle plugin configurationGradle plugin recipesMulti ModulesFile typesClient Awareness
Fetching
QueriesMutationsSubscriptionsGraphQL variablesError handlingCustom scalarsFragments@defer supportPersisted queries
Caching
IntroductionNormalized cachesDeclarative cache IDsProgrammatic cache IDsWatching cached dataApolloStoreHTTP cacheTroubleshooting
Networking
InterceptorsCustom HTTP clientsUsing the models without apollo-runtimeAuthenticationWebSocket errorsBatching operations
Development & Testing
Testing overviewMocking HTTP responsesMocking GraphQL responsesData buildersAndroid Studio pluginApollo Debug Server
Advanced
Uploading filesMonitoring the network stateHandling nullabilityExperimental WebSocketsUsing aliasesUsing JavaApollo ASTCompiler pluginsJS InteroperabilityResponse based codegenApollo Kotlin galaxy

Apollo Server

Apollo Server - v4–v5 (latest)
IntroductionGet started
New in v4 and v5
Migrating from Apollo Server 4Migrating from Apollo Server 3Previous versionsChangelog
Defining a Schema
Schema basicsUnions and interfacesCustom scalarsDirectives
Resolving Operations
ResolversSharing contextError handlingSubscriptions
Fetching Data
OverviewREST APIs
Web Frameworks
IntegrationsBuilding integrationsMERN stack tutorial
Development Workflow
Build and run queriesRequest formatGenerating TS typesMockingIntegration testingApollo Studio Explorer
Performance
CachingCache backendsResponse Cache EvictionAutomatic persisted queries
Security
AuthCORSTerminating SSLProxy configuration
Deployment
LambdaHeroku
Monitoring
Metrics and loggingHealth checks
API Reference
ApolloServerstartStandaloneServerexpressMiddleware
Plugins
Overview

Built-in

Usage reportingSchema reportingInline traceDrain HTTP serverCache controlLanding pagesFederated subscriptions

Custom

Creating pluginsEvent reference
Using with Federation

As a subgraph

Setup@apollo/subgraph reference

As a gateway

SetupGateway performance@apollo/gateway reference

Apollo MCP Server

Apollo MCP Server - v1 (latest)
OverviewQuickstartDefine tools
Configuration
YAML Config ReferenceCustom Scalars
Run the MCP ServerDebugging
Deployment
OverviewHealth ChecksCORS
AuthorizationTelemetryBest PracticesLicensingLimitations
Guides
Development to Production WorkflowsAuthorization with Auth0

Apollo Operator

Overview
Getting Started
Install OperatorAdd SubgraphsDeploy Supergraphs
Kubernetes Resources

Supergraph

OverviewAutoscaling your SupergraphsSupergraph podTemplateSupergraph networking

Safe Deployments

Getting StartedAdvanced Topics
SupergraphSchemaSupergraphSetSubgraph
Workflows
OverviewSingle Cluster SetupMulti-Cluster & Hybrid SetupDeploy Only
Configuration
OverviewTelemetryControllersOCIPrivate Registries
Security Best Practices

Routing

Home
/ Routing
/ Performance and Scaling

Router Performance Optimization

Caching

In-Memory Caching

Use in-memory LRU cache for generated query plans and automatic persisted queries (APQ).

Go to In-Memory Caching

Distributed Caching

Share Redis-backed cache between router instances.

Go to Distributed Caching

Response Caching

Cache subgraph responses to improve query performance with Redis-backed entity-level caching.

Go to Response Caching

Request Optimization

Traffic Shaping

Tune the performance and reliability of traffic to and from the router.

Go to Traffic Shaping

Query Batching

Improve request-handling throughput with client and subgraph query batching.

Go to Query Batching

© 2026 Apollo Graph Inc., d/b/a Apollo GraphQL.

Privacy Policy

Company

  • About Apollo
  • Careers
  • Partners

Resources

  • Blog
  • Tutorials
  • Content Library

Get in touch

  • Contact Sales
  • Contact Support