{
  "id": 19536854,
  "title": "Zero-Downtime GraphQL Evolution in GitLab: Fixing Multi-Node Upgrades with @gl_introduced",
  "url": "https://urgent.news/2026/11/11/zero-downtime-graphql-evolution-in-gitlab-fixing-multi-node-upgrades",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-11T19:06:32.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/manishpatel00/zero-downtime-graphql-evolution-in-gitlab-fixing-multi-node-upgrades-with-glintroduced-24el"
  },
  "original_language": "en",
  "account": "GitLab's Credits user page on the GitLab platform experienced issues during multi-node upgrades due to mixed-version deployments. In this scenario, some nodes had upgraded to GitLab 19.6 while others remained on the previous version, GitLab 19.5. This created a compatibility challenge between the frontend and backend components.\n\nThe problem arose when new GraphQL arguments, such as `includeNonBillable`, were introduced in the 19.6 version. The updated frontend queries started using this argument, for example, `usedFlowTypes(includeNonBillable: true)`. However, the older 19.5 nodes could not recognize this new argument, resulting in validation errors.\n\nThe @gl_introduced directive was introduced to address this issue. It allows frontend GraphQL operations to declare when a field or selection was introduced, enabling the system to handle mixed-version deployments more effectively. By using this directive, new GraphQL fields and arguments become compatible with older versions of the system during rolling upgrades, ensuring a smoother deployment process.",
  "summary": "A deep dive into GraphQL schema evolution, rolling deployments, mixed-version infrastructure, and backward-compatible frontend queries. Distributed applications rarely upgrade every server instance simultaneously. In a multi-node deployment, different application versions can temporarily coexist while a rolling upgrade is in progress. This creates an important compatibility challenge: frontend…",
  "key_points": [
    "Multi-node upgrades caused compatibility issues between GitLab 19.6 and 19.5.",
    "New GraphQL argument includeNonBillable introduced in 19.6.",
    "@glintroduced directive resolves mixed-version deployment challenges."
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}