GitHub Projects v2: GraphQL API Bug Stalls Development Dashboard Updates

A developer looking at a digital project board, with some tasks visually stuck in the wrong column despite data updates via GraphQL.
A developer looking at a digital project board, with some tasks visually stuck in the wrong column despite data updates via GraphQL.

Inconsistent GraphQL Behavior Hinders Project Management Automation

A recent discussion in the GitHub Community sheds light on a significant inconsistency within GitHub Projects v2's GraphQL API, specifically impacting how changes to project items are reflected on board views. This issue, initially reported by user wdi-dave-roberts, highlights a divergence in behavior between the updateProjectV2ItemFieldValue mutation and the UI's drag-and-drop functionality, leading to stale project boards and hindering accurate development dashboard views.

The Core Problem: Stale Board Grouping Indexes

The crux of the problem lies in the updateProjectV2ItemFieldValue mutation's handling of single-select fields, which are often used for grouping items into columns on a board view (e.g., 'Status' or 'Stage'). While the mutation correctly updates the underlying data store, it fails to update the board-view's grouping index when an existing item's field value is changed (the 'MOVE path').

Conversely, when a new item is added to a project and its field value is set simultaneously (the 'INSERT path'), the grouping index updates correctly, and the card appears in the right column. This inconsistency means that any automation attempting to move cards between columns by updating a single-select field via GraphQL will result in the card visually remaining in its old column indefinitely, despite the data being correct.

The only current workaround for a 'stuck' card is to manually drag and drop it within the GitHub UI, which then correctly updates both the primary data and the grouping index atomically. This manual intervention defeats the purpose of API-driven automation for software engineering analytics and project management.

Reproducing the Issue

The reporter provided clear steps to reproduce the bug:

  • Part A — INSERT (Works): Create an issue, add it to a project, and set a single-select field (e.g., 'Stage=Idea') via updateProjectV2ItemFieldValue. The item appears correctly in the 'Idea' column.
  • Part B — MOVE (Fails): On an existing item, change the same single-select field to a different value (e.g., 'Stage=In Progress') via updateProjectV2ItemFieldValue. The underlying data updates, but the board view shows the item stuck in the old column ('Idea'), even after 20+ minutes. A UI drag-and-drop 'unsticks' it.

Technical Evidence

HAR captures revealed the difference in how the UI and GraphQL API handle these updates:

Drag-drop on the board fires:
PUT https://github.com/memexes/{memexProjectId}/items
Content-Type: application/json
{
  "memexProjectItemId": ,
  "fieldIds": ["Title","Assignees","Repository","Status",…],
  "memexProjectColumnValues": [{"memexProjectColumnId":"Status","value":" "}],
  "layoutType": "board"
}

Sidebar change (and equivalently, any GraphQL client call) fires:
POST https://github.com/_graphql
{
  "persistedQueryName": "updateProjectItemFieldValueMutation",
  "variables": {
    "input": {
      "fieldId": "PVTSSF_…",
      "itemId": "PVTI_…",
      "projectId": "PVT_…",
      "value": {"singleSelectOptionId": " "}
    }
  }
}

Both return a 200 status, but only the UI's REST endpoint updates the grouping index, which is critical for the visual representation on the development dashboard.

Impact on Automation and Community Engagement

This bug significantly impacts any automation relying on the GraphQL API to manage GitHub Projects v2 items, including issue templates, custom slash commands, and GitHub Actions workflows. The inability to programmatically move cards between columns without manual intervention undermines developer productivity and the reliability of project status reporting.

Adding to the frustration, the original discussion was closed by a GitHub Actions bot, citing that it was not submitted through the expected format. This highlights a potential friction point where valid technical issues, even with detailed reproduction steps and evidence, might be overlooked due to process rigidities, hindering effective community problem-solving.

The Ask

The community's request is clear: either update the updateProjectV2ItemFieldValue mutation to consistently update both the primary data and the board-view grouping index for all operations, or provide a supported API endpoint to programmatically nudge the grouping index without requiring a UI drag. Addressing this would greatly enhance the utility of GitHub Projects v2 for automated workflows and ensure that development dashboards accurately reflect project progress.

A development dashboard displaying project metrics, with one section showing outdated information, symbolizing a data synchronization issue.
A development dashboard displaying project metrics, with one section showing outdated information, symbolizing a data synchronization issue.

|

Dashboards, alerts, and review-ready summaries built on your GitHub activity.

 Install GitHub App to Start
Dashboard with engineering activity trends