NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1164 most downloaded on Packagist
A framework for serving GraphQL from Laravel
Last release 21 days ago
02 Sep 2026
Release timing varies
gaps range from 9 days to 3 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
428 releases · first in 2016
Fix Laravel version detection for Lumen https://github.com/nuwave/lighthouse/pull/1224
Access nested inputs with dot notation using the find option of @can https://github.com/nuwave/lighthouse/pull/1216
find option of @can https://github.com/nuwave/lighthouse/pull/1216@hash directive which uses Laravel's hashing configuration https://github.com/nuwave/lighthouse/pull/1200passOrdered to @method to pass just the arguments as ordered parameters https://github.com/nuwave/lighthouse/pull/1208input, interface and enum types https://github.com/nuwave/lighthouse/pull/1203streamGraphQL() helper in Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen https://github.com/nuwave/lighthouse/pull/1222@bcrypt in favor of @hash https://github.com/nuwave/lighthouse/pull/1200@method will call the underlying method with the arguments as ordered parameters instead of the full resolver arguments https://github.com/nuwave/lighthouse/pull/1208One column per quarter.
Deprecate Nuwave\Lighthouse\Schema\Source\SchemaSourceProvider#setRootPath(), this function is never called or used anywhere within Lighthouse. It wil…
columnsEnum argument to the @whereConditions, @whereHasConditions and @orderBy directives https://github.com/nuwave/lighthouse/pull/1150@can when @forceDelete or @restore are used, the client does not have to filter explicitly https://github.com/nuwave/lighthouse/pull/1157Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen for usage with Lumen https://github.com/nuwave/lighthouse/pull/1100Nuwave\Lighthouse\Testing\UsesTestSchema to enable using a dummy schema for testing custom Lighthouse extensions https://github.com/nuwave/lighthouse/pull/1171Nuwave\Lighthouse\ClientDirectives\ClientDirective to correctly get the arguments passed through a client directive https://github.com/nuwave/lighthouse/pull/1184streamGraphQL() helper method to Nuwave\Lighthouse\Testing\MakesGraphQLRequests for simple testing of streamed responses, such as @defer https://github.com/nuwave/lighthouse/pull/1184interface or union and may correspond to multiple different models https://github.com/nuwave/lighthouse/pull/1035@rename https://github.com/nuwave/lighthouse/pull/1166null https://github.com/nuwave/lighthouse/pull/1174upsert across two levels of BelongsTo relations https://github.com/nuwave/lighthouse/pull/1169ArgBuilderDirective such as @eq when the argument is nested deeply within the input https://github.com/nuwave/lighthouse/pull/1176Nuwave\Lighthouse\Testing\MakesGraphQLRequestsLumen test helper https://github.com/nuwave/lighthouse/pull/1186@defer correctly https://github.com/nuwave/lighthouse/pull/1184Nuwave\Lighthouse\Schema\Source\SchemaSourceProvider#setRootPath(), this function is never called or used anywhere within Lighthouse.
It will be removed from the interface.Avoid erasing the model information from the wrapping paginated results type when defining a paginated @hasMany field after a field with @paginate htt
type when defining a paginated @hasMany field after a field with @paginate https://github.com/nuwave/lighthouse/pull/1149Deprecated the @middleware directive, as it violates the boundary between HTTP and GraphQL request handling. Use @guard or other field middleware dire…
Nuwave\Lighthouse\Support\Contracts\ArgResolver directive interface https://github.com/nuwave/lighthouse/pull/899@create, @update, @upsert and @delete to function as nested arg resolvers https://github.com/nuwave/lighthouse/pull/899apply argument @rules is an array https://github.com/nuwave/lighthouse/pull/1092@whereConditions for IN, IS NULL and BETWEEN operators https://github.com/nuwave/lighthouse/pull/1099sync, syncWithoutDetaching and connect https://github.com/nuwave/lighthouse/pull/1110@orderBy to a given whitelist and generate an enum definition for it https://github.com/nuwave/lighthouse/pull/1118->graphQL() test helper https://github.com/nuwave/lighthouse/pull/1127@guard directive to handle authentication https://github.com/nuwave/lighthouse/pull/1135@whereHasConditions directive to filter query results based on the existence of a relationship https://github.com/nuwave/lighthouse/pull/1140Nuwave\Lighthouse\Execution\MutationExecutor in favor of modular nested arg resolvers https://github.com/nuwave/lighthouse/pull/899@whereConditions programmatically and allow overwriting it through a service provider https://github.com/nuwave/lighthouse/pull/1099@whereConditions or @orderBy directives https://github.com/nuwave/lighthouse/pull/1118name() function generically in the BaseDirective class https://github.com/nuwave/lighthouse/pull/1098@whereConstraints directive to @whereConditions https://github.com/nuwave/lighthouse/pull/1140ProvidesRules) to merge the rules before validating https://github.com/nuwave/lighthouse/pull/1082OR conditions in @whereConditions correctly https://github.com/nuwave/lighthouse/pull/1099null or simply no id when using @upsert https://github.com/nuwave/lighthouse/pull/1114field within the OrderByClause used for @orderBy will be renamed to column in v5 https://github.com/nuwave/lighthouse/pull/1118@middleware directive, as it violates the boundary between HTTP and GraphQL request handling.
Use @guard or other field middleware directives instead https://github.com/nuwave/lighthouse/pull/1135NOT conditional when using @whereConditions https://github.com/nuwave/lighthouse/pull/1125Enable multiple queries in a single request by clearing BatchLoader instances after executing each query https://github.com/nuwave/lighthouse/pull/103
BatchLoader instances after executing each query https://github.com/nuwave/lighthouse/pull/1030Add INPUT_FIELD_DEFINITION to allowed locations for the @builder directive https://github.com/nuwave/lighthouse/pull/1074
INPUT_FIELD_DEFINITION to allowed locations for the @builder directive https://github.com/nuwave/lighthouse/pull/1074@enum as a directive class so it shows up in schema-directives.graphql and can potentially be overwritten https://github.com/nuwave/lighthouse/pull/1078Add syncWithoutDetaching option for BelongsToMany and MorphToMany relationships https://github.com/nuwave/lighthouse/pull/1031
syncWithoutDetaching option for BelongsToMany and MorphToMany relationships https://github.com/nuwave/lighthouse/pull/1031injectArgs option to @can directive to pass along client defined arguments to the policy check https://github.com/nuwave/lighthouse/pull/1043batchload_relations https://github.com/nuwave/lighthouse/pull/1059Nuwave\Lighthouse\Execution\DataLoader\BatchLoader#loadMany() function https://github.com/nuwave/lighthouse/pull/973@rename directive to work with arguments and input fields https://github.com/nuwave/lighthouse/issues/521@can directive to validate permissions using @softDeletes directive. https://github.com/nuwave/lighthouse/pull/1042DefinitionException when missing a type in the type registry https://github.com/nuwave/lighthouse/pull/1066INPUT_FIELD_DEFINITION to orderBy directive location https://github.com/nuwave/lighthouse/pull/1069Add @scope directive for adding a scope to the query builder https://github.com/nuwave/lighthouse/pull/998
@scope directive for adding a scope to the query builder https://github.com/nuwave/lighthouse/pull/998$description property when generating enum values from a BenSampo\Enum\Enum class https://github.com/nuwave/lighthouse/pull/1027Handle null being passed to a nullable argument that is an input object type https://github.com/nuwave/lighthouse/pull/1021
null being passed to a nullable argument that is an input object type https://github.com/nuwave/lighthouse/pull/1021Fix conversion of client directives after the schema was cached https://github.com/nuwave/lighthouse/pull/1019
Handle null being passed to a nullable argument that is a list of type https://github.com/nuwave/lighthouse/pull/1016
null being passed to a nullable argument that is a list of type https://github.com/nuwave/lighthouse/pull/1016Add @upsert directive and nested mutation operations to create or update a model regardless whether it exists https://github.com/nuwave/lighthouse/pul
@upsert directive and nested mutation operations to create or update a model regardless whether it exists https://github.com/nuwave/lighthouse/pull/1005Validate the correctness of the builder given to @paginate at schema build time
builder given to @paginate at schema build timebuilder argument of @paginate https://github.com/nuwave/lighthouse/pull/1011Fix regression in 4.4.0 that required matching the type returned from paginated relationship fields with the class name of the model https://github.co
Add @count directive for counting a relationship https://github.com/nuwave/lighthouse/pull/984
@count directive for counting a relationship https://github.com/nuwave/lighthouse/pull/984LaravelEnumType https://github.com/nuwave/lighthouse/pull/968@node https://github.com/nuwave/lighthouse/pull/974@modelClass directive to map types to models. It will be renamed to @model in v5 https://github.com/nuwave/lighthouse/pull/974@globalId(decode: "ID") https://github.com/nuwave/lighthouse/pull/982@spread when used within a nested input object https://github.com/nuwave/lighthouse/pull/992prefix and domain https://github.com/nuwave/lighthouse/pull/951APP_ENV != 'local' https://github.com/nuwave/lighthouse/pull/957@paginate https://github.com/nuwave/lighthouse/pull/974RegisterDirectiveNamespaces event instead of DirectiveFactory#addResolved() https://github.com/nuwave/lighthouse/pull/950@node instead of @model to resolve models through Relay's global identification https://github.com/nuwave/lighthouse/pull/974Add @restore and @forceDelete directives, similar to @delete https://github.com/nuwave/lighthouse/pull/941
@restore and @forceDelete directives, similar to @delete https://github.com/nuwave/lighthouse/pull/941@softDeletes and @trashed directives to enable filtering soft deleted models https://github.com/nuwave/lighthouse/pull/937lighthouse:ide-helper when no custom directives are defined https://github.com/nuwave/lighthouse/pull/948@delete, @forceDelete and @restore during schema build time https://github.com/nuwave/lighthouse/pull/941Actually use the specified edgeType in Relay style connections https://github.com/nuwave/lighthouse/pull/939
edgeType in Relay style connections https://github.com/nuwave/lighthouse/pull/939Add @morphOne directive for polymorphic one-to-one relationships https://github.com/nuwave/lighthouse/pull/944
@morphOne directive for polymorphic one-to-one relationships https://github.com/nuwave/lighthouse/pull/944@morphTo directive for polymorphic one-to-one relationships https://github.com/nuwave/lighthouse/pull/921@morphMany directive for polymorphic one-to-many relationships https://github.com/nuwave/lighthouse/pull/944^6.0 https://github.com/nuwave/lighthouse/pull/926lighthouse:ide-helper for generating a definition file with all schema directives https://github.com/nuwave/lighthouse/pull/933Unbox laravel-enum inputs when using the builder directives https://github.com/nuwave/lighthouse/pull/927
Add the @whereJsonContains directive to an input value as a whereJsonContains filter
@whereJsonContains directive to an input value as a whereJsonContains filter__invoke when referencing methods in directives and when looking for default resolvers or type resolvers https://github.com/nuwave/lighthouse/issues/882@whereContraints and generate definitions for an Enum type and an Input type that are restricted to the defined columns https://github.com/nuwave/lighthouse/pull/916MakesGraphQLRequests https://github.com/nuwave/lighthouse/pull/916__invoke in v5 https://github.com/nuwave/lighthouse/issues/882ValidationDirective not setting the mutation or query arguments to itself https://github.com/nuwave/lighthouse/pull/915Add the @namespace directive as a replacement for the removed @group directive https://github.com/nuwave/lighthouse/pull/768
@namespace directive as a replacement for the removed @group directive https://github.com/nuwave/lighthouse/pull/768@defer extension now supports deferring nested fields of mutations https://github.com/nuwave/lighthouse/pull/855Nuwave\Lighthouse\Schema\Directives\ValidationDirective https://github.com/nuwave/lighthouse/pull/846@belongsToMany directive to support pivot data on a custom Relay style Edge type https://github.com/nuwave/lighthouse/pull/871connect, disconnect and delete operations for nested mutations upon MorphTo relationships https://github.com/nuwave/lighthouse/pull/879Illuminate\Contracts\Config\Repository instead of Illuminate\Config\Repository https://github.com/nuwave/lighthouse/issues/832@can when issuing mass updates on multiple models https://github.com/nuwave/lighthouse/pull/838private in @cache directive even when the user is not authenticated https://github.com/nuwave/lighthouse/pull/843@include directive, it is semantically opposite to @skip, when using it with @defer https://github.com/nuwave/lighthouse/pull/855@whereConstraints https://github.com/nuwave/lighthouse/pull/872@model directive in a type that has a list field https://github.com/nuwave/lighthouse/pull/883@include and @skip directives that are part of the GraphQL spec show up in introspection and fix handling of default values in custom client directives https://github.com/nuwave/lighthouse/pull/892webonyx/graphql-php to ^0.13.2 https://github.com/nuwave/lighthouse/pull/768Node* to Type* https://github.com/nuwave/lighthouse/pull/768TypeManipulator, FieldManipulator and ArgManipulator https://github.com/nuwave/lighthouse/pull/768DocumentAST class to enable a more performant implementation https://github.com/nuwave/lighthouse/pull/768lighthouse.cache.enable by default https://github.com/nuwave/lighthouse/pull/768config/lighthouse.php and bring it up to date with the latest changes in the base configuration file https://github.com/nuwave/lighthouse/pull/820SubscriptionExceptionHandler into namespace Nuwave\Lighthouse\Subscriptions\Contracts https://github.com/nuwave/lighthouse/pull/819first instead of count.
The config pagination_amount_argument can be used to change the argument name https://github.com/nuwave/lighthouse/pull/852ArgValidationDirective to ProvidesRules and drop get prefix from the methods within https://github.com/nuwave/lighthouse/pull/846@can against configurable.
The previous behavior of implicitly using the id argument for finding a specific model to authorize against now no longer works. https://github.com/nuwave/lighthouse/pull/856Nuwave\Lighthouse\Schema\Types\LaravelEnumType wrapper to map to Enum instances internally https://github.com/nuwave/lighthouse/pull/908@group directive in favor of @middleware and @namespace https://github.com/nuwave/lighthouse/pull/768ArgFilterDirective interface in favor of the ArgBuilderDirective interface https://github.com/nuwave/lighthouse/pull/821@whereBetween and @whereNotBetween directives https://github.com/nuwave/lighthouse/pull/821@spread directive instead of the flatten argument of @create/@update https://github.com/nuwave/lighthouse/pull/822dispatch aliases fire and class for dispatching through @event https://github.com/nuwave/lighthouse/pull/823GraphQL facade and the container alias graphql https://github.com/nuwave/lighthouse/pull/824if for specifying the ability that has to be met in @can https://github.com/nuwave/lighthouse/pull/838pagination_amount_argument will be removed in v5Add compatibility layer to allow @middleware to support Lumen https://github.com/nuwave/lighthouse/pull/786
@middleware to support Lumen https://github.com/nuwave/lighthouse/pull/786decode to @globaldId to control the result of decoding https://github.com/nuwave/lighthouse/pull/796cache.ttl for customizing expiration time of schema cache https://github.com/nuwave/lighthouse/pull/801Nuwave\Lighthouse\Testing\MakesGraphQLRequests https://github.com/nuwave/lighthouse/pull/802@rules and @rulesForArray https://github.com/nuwave/lighthouse/pull/812@whereConstraints https://github.com/nuwave/lighthouse/pull/800Illuminate\Contracts\Events\Dispatcher instead of concrete implementation in SubscriptionBroadcaster https://github.com/nuwave/lighthouse/pull/805GraphQL facade and the container alias graphql will be removed in v4Use the spec-compliant default deprecation reason for @deprecate directive https://github.com/nuwave/lighthouse/pull/787
@deprecate directive https://github.com/nuwave/lighthouse/pull/787Add @whereConstraints directive that offers flexible query capabilities to the client https://github.com/nuwave/lighthouse/pull/753
@whereConstraints directive that offers flexible query capabilities to the client https://github.com/nuwave/lighthouse/pull/753controller config option will be removed in v4 https://github.com/nuwave/lighthouse/pull/781Respect the model's connection for database transaction during @create and @update https://github.com/nuwave/lighthouse/pull/777
@create and @update https://github.com/nuwave/lighthouse/pull/777You can now omit an input argument from a query that uses the @spread directive without getting an error https://github.com/nuwave/lighthouse/pull/774
input argument from a query that uses the @spread directive without getting an error https://github.com/nuwave/lighthouse/pull/774SubscriptionExceptionHandler will be moved to the namespace Nuwave\Lighthouse\Subscriptions\ContractsThrow error if pagination amount <= 0 is requested https://github.com/nuwave/lighthouse/pull/765
<= 0 is requested https://github.com/nuwave/lighthouse/pull/765Default the config to always set the Accept: application/json header https://github.com/nuwave/lighthouse/pull/743
Accept: application/json header https://github.com/nuwave/lighthouse/pull/743first instead of count in v4.
The config pagination_amount_argument can be used to change the argument name now https://github.com/nuwave/lighthouse/pull/752ErrorBuffer directly, its dependencies can not be resolved through the container https://github.com/nuwave/lighthouse/pull/756GraphQLRequest singleton between multiple requests to prevent a common error in test execution https://github.com/nuwave/lighthouse/pull/761Allow rebinding a custom GlobalId resolver https://github.com/nuwave/lighthouse/pull/739
Sync existing models in belongsToMany relations using nested mutations when creating https://github.com/nuwave/lighthouse/pull/707
@spread directive to reshape nested input arguments https://github.com/nuwave/lighthouse/pull/680@builder directive to quickly specify a single method to apply constraints to the query builder https://github.com/nuwave/lighthouse/pull/680new_between_directives config to use the new between directives now https://github.com/nuwave/lighthouse/pull/680@spread instead of the flatten argument of @create/@update https://github.com/nuwave/lighthouse/pull/680ArgBuilderDirective instead of the ArgFilterDirective https://github.com/nuwave/lighthouse/pull/680@whereBetween and @whereNotBetween will take a single input object instead of being spread across two args https://github.com/nuwave/lighthouse/pull/680Flatten the namespace for the built-in directives https://github.com/nuwave/lighthouse/pull/700
Sync and connect existing models in morphToMany relations using nested mutations https://github.com/nuwave/lighthouse/pull/707
Adapt to the new Laravel way and add an alias dispatch for the @event directive https://github.com/nuwave/lighthouse/pull/719
dispatch for the @event directive https://github.com/nuwave/lighthouse/pull/719fire and class for dispatching through @event https://github.com/nuwave/lighthouse/pull/719Support the @deprecated directive https://github.com/nuwave/lighthouse/pull/522
@defer client directive https://github.com/nuwave/lighthouse/pull/422@rulesForArray https://github.com/nuwave/lighthouse/pull/427@hasMany and @paginator directives now support an additional argument defaultCount that sets a default value for the generated field argument count https://github.com/nuwave/lighthouse/pull/428@can directive https://github.com/nuwave/lighthouse/pull/431@inject with dot notation to set nested value https://github.com/nuwave/lighthouse/pull/511@deprecated directive https://github.com/nuwave/lighthouse/pull/522@paginate to limit the maximum requested count https://github.com/nuwave/lighthouse/pull/569guard argument to @auth directive https://github.com/nuwave/lighthouse/pull/584@orderBy argument directive for client-side dynamic ordering https://github.com/nuwave/lighthouse/pull/659@can directive https://github.com/nuwave/lighthouse/pull/684@method now receive the same 4 resolver arguments that all other resolvers do https://github.com/nuwave/lighthouse/pull/486connect argument https://github.com/nuwave/lighthouse/pull/514 https://github.com/nuwave/lighthouse/pull/549@can more friendly https://github.com/nuwave/lighthouse/pull/515webonyx/graphql-php to ^0.13 and PHP to >= 7.1 https://github.com/nuwave/lighthouse/pull/517DirectiveRegistry with DirectiveFactory to lazy load directives https://github.com/nuwave/lighthouse/pull/520Date scalar to startOfDay, fixes equality checks https://github.com/nuwave/lighthouse/pull/452@validate directive in favor of @rules https://github.com/nuwave/lighthouse/pull/427@field directive to using the resolver argument https://github.com/nuwave/lighthouse/pull/435@security directive in favor of defining security options through the config https://github.com/nuwave/lighthouse/pull/435resolver argument of @interface and @union to resolveType https://github.com/nuwave/lighthouse/pull/435Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →