Breaking Changes for Enums


#1

On August 9th at around 21:30 CEST, we accidentally released a breaking change to all Graphcool projects. All potentially affected customers have received an email. If you use enums with lower case letters as arguments in a query or mutation, your project is affected:

mutation updateArticle($newGroup: ARTICLE_ARTICLE_GROUP) {
  updateArticle(id: "", group: $newGroup)
}

or

query someArticles($group: ARTICLE_ARTICLE_GROUP) {
  allArticles(filter: {group: $group}) {
    id
  }
}

Even though this change was released accidentally, the current behaviour is intended and should have been applied about two months ago when we released project-wide enums. As such, we decided to not roll back this change after thorough consideration.

We take breaking changes very seriously and are usually announcing them months in advance, while sending periodic reminders during the deprecation period to all affected customers, to allow for a smooth transition.

Unfortunately, we weren’t able to implement such a smooth transition in this case, and I am terribly sorry about this.

Here is more information about what changed exactly:

  • given an enum in a Graphcool project called ArticleGroup which is used in fields for the types Article and Blog, we would previously generate the input types ARTICLE_ARTICLE_GROUP and BLOG_ARTICLE_GROUP
  • with the new behaviour, both input types are now equal and are called ArticleGroup
  • This means that whenever you previously were referencing ARTICLE_ARTICLE_GROUP or BLOG_ARTICLE_GROUP as a GraphQL Variable in a mutation or query, you now need to reference ArticleGroup instead.

I apologize if one of your applications is affected by this breaking change. If you need help with the migration or you are unable to update your client code, please reach out to me directly and I’ll be able to help you with the migration.

Best regards
– Nilan