Feature Request: Add ValidateOptions to Field decorator

Author: gustavorpsCreated Apr 2, 2026Updated Apr 3, 2026
LabelsEnhancement :new:Community :family_man_girl:Discussion :speech_balloon:

Is your feature request related to a problem? When using type-graphql with class-level validation, I need to override or disable validation on a per-field basis. Currently, FieldOptions only extends AdvancedOptions (which covers deprecation, naming, complexity, and description), but it does not include ValidateOptions. This means validate and validateFn cannot be configured at the field level, only at the class/resolver level via @ObjectType or @Resolver.

Solution that I like Extend FieldOptions to also include ValidateOptions:

typescript
// Current
export type FieldOptions = AdvancedOptions & {
    simple?: boolean;
};

// Proposed
export type FieldOptions = AdvancedOptions & ValidateOptions & {
    simple?: boolean;
};

This would allow per-field validation control, for example:

typescript
@ObjectType()
class Comment {
  @Field(() => String, { validate: false })
  rawHtml: string;

  @Field(() => String, { validateFn: customValidator })
  body: string;
}

Alternatives that I considered

  • Class-level validate: false + manual field validation, works but defeats the purpose of declarative validation and requires imperative boilerplate inside resolvers.
  • Custom middleware on the field, possible but verbose; requires a separate @UseMiddleware decorator per field, which pollutes the type definition and splits validation config across multiple decorators.
  • Wrapping the type in a new @ObjectType, over-engineered for what is essentially a per-field config concern.

Additional context ValidateOptions is already defined in decorators/types.d.ts and used in @Arg and @Args decorators, so the plumbing already exists. Adding it to FieldOptions is a consistent extension of an existing pattern within the library.

Related types for reference:

  • FieldOptions, currently AdvancedOptions & { simple?: boolean }
  • ValidateOptions,{ validate?: ValidateSettings; validateFn?: ValidatorFn }

Source: MichalLytek/type-graphql