10. Publishing to GraphOS


We're nearing the finish line! To bring our development workflow full circle, we need to account for our schema changes in .

In this lesson, we will:

  • Publish a schema to the schema registry using the
  • Inspect the results of a in Studio

Coordinating schema and code changes

So far, we've only been talking about schema changes and how they should be published to . But we can't forget about our codebase changes: our , listings and reviews! These include the changes we made to the datafetcher methods and the schema file itself. We need to deploy our local changes to production.

Because we're just working with local in tutorial-land, we don't need to actually deploy any of our changes. You can learn more about coordinating schema and code changes in a production environment in this Apollo tech note.

Publishing schema changes

We do need to publish our changes to .

To publish our , we'll use the 's rover subgraph publish command again. We don't need to include the routing URL this time, since it hasn't changed.

rover subgraph publish <APOLLO_GRAPH_REF> \
--schema <SCHEMA_FILE_PATH> \

Note: Remember, you can find your erence in Studio, at the top of the graph's README page, or in your .env file.

Let's do it!

Publishing listings

Remember, the listings first: we want to make sure the registry knows we've turned Listing into an type.

In a terminal window opened to the listings directory, paste in the rover subgraph publish command. Make sure you replace the parameters with your own values.

rover subgraph publish <APOLLO_GRAPH_REF> \
--schema ./src/schema.graphql \
--name listings

You'll need to confirm that we're publishing a localhost URL. If all goes well, we should see the terminal output with a message confirming that the has been published and the has been updated!

Checking and publishing reviews

Next up, the reviews . Last time we ran a check on reviews, we saw the error about turning Listing into an . Now that we've published the listings , let's repeat the check on our reviews to see if that error has disappeared.

Open a terminal to the reviews , and run the following command. (Be sure to substitute in your own !)

rover subgraph check <APOLLO_GRAPH_REF> \
--schema ./src/schema.graphql \
--name reviews

Our output should show that everything is good to go—our changes are safe, and that pesky error is nowhere to be seen.

Checking the proposed schema for subgraph reviews against Airlock@current
There were no changes detected in the composed API schema, but the core schema was modified.
Operation Check [PASSED]:
Compared 2 schema changes against 3 operations.
│ Change │ Code │ Description │
│ PASS │ FIELD_ADDED │ type `Listing`: field `reviews` added │
│ PASS │ FIELD_ADDED │ type `Listing`: field `overallRating` added │
View operation check details at: https://studio.apollographql.com/graph/[LINK_TO_YOUR_CHECK]

Now let's publish these changes. In the same terminal, run the rover subgraph publish command for your reviews .

rover subgraph publish <APOLLO_GRAPH_REF> \
--schema ./src/schema.graphql \
--name reviews

Inspecting a launch in Studio

What happens after a schema is published to the registry? A starts! Let's take a peek at that process in Studio.

Navigate to the Launches page. Click on the latest in the list.


The Studio Launches page showing the results of the latest launch

We can see that the Launch Sequence section for this specific follows the steps we had talked about earlier:

  • Build Completed refers to the process of building a (also known as ).
  • Schema Published refers to the made available to Apollo Uplink.
  • Launch Completed is self-explanatory! Our launch successfully completed! 🎉

On the right-hand side, we can also take a look at the output by clicking on the Supergraph Schema button.


The Studio Launches page, highlighting the Supergraph Schema button

This shows us a summary of our schema changes.


The Studio Launches page showing the supergraph schema button and a summary of changes

If everything looks good to go, we should be able to for the new reviews and overallRating for a particular listing.

🚀 Feature in production!

First, make sure that you've stopped your rover dev process, and booted up your . Remember that the router binary we downloaded connects to the —so we're ready to test out our published changes "in production"! (Well, as close to production as we'll get in this tutorial!)

In a new terminal window, navigate to the router folder, then run:

APOLLO_KEY=<APOLLO_KEY> APOLLO_GRAPH_REF=<APOLLO_GRAPH_REF> ./router --config router-config.yaml

Note: Remember, you can find the values to APOLLO_KEY and APOLLO_GRAPH_REF in your .env file.

Next, let's go to Explorer (in Studio this time, not Sandbox!) and run that dream .

query GetListingAndReviews {
listing(id: "listing-1") {
amenities {
reviews {

You should be seeing data come back! Our launch was successful! 🎉


Explorer - returning data from the dream query


Key takeaways

  • A launch represents the complete process of making schema updates to a . A is triggered when a schema is published to .
  • To publish a , use the rover subgraph publish command.
  • We can inspect the results of a through the Studio Launches page.

Up next

And you've done it! Though we began with a simple , we used the principles of federation and to bring a brand new API into the mix. Using entities, we connected listings to their reviews, and rolled out a new feature that will help guests when they're deciding where to make their next booking. We ensured that these new and exciting changes were safe using rover dev, , and .

Thanks for continuing with us on this journey into , , and TypeScript. Check out the other courses has to offer—and keep on building your graph!


Share your questions and comments about this lesson

This course is currently in

. Your feedback helps us improve! If you're stuck or confused, let us know and we'll help you out. All comments are public and must follow the Apollo Code of Conduct. Note that comments that have been resolved or addressed may be removed.

You'll need a GitHub account to post below. Don't have one? Post in our Odyssey forum instead.