Releases: apollographql/rover
Release list
v0.41.0
❗ BREAKING ❗
-
graph introspect --format jsonnow returns GraphQL introspection JSON - @smyrick PR #3440rover graph introspectwith--format jsonnow puts the schema as a GraphQL introspection object ({ "__schema": ... }) underdata.introspection_responseinstead of an SDL string. Default plain output remains SDL. This is a behavior change for existing--format jsonconsumers: traversedata.introspection_responseto get the introspection object (for example,jq '.data.introspection_response'). No field or value transformation is needed beyond envelope traversal.
🚀 Features
-
Add
rover supergraph config expandto preview an expanded supergraph config - @SharkBaitDLS PR #3447 fixes #1579rover supergraph config expand --config ./supergraph.yamlprints your supergraph configuration file with all variable references (e.g.${env.PRODUCTS_URL}and${file.path}) expanded. This makes it easy to confirm what Rover actually resolves your config to before a composition run. Use--format jsonto get the expanded config under anexpanded_configfield. -
Add
--changelog-messagetograph publishandsubgraph publish- @SharkBaitDLS PR #3398 fixes #1884 #292rover graph publishandrover subgraph publishnow accept--changelog-message <MESSAGE>to attach a note to the publish in the Studio schema changelog. The publish output has also been enriched:graph publishnow reports the schema hash and total named type count andsubgraph publishnow includes the resulting supergraph composition hash when one is available. -
Add
rover dev --supergraph-outputto control the output of the composed supergraph - @SharkBaitDLS PR #3383 fixes #1864rover devcan now write the supergraph schema it composes to a path of your choosing and keep it updated on every recomposition, e.g.rover dev --supergraph-output build/supergraph.graphql. Previously the composed supergraph only lived in a temp file, and the global--output/-oflag (which controls a command's own CLI output, not its artifacts) appeared to be silently ignored bydev. The global--outputhelp text now clarifies that distinction. -
Add
rover graph-artifact tagcommand - @zw428 PR #3282Adds the
rover graph-artifact tagcommand for Graph Artifact tagging. Seerover graph-artifact tagdocumentation here. -
Add
rover graph-artifact untagcommand - @zw428 PR #3360
Adds therover graph-artifact untagcommand for Graph Artifact untagging. Seerover graph-artifact untagdocumentation here. -
Add
rover graph-artifact list-tagscommand - @wendyperalta PR #3355
Adds therover graph-artifact list-tagscommand for Graph Artifact tags that lets users query which tags exist in a graph, either across all artifacts or scoped to a single artifact by digest. Seerover graph-artifact list-tagsdocumentation here. -
Add
rover graph-artifact fetchcommand - @zw428 PR #3359
Userover graph-artifact fetchto fetch metadata about a graph artifact from Apollo's OCI distribution. This command returns an artifact's content-addressed digest, the launch that produced it, and (when fetching by tag) its assignment history. Seerover graph-artifact fetchdocumentation here. -
Add
rover persisted-queries generatecommand - @dotdat PR #3481Scans GraphQL operation files and generates a persisted query manifest, written to a file (
--manifest-path) or stdout. Supports--include/--excludeglob filtering and a configurable--root-dir. -
Add
--checkflag to thesubgraph-publishGitHub Action - @SharkBaitDLS PR #3375 -
Add
APOLLO_ROVER_SKIP_UPDATEto disable all auto-updating at once - @SharkBaitDLS PR #3378 fixes #1892Setting the
APOLLO_ROVER_SKIP_UPDATEenvironment variable (to1ortrue) opts out of all of Rover's auto-updating in a single switch: it skips both the rover self-update check (the--skip-update-checkflag) and thesupergraph/routerplugin auto-updates (the--skip-updateflag), so on-the-fly plugin resolution uses an already-installed plugin instead of contacting the registry. This is aimed at tightly-controlled monorepo/CI setups that want plugin versions lockstep with CI and prod. The explicitrover installcommand still installs as requested.
🐛 Fixes
-
Include error cause detail in
--format jsonoutput - @SharkBaitDLS PR#3408 fixes #1320When a command fails, its JSON output now includes a
causesarray carrying the sameCaused by:detail that plain-text output already shows, outermost cause first. -
Install plugins without relying on a writable system temp directory - @SharkBaitDLS PR #3385 fixes #1422
Rover now extracts downloaded
supergraph/routerplugin tarballs inside its own install directory rather than the system temp dir (TMPDIR//tmp), so installations can succeed on read-only filesystems. -
Return a clear error when composition produces no output - @SharkBaitDLS PR #3384 fixes #1904
-
Fall back to an installed plugin when the registry is unreachable - @SharkBaitDLS PR #3362 fixes #1791 #1808
When Rover needs the latest
supergraphorrouterplugin but can't reach the plugin registry (an outage, a network blip, or simply being offline), it now falls back to the newest compatible plugin already installed in~/.rover/binwith a warning instead of failing outright. Exact version pins still return an error. -
Extend the timeout for plugin downloads - @SharkBaitDLS PR #3358 #3386 fixes #1583 #1867
Plugin downloads no longer inherit the 30s default that bounds API requests. With
--client-timeoutunset, downloads get a 300s default timeout (plus a 30s connection timeout so a genuinely-offline run still fails fast). When--client-timeoutis provided, it still applies to downloads as before. -
Read UTF-16 (and BOM-prefixed) schema files - @SharkBaitDLS PR #3351 fixes #653
Fs::read_filenow detects a leading byte-order mark and transcodes the file to UTF-8, so schemas saved as UTF-16 — most commonly produced by Windows PowerShell>redirects, e.g.rover graph introspect ... > schema.gql— are read instead of failing with "stream did not contain valid UTF-8". A UTF-8 BOM is stripped; files with no recognized BOM are still read as UTF-8 (preserving prior behavior), and malformed input surfaces an error rather than being silently replaced. Decoding is handled byencoding_rs. -
Restore the "pin your federation version" warning on
supergraph compose- @SharkBaitDLS PR #3347rover supergraph composeagain warns whenfederation_versionis not pinned to an exact version, reinstating the documented notice that future versions will require one. This nudge was added in #1524 and inadvertently dropped in v0.27.2 (#2411) during the supergraph-config resolution rewrite; composing against a floating1/2(or omitting the key) now once again warns and recommends pinning, to avoid pulling in breaking changes when a new federation release ships.rover devand the language server remain silent. Fixes #1510. -
Report a clearer error when schema-check polling fails on large schemas - @SharkBaitDLS PR #3349
Centralizes the poll loop between
graph/subgraph check, and surfaces a more helpful error when a check likely failed because the schema was too large to download in time. Relates to #1383.
🛠 Maintenance
- Migrate npm packaging to
cargo-npm, removing thepostinstallscript - @dotdat PR #3430 - Fix
cargo npm generateinvocation in the release workflow - @dotdat PR #3492 - Migrate to
keyring-core(keyring 4.0) - @SharkBaitDLS PR #3370 - Remove unused Pandas npm package from test tooling - @SharkBaitDLS PR #3335
- Upgrade default Federation version to 2.15 - @SharkBaitDLS PR #3472
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.41.0-rc.2
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.40.1-PR3430.4
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.40.1-PR3430.3
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.40.1-PR3430.2
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.40.0
🚀 Features
-
Add
rover schema searchsubcommand - @dotdat PR #3315Wires the new
rover schema search FILE TERMS...subcommand on top of theParsedSchema::searchengine added in PR #3262. Accept SDL from a file (or from stdin whenFILEis-), render results as text or JSON via the standardCliOutputplumbing, and support--limit/-nand--include-deprecated.
🐛 Fixes
-
Preserve auth and other reqwest helpers in the retry tower layer - @SharkBaitDLS PR #3327 fixes #3326
Rebuilds requests through
reqwest::RequestBuilderinside the retry tower layer so the builder's helper logic (which extracts auth into headers, among other things) is preserved on retried requests. Previously the layer usedreqwest::Request::try_from, which silently dropped those helpers. Also restricts retries to retriable HTTP status codes and skip gzip-decoding error responses so the underlying failure surfaces instead of manifesting as a hang. -
Rewrite
graph introspectto useapollo-compiler- @SharkBaitDLS PR #3317 fixes #3312Moves
graph introspectoff the deprecatedapollo-encodercrate and ontoapollo-compilerto pick up upstream SDL-encoding fixes that Rover had been missing. -
Batch
supergraph.yamlsubgraph changes on hot reload - @SharkBaitDLS PR #3304Applies all subgraph additions and removals from a single
supergraph.yamledit as one batch before recomposing inrover dev. Previously each change was processed individually, so removing a subgraph whose fields were referenced via@externalproduced an intermediate composition failure that persisted as the final state without recovering. -
Preserve
--graph-refsubgraphs across hot reloads - @SharkBaitDLS PR #3288Re-merges remote
--graph-refsubgraphs on everysupergraph.yamlreload whenrover devis run with both--graph-refand a local supergraph file. Previously the watcher only re-read the YAML and dropped the graph-ref-only subgraphs that had been merged in at startup. -
Fix release tagging workflow - @SharkBaitDLS PR #3309
Switches the release "refs exist" check to the exact-match GitHub tag API. Previously it used a fuzzy-matching API that incorrectly no-op'd when prior release-candidate tags existed. Also restores the original workflow names to preserve Marketplace URLs and SEO.
🛠 Maintenance
-
Retry artifact uploads in CI - @dotdat PR #3325
Adds retries to
actions/upload-artifactso transient network failures during CI uploads no longer fail builds. -
Drop unused variant-name querying - @sirdodger PR #3320
Removes the unused
variantsfield from the graph query to improve performance for graphs with many variants. -
Run
cargo +nightly fmt --allat the end ofmise run prep- @dotdat PR #3311
📚 Documentation
-
Add Docker image information to CI docs - @SharkBaitDLS PR #3318
Documents the published Docker images in the CI/CD docs and aligns action names with the links already used on the docs site.
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.39.1
🚀 Features
New rover client extract command pulls GraphQL operations out of
client code. Includes the core extraction logic, CLI wiring, and
integration tests.
New rover client check subcommand for validating client operations
against a schema.
-
Add
rover schema search- @dotdat PR #3262New subcommand under
rover schemafor searching schema contents. -
Add
--checkflag torover graph publish- @joshuaoshields95 PR
#3203
Runs graph check and graph publish as a single unit when --check
is passed.
- Add
--use-example-schemaflag tosubgraph 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/.
rover init --mcp now honors --insecure-accept-invalid-certs when
fetching templates.
🐛 Fixes
- Port axios no-proxy behavior - @SharkBaitDLS PR #3270
Restores no_proxy / NO_PROXY handling that was previously provided
by axios before its removal in 0.38.0.
-
Fix path and formatting issues in
client check/client extract-
@dotdat PR #3285 -
Use
--root-dirin client check fixture tests for cross-platform
compatibility - @samaanghani PR #3219 -
Don't run the automated update check in Docker - @SharkBaitDLS PR
#3245
Skips the rover version-update check when running inside a container so
Docker users don't see spurious update prompts.
- Workaround NPM 11 installation bug - @SharkBaitDLS PR #3230
🛠 Maintenance
- Add canonical GitHub Actions for install / subgraph / persisted
queries - @SharkBaitDLS PR #3264, #3269, #3278, #3279, #3280
New companion actions under apollographql-gh-actions/* for installing
rover and wrapping common subgraph and persisted-queries subcommands.
- Bump
apollo-language-serverto 0.8.0 - PR #3251
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.39.1-rc.3
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.39.1-rc.2
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.
v0.39.1-rc.1
This release was automatically created by GitHub Actions.
If you would like to verify that the binary you have downloaded was built from the source code in this repository, you can compute a checksum of the zipped tarball and compare it to the checksums that are included as release artifacts.
Binaries built for MacOS are signed, notarized, and automatically verified with Gatekeeper.