As you know GraphQL requires the schema to execute your queries. In Sitecore implementation, the schema is regenerated every time you touch templates.

What we recently discovered, that if you have separate CD and CM, schema on the CD node will not be refreshed after publish.

Luckily, this is quite easy to fix. You need to create an event handler and subscribe to *publish:end:remote *event.

public class TemplateUpdateHandler : Sitecore.Services.GraphQL.Content.EventHandlers.TemplateUpdateHandler
{
  public TemplateUpdateHandler(IGraphQLEndpointManager endpointManager) : base(endpointManager)
  {
  }``  public void OnPublishEndRemote(object sender, EventArgs e)
  {
    base.Reset(null);
  }
}