Docs
Search Apollo content (Cmd+K or /)
Launch GraphOS Studio
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

OverviewFederated Trace Data

Router Telemetry

Overview

Log Exporters

OverviewStdout

Metrics Exporters

OverviewDatadogDynatraceNew RelicOTLPPrometheus

Trace Exporters

OverviewDatadogDynatraceJaegerNew RelicOTLPZipkin

Instrumentation

InstrumentsEventsConditionsSpansSelectorsStandard AttributesStandard Instruments

Subgraph Observability

Subgraph Error InclusionDebugging Subgraph Requests

Client Observability

Debugging Client RequestsClient ID Enforcement

OpenTelemetry

Set up OTelConnect OTel to Prometheus

Query Planning

Native Query PlannerQuery Planning Best Practices

Caching

In-Memory CachingDistributed CachingEntity Caching

Performance and Scaling

OverviewTraffic ShapingQuery Batching

Client Features

HTTP Header Propagation@defer

GraphQL Subscriptions

OverviewConfigurationCallback ProtocolMultipart ProtocolEnable with API Gateway
File Upload

Customization

Overview

Coprocessors

Coprocessor ConfigurationCoprocessor Reference

Rhai Scripts

Rhai ConfigurationRhai API Reference

Custom Builds

Building a BinaryRust Plugins

Deployment

OverviewDockerKubernetes

AWS

AWS ECS

Azure

Azure Container Apps

GCP

Google Cloud Run

Apollo Cloud Routing

OverviewConfigurationSecure 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 UplinkOperation Metrics Reporting

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?

Connectors Essentials

RequirementsMaking HTTP RequestsMapping GraphQL ResponsesWorking with Router

Usage Patterns

Common PatternsWorking with Entities

Development and Tooling

ObservabilityTroubleshootingMapping Playground

Connectors Reference

Preview FeaturesConnectors ChangelogConnectors DirectivesMapping LanguageLimitations

GraphOS Platform

OverviewApollo Sandbox

Schema Management

Overview

Schema Delivery

Publishing

OverviewPublish with RoverPublish with the Platform API
Launches

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 DiagnosticsSegmenting 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

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
GraphOS Platform API

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

OverviewFederated Trace Data

Router Telemetry

Overview

Log Exporters

OverviewStdout

Metrics Exporters

OverviewDatadogDynatraceNew RelicOTLPPrometheus

Trace Exporters

OverviewDatadogDynatraceJaegerNew RelicOTLPZipkin

Instrumentation

InstrumentsEventsConditionsSpansSelectorsStandard AttributesStandard Instruments

Subgraph Observability

Subgraph Error InclusionDebugging Subgraph Requests

Client Observability

Debugging Client RequestsClient ID Enforcement

OpenTelemetry

Set up OTelConnect OTel to Prometheus

Query Planning

Native Query PlannerQuery Planning Best Practices

Caching

In-Memory CachingDistributed CachingEntity Caching

Performance and Scaling

OverviewTraffic ShapingQuery Batching

Client Features

HTTP Header Propagation@defer

GraphQL Subscriptions

OverviewConfigurationCallback ProtocolMultipart ProtocolEnable with API Gateway
File Upload

Customization

Overview

Coprocessors

Coprocessor ConfigurationCoprocessor Reference

Rhai Scripts

Rhai ConfigurationRhai API Reference

Custom Builds

Building a BinaryRust Plugins

Deployment

OverviewDockerKubernetes

AWS

AWS ECS

Azure

Azure Container Apps

GCP

Google Cloud Run

Apollo Cloud Routing

OverviewConfigurationSecure 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 UplinkOperation Metrics Reporting

Reference

Federation Version SupportErrors

Resources

OverviewChangelogsGlossaryExamples

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

cloudconfigcontractdevexplaingraphinitlicensepersisted-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) - v3 (latest)
IntroductionWhy Apollo Client?Get startedChangelog

Fetching

QueriesSuspenseFragmentsMutationsRefetchingSubscriptionsDirectivesError handlingDocument 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 variablesClient-side schemaLocal resolvers

Development & Testing

Developer toolsUsing TypeScriptTesting 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

Migrating

Migrating to Apollo Client 3.0Hooks migration guide

API Reference

Core

ApolloClientInMemoryCacheObservableQuery

React

HooksPreloadingTestingSSRComponents (deprecated)HOC (deprecated)

Apollo Link

OverviewHTTPHTTP BatchContextErrorPersisted QueriesRemove TypenameRESTRetrySchemaSubscriptions (newer protocol)WebSocket (older protocol)Community links

Apollo iOS

Apollo iOS - v1 (latest)
IntroductionGet Started

Project Configuration

Introduction1. Project Modularization2. Schema Types3. Operation ModelsSDK components

Migration Guides

v1.0v1.2v1.3v1.5v1.6v1.7

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 mutations13. Write your first subscription

API Reference

OverviewApollo ClientApolloAPIApolloWebSocketApolloSQLiteApolloCodegenLibApolloPaginationClient Directives

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 (experimental)

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 CustomizationRequest Configuration

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 (latest)
IntroductionGet started

New in v4

Migrating to Apollo Server 4Previous 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 - v0 (latest)
WelcomeQuickstartUser GuideCommand ReferenceBest PracticesLicensingLimitations

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

Entity-Based Caching

Reuse cached entity-based subgraph responses to improve query latency.

Go to Entity-Based 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
Previous
Subgraph Entity Caching for the GraphOS Router
Next
Traffic Shaping

© 2025 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