NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1053 most downloaded on Packagist
A framework for serving GraphQL from Laravel
Last release 11 days ago
27 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
429 releases · first in 2016
Fixed resolving composite object @key in default model entity resolver for federation https://github.com/nuwave/lighthouse/pull/2365
@key in default model entity resolver for federation https://github.com/nuwave/lighthouse/pull/2365Automatically set up test traits RefreshSchemaCache and TestsSubscriptions
RefreshSchemaCache and TestsSubscriptionsOne column per quarter.
Add option --omit-built-in to lighthouse:ide-helper to avoid duplicate built-in definitions https://github.com/nuwave/lighthouse/pull/2362
--omit-built-in to lighthouse:ide-helper to avoid duplicate built-in definitions https://github.com/nuwave/lighthouse/pull/2362Remove deprecated BatchLoader::forgetInstances() in GraphQL
declare(strict_types=1)Paginator with resolver modeFieldBuilderDirective::handleFieldBuilder() https://github.com/nuwave/lighthouse/pull/2234ResolveInfo::enhanceBuilder()CacheKeyAndTags::key() https://github.com/nuwave/lighthouse/pull/2176BatchedEntityResolver to maintain the keys given in array $representations https://github.com/nuwave/lighthouse/pull/2286@whereKey in @delete, @forceDelete and @restore https://github.com/nuwave/lighthouse/pull/2289$subscriber->socket_id and request()->header('X-Socket-ID') https://github.com/nuwave/lighthouse/pull/2298first non-nullable@paginate according to the number of items requestedresolver in directive @complexityNuwave\Lighthouse\Support\Contracts\GlobalId to Nuwave\Lighthouse\GlobalId\GlobalId$id argument in NodeDirectiveArr::first(array_keys()) with array_key_first() in OrderByDirective$paginationType in PaginationType to literal constant valuesBaseDirective::directiveHasArgument from public to protectedIlluminate\Database\DatabaseManager with Illuminate\Database\ConnectionResolverInterface in RelationDirectiveDirectiveLocator::beforeLast with Str::beforeLastsubscriptions.exclude_empty to trueFieldManipulator and ArgManipulator directives on interfaces https://github.com/nuwave/lighthouse/pull/1955FieldResolver::resolveField() to return resolver function directly https://github.com/nuwave/lighthouse/pull/1706FieldMiddleware directive interface https://github.com/nuwave/lighthouse/pull/1706schema.register to schema_pathRegisterDirectiveNamespaces event https://github.com/nuwave/lighthouse/pull/2337lighthouse.php allows multiple guards https://github.com/nuwave/lighthouse/pull/2345@auth and @whereAuth support multiple guards https://github.com/nuwave/lighthouse/pull/2345Illuminate\Http\Request optional in Nuwave\Lighthouse\Support\Contracts\GraphQLContext https://github.com/nuwave/lighthouse/pull/2353Nuwave\Lighthouse\Support\Http to Nuwave\Lighthouse\Http https://github.com/nuwave/lighthouse/pull/2358_entities maintains order of representations in result https://github.com/nuwave/lighthouse/pull/2286@can with non-default @guard https://github.com/nuwave/lighthouse/pull/2276@cache directive https://github.com/nuwave/lighthouse/issues/2354TypeRegistry::search() that maybe finds a type with a given name@globalId in federation model entity resolverGraphQLContext:: setUser(?Authenticatable $user): void@whereKey to filter Models by their primary key https://github.com/nuwave/lighthouse/pull/2289@where on fields https://github.com/nuwave/lighthouse/pull/2306MakeGraphQLRequests test methods https://github.com/nuwave/lighthouse/pull/2333MakesGraphQLRequests and TestResponseMixin and docs in phpunit integration section https://github.com/nuwave/lighthouse/pull/2343laragraph/utils:^2 https://github.com/nuwave/lighthouse/pull/2356@whereNull and @whereNotNull https://github.com/nuwave/lighthouse/pull/2357TestResponse::assertGraphQLErrorCategory()Nuwave\Lighthouse\Exceptions\GenericExceptioncategoryNuwave\Lighthouse\Exceptions\RendersErrorsExtensionsNuwave\Lighthouse\Execution\ExtensionErrorHandlerSerializable implementationClearsSchemaCachelighthouse.unbox_bensampo_enum_enum_instancesArgumentSet::enhanceBuilder(), use ResolveInfo::enhanceBuilder()globalId argument from @delete, @forceDelete and @restore https://github.com/nuwave/lighthouse/pull/2289MockResolverBatchLoader::forgetInstances() in GraphQLIlluminate\Foundation\Exceptions\Handler::renderablenon_null_pagination_results and always behave as if it were trueNuwave\Lighthouse\Subscriptions\Contracts\StoresSubscriptions::subscriberByRequest()FieldValueGraphQL::executeQuery() and GraphQL::prepSchema()@field directive argument args https://github.com/nuwave/lighthouse/pull/1706ScoutServiceProvider by defaultgraphqlMiddlewareAdapter https://github.com/nuwave/lighthouse/pull/2358Nothing 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
Add configuration option parse_source_location https://github.com/nuwave/lighthouse/pull/2498
parse_source_location https://github.com/nuwave/lighthouse/pull/2498### Added - Support Laravel 10
Allow Illuminate\Http\UploadedFile in test helper multipartGraphQL() argument array $files
Illuminate\Http\UploadedFile in test helper multipartGraphQL() argument array $filesFix batch loading relations of parents that were partially cached https://github.com/nuwave/lighthouse/issues/2269
Fix batch loading a paginated BelongsToMany relation with duplicates https://github.com/nuwave/lighthouse/pull/2277
Allow configuring regular expression constraints for the registered route with lighthouse.route.where
lighthouse.route.whereWrap base ResolveInfo class and extend it with public ArgumentSet $argumentSet in response to PHP 8.2 deprecating dynamic properties
ResolveInfo class and extend it with public ArgumentSet $argumentSet in response to PHP 8.2 deprecating dynamic propertiesAdd argument builder to directive @aggregate https://github.com/nuwave/lighthouse/pull/2255
builder to directive @aggregate https://github.com/nuwave/lighthouse/pull/2255Avoid duplicated data in relation directives with paginator with non-unique foreign keys https://github.com/nuwave/lighthouse/pull/2252
Allow interfaces to implement interfaces https://github.com/nuwave/lighthouse/pull/2248
@clearCache directive repeatable https://github.com/nuwave/lighthouse/pull/2243Throw on unsafe usage of @can directive argument resolved on mutations https://github.com/nuwave/lighthouse/pull/2238
@can directive argument resolved on mutations https://github.com/nuwave/lighthouse/pull/2238Support returning data in a Paginator from option resolver in @paginator directive https://github.com/nuwave/lighthouse/pull/2232
Paginator from option resolver in @paginator directive https://github.com/nuwave/lighthouse/pull/2232Validate only one of any mutually exclusive directive arguments is defined https://github.com/nuwave/lighthouse/pull/2233
Handle unset properties in field_middleware directives https://github.com/nuwave/lighthouse/pull/2224
field_middleware directives https://github.com/nuwave/lighthouse/pull/2224Allow requests with header X-Requested-With: XMLHttpRequest in EnsureXHR middleware https://github.com/nuwave/lighthouse/pull/2221
X-Requested-With: XMLHttpRequest in EnsureXHR middleware https://github.com/nuwave/lighthouse/pull/2221Fix GraphQL enum names generation from column names containing symbols https://github.com/nuwave/lighthouse/pull/2219
Allow easily overwriting enum description generation from bensampo/laravel-enum https://github.com/nuwave/lighthouse/pull/2218
bensampo/laravel-enum https://github.com/nuwave/lighthouse/pull/2218Extract uploaded file name calculation to method in @upload directive https://github.com/nuwave/lighthouse/pull/2215
@upload directive https://github.com/nuwave/lighthouse/pull/2215Add @upload directive https://github.com/nuwave/lighthouse/pull/2121
@upload directive https://github.com/nuwave/lighthouse/pull/2121Allow configuring security.disable_introspection through the env variable LIGHTHOUSE_SECURITY_DISABLE_INTROSPECTION https://github.com/nuwave/lighthou
security.disable_introspection through the env variable LIGHTHOUSE_SECURITY_DISABLE_INTROSPECTION https://github.com/nuwave/lighthouse/pull/2205Open EnsureXHR middleware for extension https://github.com/nuwave/lighthouse/pull/2202
EnsureXHR middleware for extension https://github.com/nuwave/lighthouse/pull/2202Clean duplicate @param in field_full.stub https://github.com/nuwave/lighthouse/pull/2198
@param in field_full.stub https://github.com/nuwave/lighthouse/pull/2198Allow pagination amount to be 0 https://github.com/nuwave/lighthouse/pull/2105
Add description generation to LaravelEnumType based on BenSampo\Enum\Enum::getClassDescription() https://github.com/nuwave/lighthouse/pull/2177
LaravelEnumType based on BenSampo\Enum\Enum::getClassDescription() https://github.com/nuwave/lighthouse/pull/2177Fix @convertEmptyStringsToNull on fields and matrices https://github.com/nuwave/lighthouse/pull/2142
@convertEmptyStringsToNull on fields and matrices https://github.com/nuwave/lighthouse/pull/2142Fix directive option model on schema elements using built-in types https://github.com/nuwave/lighthouse/pull/2196
model on schema elements using built-in types https://github.com/nuwave/lighthouse/pull/2196Respect explicit maxCount: null or defaultCount: null in pagination directives over config lighthouse.pagination https://github.com/nuwave/lighthouse/
maxCount: null or defaultCount: null in pagination directives over config lighthouse.pagination https://github.com/nuwave/lighthouse/pull/2193Fix cursor pagination always returning the first page when no fields from the pageInfo are requested https://github.com/nuwave/lighthouse/pull/2190
pageInfo are requested https://github.com/nuwave/lighthouse/pull/2190Allow returning Laravel\Scout\Builder from custom builder in @all and @paginate https://github.com/nuwave/lighthouse/pull/2183
Laravel\Scout\Builder from custom builder in @all and @paginate https://github.com/nuwave/lighthouse/pull/2183Handle missing models in @can with option resolved https://github.com/nuwave/lighthouse/pull/2187
@can with option resolved https://github.com/nuwave/lighthouse/pull/2187Allow checking policies against resolved models in @can https://github.com/nuwave/lighthouse/pull/2159
@can https://github.com/nuwave/lighthouse/pull/2159Implement @hasManyThrough directive https://github.com/nuwave/lighthouse/pull/2178
@hasManyThrough directive https://github.com/nuwave/lighthouse/pull/2178Always register TestingServiceProvider in order to ensure macros are recognized by Larastan https://github.com/nuwave/lighthouse/pull/2171
TestingServiceProvider in order to ensure macros are recognized by Larastan https://github.com/nuwave/lighthouse/pull/2171@paginate directive will use a simple pagination strategy when the paginator info is not requested https://github.com/nuwave/lighthouse/pull/2170
@paginate directive will use a simple pagination strategy when the paginator info is not requested https://github.com/nuwave/lighthouse/pull/2170Cache related code moves to the cache namespace, add new contract CacheKeyAndTags https://github.com/nuwave/lighthouse/pull/2162
CacheKeyAndTags https://github.com/nuwave/lighthouse/pull/2162Include field that produced a RateLimitException in its message https://github.com/nuwave/lighthouse/pull/2149
RateLimitException in its message https://github.com/nuwave/lighthouse/pull/2149Show proper validation error when referencing standard types in union https://github.com/nuwave/lighthouse/pull/2157
union https://github.com/nuwave/lighthouse/pull/2157Allow pagination types for @morphToMany https://github.com/nuwave/lighthouse/pull/2154
@morphToMany https://github.com/nuwave/lighthouse/pull/2154Consider @rename when picking the value of a key in @cache https://github.com/nuwave/lighthouse/pull/2155
@rename when picking the value of a key in @cache https://github.com/nuwave/lighthouse/pull/2155Add columns and distinct args to @count directive https://github.com/nuwave/lighthouse/pull/2138
columns and distinct args to @count directive https://github.com/nuwave/lighthouse/pull/2138Add @cacheControl directive https://github.com/nuwave/lighthouse/pull/2136
@cacheControl directive https://github.com/nuwave/lighthouse/pull/2136Provide additional information about detected usages of deprecated elements https://github.com/nuwave/lighthouse/pull/2141
Allow @cacheKey on field definition https://github.com/nuwave/lighthouse/pull/2131
@cacheKey on field definition https://github.com/nuwave/lighthouse/pull/2131Omit non-nullable arguments in @convertEmptyStringsToNull https://github.com/nuwave/lighthouse/pull/2130
@convertEmptyStringsToNull https://github.com/nuwave/lighthouse/pull/2130Generate classes as final through artisan commands https://github.com/nuwave/lighthouse/pull/2127
final through artisan commands https://github.com/nuwave/lighthouse/pull/2127RelationDirective/batchload_relations will consider null and default connection name the same connection https://github.com/nuwave/lighthouse/pull/212
RelationDirective/batchload_relations will consider null and default connection name the same connection https://github.com/nuwave/lighthouse/pull/2125Add @convertEmptyStringsToNull directive https://github.com/nuwave/lighthouse/pull/2123
@convertEmptyStringsToNull directive https://github.com/nuwave/lighthouse/pull/2123Relation from custom builder on @all and @paginate directive https://github.com/nuwave/lighthouse/pull/2120Respect non-default primary key in nested one-to-many relations https://github.com/nuwave/lighthouse/pull/2119
Distinguish between client-safe and non-client-safe errors in TestResponse::assertGraphQLError()
TestResponse::assertGraphQLError()Add method TestResponse::assertGraphQLDebugMessage() to test internal errors https://github.com/nuwave/lighthouse/pull/2117
TestResponse::assertGraphQLDebugMessage() to test internal errors https://github.com/nuwave/lighthouse/pull/2117Your coding agent can read these notes before it upgrades. Set up the MCP server →