🎉 Welcome to the new GraphQL-ESLint website. Try new playground page →

Overview

Each rule has emojis denoting:

  • 📄 if the rule applies to schema documents
  • 📦 if the rule applies to operations
  • 🚀 graphql-eslint rule
  • 🔮 graphql-js rule
  • 🔧 if some problems reported by the rule are automatically fixable by the --fix command line (opens in a new tab) option
  • 💡 if some problems reported by the rule are manually fixable by editor suggestions (opens in a new tab)
Name                    Description    Config    📄 / 📦🚀 / 🔮🔧 / 💡
alphabetizeEnforce arrange in alphabetical order for type fields, enum values, input object fields, operation selections and more.all📄 📦🚀🔧
description-styleRequire all comments to follow the same style (either block or inline).recommended📄🚀💡
executable-definitionsA GraphQL document is only valid for execution if all definitions are either operation or fragment definitions.recommended📦🔮
fields-on-correct-typeA GraphQL document is only valid if all fields selected are defined by the parent type, or are an allowed meta field such as __typename.recommended📦🔮💡
fragments-on-composite-typeFragments use a type condition to determine if they apply, since fragments can only be spread into a composite type (object, interface, or union), the type condition must also be a composite type.recommended📦🔮
input-nameRequire mutation argument to be always called "input" and input type to be called Mutation name + "Input".all📄🚀💡
known-argument-namesA GraphQL field is only valid if all supplied arguments are defined by that field.recommended📄 📦🔮💡
known-directivesA GraphQL document is only valid if all @directives are known by the schema and legally positioned.recommended📄 📦🔮
known-fragment-namesA GraphQL document is only valid if all ...Fragment fragment spreads refer to fragments defined in the same document.recommended📦🔮
known-type-namesA GraphQL document is only valid if referenced types (specifically variable definitions and fragment conditions) are defined by the type schema.recommended📄 📦🔮💡
lone-anonymous-operationA GraphQL document that contains an anonymous operation (the query short-hand) is only valid if it contains only that one operation definition.recommended📦🔮
lone-executable-definitionRequire queries, mutations, subscriptions or fragments to be located in separate files.all📦🚀
lone-schema-definitionA GraphQL document is only valid if it contains only one schema definition.recommended📄🔮
match-document-filenameThis rule allows you to enforce that the file name should match the operation name.all📦🚀
naming-conventionRequire names to follow specified conventions.recommended📄 📦🚀💡
no-anonymous-operationsRequire name for your GraphQL operations. This is useful since most GraphQL client libraries are using the operation name for caching purposes.recommended📦🚀💡
no-case-insensitive-enum-values-duplicatesDisallow case-insensitive enum values duplicates.recommended📄🚀💡
no-deprecatedEnforce that deprecated fields or enum values are not in use by operations.recommended📦🚀💡
no-duplicate-fieldsChecks for duplicate fields in selection set, variables in operation definition, or in arguments set of a field.recommended📦🚀💡
no-fragment-cyclesA GraphQL fragment is only valid when it does not have cycles in fragments usage.recommended📦🔮
no-hashtag-descriptionRequires to use """ or " for adding a GraphQL description instead of #.recommended📄🚀💡
no-one-place-fragmentsDisallow fragments that are used only in one place.all📦🚀
no-root-typeDisallow using root types mutation and/or subscription.📄🚀💡
no-scalar-result-type-on-mutationAvoid scalar result type on mutation type to make sure to return a valid state.all📄🚀💡
no-typename-prefixEnforces users to avoid using the type name in a field name while defining your schema.recommended📄🚀💡
no-undefined-variablesA GraphQL operation is only valid if all variables encountered, both directly and via fragment spreads, are defined by that operation.recommended📦🔮
no-unreachable-typesRequires all types to be reachable at some level by root level fields.recommended📄🚀💡
no-unused-fieldsRequires all fields to be used at some level by siblings operations.📄🚀💡
no-unused-fragmentsA GraphQL document is only valid if all fragment definitions are spread within operations, or spread within other fragments spread within operations.recommended📦🔮
no-unused-variablesA GraphQL operation is only valid if all variables defined by an operation are used, either directly or within a spread fragment.recommended📦🔮
one-field-subscriptionsA GraphQL subscription is valid only if it contains a single root field.recommended📦🔮
overlapping-fields-can-be-mergedA selection set is only valid if all fields (including spreading any fragments) either correspond to distinct response names or can be merged without ambiguity.recommended📦🔮
possible-fragment-spreadA fragment spread is only valid if the type condition could ever possibly be true: if there is a non-empty intersection of the possible parent types, and possible types which pass the type condition.recommended📦🔮
possible-type-extensionA type extension is only valid if the type is defined and has the same kind.📄🔮💡
provided-required-argumentsA field or directive is only valid if all required (non-null without a default value) field arguments have been provided.recommended📄 📦🔮
relay-argumentsSet of rules to follow Relay specification for Arguments.relay📄🚀
relay-connection-typesSet of rules to follow Relay specification for Connection types.relay📄🚀
relay-edge-typesSet of rules to follow Relay specification for Edge types.relay📄🚀
relay-page-infoSet of rules to follow Relay specification for PageInfo object.relay📄🚀
require-deprecation-dateRequire deletion date on @deprecated directive. Suggest removing deprecated things after deprecated date.all📄🚀💡
require-deprecation-reasonRequire all deprecation directives to specify a reason.recommended📄🚀
require-descriptionEnforce descriptions in type definitions and operations.recommended📄🚀
require-field-of-type-query-in-mutation-resultAllow the client in one round-trip not only to call mutation but also to get a wagon of data to update their application.all📄🚀
require-id-when-availableEnforce selecting specific fields when they are available on the GraphQL type.recommended📦🚀💡
require-import-fragmentRequire fragments to be imported via an import expression.📦🚀💡
require-nullable-fields-with-oneofRequire input or type fields to be non-nullable with @oneOf directive.all📄🚀
require-nullable-result-in-rootRequire nullable fields in root types.all📄🚀💡
require-type-pattern-with-oneofEnforce types with @oneOf directive have error and ok fields.all📄🚀
scalar-leafsA GraphQL document is valid only if all leaf fields (fields without sub selections) are of scalar or enum types.recommended📦🔮💡
selection-set-depthLimit the complexity of the GraphQL operations solely by their depth. Based on graphql-depth-limit (opens in a new tab).recommended📦🚀💡
strict-id-in-typesRequires output types to have one unique identifier unless they do not have a logical one. Exceptions can be used to ignore output types that do not have unique identifiers.recommended📄🚀
unique-argument-namesA GraphQL field or directive is only valid if all supplied arguments are uniquely named.recommended📦🔮
unique-directive-namesA GraphQL document is only valid if all defined directives have unique names.recommended📄🔮
unique-directive-names-per-locationA GraphQL document is only valid if all non-repeatable directives at a given location are uniquely named.recommended📄 📦🔮
unique-enum-value-namesA GraphQL enum type is only valid if all its values are uniquely named.📄🔮
unique-field-definition-namesA GraphQL complex type is only valid if all its fields are uniquely named.recommended📄🔮
unique-fragment-nameEnforce unique fragment names across your project.all📦🚀
unique-input-field-namesA GraphQL input object value is only valid if all supplied fields are uniquely named.recommended📦🔮
unique-operation-nameEnforce unique operation names across your project.all📦🚀
unique-operation-typesA GraphQL document is only valid if it has only one type per operation.recommended📄🔮
unique-type-namesA GraphQL document is only valid if all defined types have unique names.recommended📄🔮
unique-variable-namesA GraphQL operation is only valid if all its variables are uniquely named.recommended📦🔮
value-literals-of-correct-typeA GraphQL document is only valid if all value literals are of the type expected at their position.recommended📦🔮💡
variables-are-input-typesA GraphQL operation is only valid if all the variables it defines are of input types (scalar, enum, or input object).recommended📦🔮
variables-in-allowed-positionVariables passed to field arguments conform to type.recommended📦🔮