Docs
Search Apollo content (Cmd+K or /)
Launch GraphOS Studio
Home Home Get Started Get Started GraphOS Platform GraphOS Platform Schema Design Schema Design Routing Routing Reference Reference
Developer Tools Developer Tools
OverviewAbout GraphOS RouterConfigure Your Router

Cloud Routing

OverviewConfigurationSecure SubgraphsSubscriptionsServerless

Dedicated

OverviewQuickstartCustom DomainsThroughput GuideMigrate to Dedicated

AWS Lattice

Lattice ConfigurationLattice ManagementLattice Troubleshooting

Self-Hosted Deployment

OverviewRouter Resource EstimatorHealth ChecksResource Management

Containerization

OverviewDockerKubernetesOptimize Builds

Query Planning

Native Query Planner

Client Features

HTTP Header PropagationFile Upload Support

Real-Time Operations

OverviewDefer Support

Subscription Support

OverviewCallback ProtocolMultipart ProtocolEnable with API Gateway

Security

OverviewPersisted QueriesAuthorization

Authentication

JWT AuthenticationRouter AuthenticationSubgraph Authentication

Operations Security

Request LimitsDemand Control

Web Security

CORSCSRF Prevention

Performance and Scaling

OverviewTraffic ShapingQuery BatchingQuery Planner Pools

Caching

In-Memory CachingDistributed CachingEntity Caching

Router Customization

Router Request LifecycleRhai ScriptsRust PluginsCoprocessorsCustom Binaries

GraphOS Integration

Apollo UplinkOperation Metrics Reporting

Observability

OverviewRouter TelemetryFederated Trace Data

Subgraph Observability

Subgraph Error InclusionOpt-in Error ReportingDebugging Subgraph Requests

Client Observability

Client ID EnforcementClient Awareness

OpenTelemetry

Set up OTelConnect OTel to Prometheus

Guides

API Gateway Comparison
Navigation controls

Get Started

Overview

Quickstarts

Start with a GraphQL APIConnect a REST API

Concepts

GraphQLGraph TypesGraphOS Platform

GraphOS Platform

Overview

Schema Management

Overview

Schema Delivery

PublishLaunch

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 UsageSegmenting by Client

Notifications and Alerts

OverviewDaily ReportsSchema ChangesSchema ProposalsPerformance AlertsBuild Status

Access Management

OrganizationsAPI KeysMembers, Roles, and PermissionsAudit Logs

SSO

OverviewSelf-Service MigrationMulti-Organization

SAML

OktaMicrosoft Entra IDGeneric SAML Setup

OIDC

OktaMicrosoft Entra IDGeneric OIDC Setup

Graph Management

Using VariantsAdding SubgraphsManaging SubgraphsUpdating Graph Components

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

Schema Design

Overview

Federated Schemas

Apollo FederationSchema TypesSchema CompositionSharing Types (Value Types)

Entities

IntroductionDefine KeysContribute FieldsResolve Another Subgraph's FieldsUse ContextsInterfacesMigrate FieldsEnforce OwnershipEntity Best Practices

Apollo Connectors

OverviewCommon Patterns

Connectors Guides

Making HTTP RequestsWorking with FederationWorking with RouterSelection MappingObservabilityEnabling VS Code ExtensionTroubleshooting

Connectors Reference

DirectivesLimitationsChangelog

Schema Design Guides

Handling the N+1 Problem

Schema Design Principles

Schema Naming ConventionsNamespacingMocking to Unblock DevelopmentDemand Oriented Schema DesignAggregating DataNullabilityErrors as DataDeprecations

Advanced Schema Techniques

InterfacesResponse Type PatternGraph IdentitiesRelay Style Connections and PaginationDistributed Orchestration

Routing

OverviewAbout GraphOS RouterConfigure Your Router

Cloud Routing

OverviewConfigurationSecure SubgraphsSubscriptionsServerless

Dedicated

OverviewQuickstartCustom DomainsThroughput GuideMigrate to Dedicated

AWS Lattice

Lattice ConfigurationLattice ManagementLattice Troubleshooting

Self-Hosted Deployment

OverviewRouter Resource EstimatorHealth ChecksResource Management

Containerization

OverviewDockerKubernetesOptimize Builds

Query Planning

Native Query Planner

Client Features

HTTP Header PropagationFile Upload Support

Real-Time Operations

OverviewDefer Support

Subscription Support

OverviewCallback ProtocolMultipart ProtocolEnable with API Gateway

Security

OverviewPersisted QueriesAuthorization

Authentication

JWT AuthenticationRouter AuthenticationSubgraph Authentication

Operations Security

Request LimitsDemand Control

Web Security

CORSCSRF Prevention

Performance and Scaling

OverviewTraffic ShapingQuery BatchingQuery Planner Pools

Caching

In-Memory CachingDistributed CachingEntity Caching

Router Customization

Router Request LifecycleRhai ScriptsRust PluginsCoprocessorsCustom Binaries

GraphOS Integration

Apollo UplinkOperation Metrics Reporting

Observability

OverviewRouter TelemetryFederated Trace Data

Subgraph Observability

Subgraph Error InclusionOpt-in Error ReportingDebugging Subgraph Requests

Client Observability

Client ID EnforcementClient Awareness

OpenTelemetry

Set up OTelConnect OTel to Prometheus

Guides

API Gateway Comparison

Reference

OverviewChangelogsGlossary

Release Policies

Apollo Feature Launch StagesGraphOS Router Release LifecycleApollo Client Library Release Lifecycle

Architecture

Reference Architecture

Supergraph Architecture Framework

OverviewOperational ExcellenceSecurityReliabilityPerformanceDeveloper Experience

Federation Reference

Federation VersionsFederated DirectivesComposition Rules

Subgraph Reference

Federation Subgraphs SpecificationSubgraph Specific FieldsCompatible Subgraph Libraries

Development and Debugging

IDE SupportQuery PlansComposition HintsErrors
Federation v1

Router Reference

Self-Hosted InstallationConfigurationGraphOS Router FeaturesRhai APIFederation Version SupportErrors

Router Telemetry

Log Exporters

OverviewStdout

Metrics Exporters

OverviewDatadogDynatraceNew RelicOTLPPrometheus

Trace Exporters

OverviewDatadogDynatraceJaegerNew RelicOTLPZipkin

Instrumentation

InstrumentsEventsConditionsSpansSelectorsStandard AttributesStandard Instruments

Migration Guides

From Router v1.x to v2.xFrom Router v0.x to v1.xFrom @apollo/gateway to RouterFrom Federation 1 to 2Federation 2 Backwards CompatibilityFrom a MonolithFrom Schema Stitching

GraphQL Adoption Guides

GraphQL Adoption PatternsUsing GraphQL for AbstractionGraphQL and REST togetherSupergraph Stewardship
LicensingGraphOS Data PrivacySub-Processors

Rover CLI

OverviewInstallConfigureProxy ConfigurationCI/CDConventionsPrivacy and Data CollectionContributingError Codes

Commands

cloudconfigcontractdevexplaingraphlicensepersisted-queriesreadmesubgraphsupergraphtemplate

The Apollo CLI (deprecated)

InstallationValidating Client OperationsMoving to Rover

Apollo Sandbox

Overview

Apollo Client (Web)

Apollo Client (Web) - v3 (latest)
IntroductionWhy Apollo Client?Get startedChangelog

Fetching

QueriesSuspenseFragmentsMutationsRefetchingSubscriptionsDirectivesError handlingDocument transformsBest 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 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 Customization

Apollo Kotlin

Apollo Kotlin - v4 (latest)
Get StartedMigrating to v4ModulesEvolution policyKdocChangelog

Tutorial

0. Introduction1. Configure your project2. Add the GraphQL schema3. Write your first query4. Execute your first query5. Connect your queries to your UI6. Add more info to the list7. Paginate results8. Add a details view9. Write your first mutation10. Authenticate your operations11. Write your first subscription

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

VS Code Extension

Overview

Routing

Home
/ Routing

Routing with GraphOS Router

Secure, observe, and scale your supergraph runtime

GraphOS Router is the GraphOS runtime plane and a client's entry point to your federated supergraph. Configure it to secure your supergraph, monitor and optimize performance, extend functionality, and more.


Learn about GraphOS Router features and deployment types

Security Guides

CORS

Control browser access to your router.

JWT Authentication

Restrict access to credentialed users and systems.

Safelisting

Secure your graph while minimizing request latency.

Demand Control

Protect your graph from high-cost GraphQL operations.
Go to the full list of security configurations.

Performance Guides

Query Batching

Configure your router to receive requests in batches.

Traffic Shaping

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

Distributed Caching

Configure Redis-backed caching for query plans and APQ.

Entity Caching

Configure Redis-backed caching for entities.
Go to the full list of performance configurations

Customization Guides

Rhai Scripts

Add custom functionality directly to your router.

Coprocessors

Customize your router's behavior in any language.
Go to the full list of customization options

Monitoring & Observability

Router Telemetry

Capture and customize router telemetry. Export them to your observability and APM solutions.

Go to Router Telemetry
Next
Supergraph Routing with GraphOS Router

© 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