All notable changes to Rover will be documented in this file.
This project adheres to Semantic Versioning.
<!-- # [x.x.x] (unreleased) - 2025-mm-dd > Important: x potentially breaking changes below, indicated by **❗ BREAKING ❗** ## ❗ BREAKING ❗ ## 🚀 Features ## 🐛 Fixes ## 🛠 Maintenance ## 📚 Documentation -->Add --use-example-schema flag to subgraph publish - @samaanghani PR #3218
Allows publishing a placeholder schema without needing to provide your own schema file. This is useful for setting up your graph structure before your actual schemas are ready. The placeholder schema is type Query { helloWorld: String } with a routing URL of https://example.com.
Restore retry-until-ready behavior for unavailable subgraphs - @dmallare PR #3187
rover dev would continue polling unavailable subgraphs until they came online.axios, axios-proxy-builder and console.table and introduces undici as a dependency. It also pins detect-libc to a fixed version with no further dependencies.rover install command - PR #3022
docs/source/commands/install.mdx covering installing Rover and plugins (supergraph, router, apollo-mcp-server) with --plugin, options (--force, --elv2-license), and navigation updates. The install command is now visible in rover --help.rover dev - @DaleSeo, PR #2784Remove claude_desktop_config.json from MCP template and update "Next Steps" UX - @gocamille, #2746 fixes apollographql/rover-init-starters#84
Updates the MCP template to be more flexible and AI-client agnostic. Removes the prescriptive claude_desktop_config.json file and provides more generic "Next Steps" guidance for connecting any AI client to the generated MCP server.
Remove mcp-claude shortlink - @gocamille, #2747
Removes the Claude Desktop-specific shortlink to align with the more flexible, AI-client agnostic approach to MCP server setup.
--mcp flag to rover init for Model Context Protocol support - @camillelawrence PR #2731
rover init --mcp. This enables two flows: creating new graphs with MCP server capabilities, or augmenting existing projects with MCP tooling.--mcp-collection option for rover dev - @Jephuff PR #2636rover init - @sanchezdale PR #2630
init were set to default to federation 2.10. Now, init sets the default to the federation version defined in the selected starter template.apollographql/federation-rs to v2.11.0 - PR #2627Log cause of introspection error - @pubmodmatt PR #2615
Introspection failures in rover dev were not logging the underlying cause of the failure. This has been fixed to help with debugging introspection problems.
eslint to v9.28.0 - PR #2616zip to v4 - PR #2618rand_regex to v0.18.1 - PR #2606slackapi/slack-github-action action to v2.1.0 - PR #2584duct to v1 - PR #2586npm to v11 - PR #2547quay.io/pypa/manylinux2014_x86_64 docker tag to v2025 - PR #2548Use the Streamable HTTP transport for MCP - @pubmodmatt PR #2607
rover dev --mcp will now use the Streamable HTTP transport instead of SSE. Specify the --mcp-port and/or --mcp-address options to rover dev --mcp to override the default values. The --mcp-sse-port and --mcp-sse-address options still work, but will configure the port and address for Streamable HTTP. Users should migrate to the new option names.
--mcp-directory was optional, but rover dev failed if it was not specified--mcp-sse-address to set the bind address for the MCP server started by rover devERROR or UNKNOWNrover dev would exit but leave the other process runningrover init will now emit the correct commands for Windows PowerShell - @sanchezdale PR #2595Add mcp to rover dev - @Jephuff, @pubmodmatt PR #2591
This release adds the ability to run the Apollo MCP Server in addition to the Apollo Router when running rover dev. Specify the --mcp option to start the MCP server. Additional options are provided to configure the MCP server. Use rover dev --help for details.
Add support for templates in the rover init command
This adds support for templates in the rover init command. You can now select a template to use when creating a new graph!
init flag to default features - @tayrriblestart_point_file to specify what file to use in output - @sanchezdalepq publish into docs - @lleadbetrover init resources - @Meschreiberactions/checkout@v4 in GitHub Actions example workflows - @DaleSeoAdding new command rover init
New rover init command to help set up a new project. It walks you through creating a graph, setting up files, and getting GraphOS credentials.
More information: <insert doc link here>
init flow when duplicate graph ID is providedrover_std librarydev command's descriptioninitrover initFix telemetry reporting for release builds - @pubmodmatt PR #2445
Telemetry was not working for release builds. This has been corrected. See the Rover privacy policy for information about anonymous usage data collection in Rover.
Default to Apollo Router 2.x for rover dev - @pubmodmatt PR #2433
The default version of Apollo Router used by rover dev is now 2.x instead of 1.x. The default can be overridden by
setting APOLLO_ROVER_DEV_ROUTER_VERSION, for example APOLLO_ROVER_DEV_ROUTER_VERSION=1.61.0.
Implement supergraph config schema command - @jonathanrainer PR #2418
Adds a new rover supergraph config schema command to output the JSONSchema for supergraph.yaml. This can be used
to configure editor support for the file.
rover config whoami - @pubmodmatt PR #2413Restore the ability to use environment or file references in the supergraph.yaml file - @jonathanrainer PR #2411
In v0.26.3 and older you could use references such as ${env.HOST} or similar in the supergraph.yaml file, there
was an oversight in the refactor and this was removed. This ability has now been restored.
apollographql/federation-rs to v2.10.0 - @jonathanrainer PR #2409thiserror to v2.0.1 - @jonathanrainer PR #2261If using Rover with Connectors, you will need to specify
APOLLO_ROVER_DEV_ROUTER_VERSION=2.0.0-preview.Xwhen usingrover dev
Create output parent directories if they do not already exist - @dotdat PR #2396
One small regression with release of v0.27.0 was that if an output directory to supergraph compose was specified,
but one of the parent directories did not exist, the command would fail. In previous versions the parent directories
would be created instead and the command would succeed. This is now corrected and the previous behaviour restored.
Clean up how default subgraphs are defined in rover dev - @dotdat PR #2397 fixes #2394
An issue has been reported where rover dev would prompt repeatedly for the subgraph name and URL despite the
user having given those values already. This was due to multiple factors, including not accounting for CLI args in
the default case and some faulty other faulty logic. This has now been restored.
Refine how composition produces artifacts for targets - @dotdat PR #2398 fixes #2393
Due to changes in the supergraph binary from 2.9+, writing directly to a file is now supported. However,
this feature is not available in earlier versions of supergraph. As such Rover should be responsible for
orchestrating how the output from supergraph binary ends up in a file, rather than delegating that responsibility
to the supergraph binary and thus being at the mercy of which version is used. This allowed a further refactor that
eliminated complexity around composition outputs.
Ensure credentials are checked when needed and not before - @jonathanrainer PR #2400 fixes #2399
Due to the rover dev refactor there were situations where credentials were being required when they were ultimately
not being used. As such we stopped supporting the use case where no profile was defined and no APOLLO_KEY env var
was provided, which is a very common pattern. This is now corrected.
Update apollographql/router to v1.60.1 - @jonathanrainer PR #2388
Update Node.js packages - @jonathanrainer PR #2390
Includes eslint to v9.20.0 and prettier to v3.5.0
Update node CircleCI orb to v7.1.0 - @jonathanrainer PR #2391
Pin dependencies - @jonathanrainer PR #2401
Update Rust and Node.js packages - @jonathanrainer PR #2402
Includes eslint to v9.20.1, mockito to v1.6.1, node to v20.18.3 and prettier to v3.5.1
Update CI node Docker Image to v20.18.3 - @jonathanrainer PR #2403
Update mockall to v0.13.1 - @jonathanrainer PR #24045
rover dev --help - @dylan-apollo PR #2395Important: 3 potentially breaking changes below, indicated by ❗ BREAKING ❗
If using Rover with Connectors, you will need to specify
APOLLO_ROVER_DEV_ROUTER_VERSION=2.0.0-preview.Xwhen usingrover dev
Make paths in supergraph.yaml resolve relative to the location of the supergraph.yaml file - @jonathanrainer PR #2119
To support the new Apollo Language Server it is now the case that any paths expressed in the supergraph.yaml file will
be resolved relative to the file's location on disk, not the location that Rover is running in, at the time.
Remove fed2 command - @aaronArinder PR #2222
This was a deprecated, hidden, unused command that was for early Federation 2.0 testing. This command has not been invoked for a very long time.
Remove ability to start multiple rover dev sessions - @jonathanrainer PR #2352
Now that Rover supports hot-reloading from supergraph.yaml files we've removed the ability to start multiple
rover dev sessions, in multiple terminal windows, and have them communicate with each other.
Remove ambiguity around which URL is used for query execution when using subgraph_url and --graph-ref flag
In previous versions of Rover, when the --graph-ref flag was used and a subgraph was specified in the
supergraph.yaml to override the values from GraphOS, the schema.subgraph_url was used for both schema fetching via introspection and query execution.
federation_version: 2.10.0
subgraphs:
subgraph_a:
schema:
subgraph_url: "http://localhost:4000/graphql"
This was a bug in earlier versions of Rover that has only recently been identified. Now if this same situation occurs, Rover will use the given ( in the example above) to fetch the schema . Query execution will use the from GraphOS.
Apollo Language Server - @jonathanrainer
This brand-new feature aids in subgraph development and also supports connectors. It enhances Apollo tools such as the schema proposals editor and recent versions of IDE plugins and extensions by providing federation-aware syntax highlighting, validation, autocompletion, and more
<details open> <summary>PRs Included</summary> <ul> <li>#2272</li> <li>#2345</li> <li>#2354</li> <li>#2364</li> <li>#2369</li> <li>#2386</li> <li>#2389</li> </ul> </details>New version of rover dev - @dotdat @aaronArinder @loshz @monkpow @jonathanrainer
In this version of Rover there is a new version of rover dev built upon a completely new implementation of the
composition pipeline inside of Rover. This not only allows a better functioning rover dev with more features, but
it also supports the new Apollo Language Server, for use with Connectors!
In addition, it also supports hot-reloading of the supergraph.yaml file, subgraphs can be added, removed or edited,
and this will be all be reflected in the running rover dev session!
Stop Running Router with logs at TRACE level - @nmoutschen PR #2143
We were running the Router at TRACE level logging, which was causing queries to not complete in some cases
Stop rover dev session if router binary crashes - @jonathanrainer PR #2382
In the past we let the rover dev session continue if the router binary crashed, which led to a misleading state
of affairs, this has now been fixed.
configuring slug to docs link listinit commandinit Command with TypeState Patternschema.subgraph_urlhttp://localhost:4000/graphqlrouting_urlThis is consistent with the documented behaviour since this feature launched and in addition is consistent with the
principle that the use of the supergraph.yaml will only override --graph-ref where you explicitly state that
should happen. To obtain the original behaviour again you simply need to override the routing_url in the
supergraph.yaml as well, so the example above would become:
federation_version: 2.10.0
subgraphs:
subgraph_a:
routing_url: "http://localhost:4000/graphql"
schema:
subgraph_url: "http://localhost:4000/graphql"and this will use http://localhost:4000/graphql for query execution and schema fetching via introspection.
Add ability to hot-reload federation_version in supergraph.yaml - @jonathanrainer PR #2347
Rover now has the ability to account for changes in the federation_version field of the supergraph.yaml file,
while it is running.
Enabling Remote Proxy Downloads - @LongLiveCHIEF @jonathanrainer PR #2254 #2372
Rover now has the ability to be installed from a remote proxy, via the use of environment variables.
Display the results of custom check tasks - @swcollard PR #2087
Rover now has the ability to print out results of CustomCheckTasks from the Platform API