NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1110 most downloaded on Packagist
A framework for serving GraphQL from Laravel
Last release 4 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
Add query and scopes arguments to the @can directive https://github.com/nuwave/lighthouse/issues/1916
query and scopes arguments to the @can directive https://github.com/nuwave/lighthouse/issues/1916Fix compatibility with Laravel Octane https://github.com/nuwave/lighthouse/pull/1911
Mark @guard and @namespace directives as repeatable https://github.com/nuwave/lighthouse/issues/1907
One column per quarter.
@guard and @namespace directives as repeatable https://github.com/nuwave/lighthouse/issues/1907Add support for custom rules that reference other arguments https://github.com/nuwave/lighthouse/pull/1903
Allow using date validation rules that reference other arguments https://github.com/nuwave/lighthouse/pull/1900
Fix ValidationErrorHandler returned error type https://github.com/nuwave/lighthouse/commit/e9f97c117a50aab3c61cb104628696a97b5bfa2b
ValidationErrorHandler returned error type https://github.com/nuwave/lighthouse/commit/e9f97c117a50aab3c61cb104628696a97b5bfa2bAdd ValidationException::fromLaravel() and ValidationErrorHandler to include validation messages in extensions https://github.com/nuwave/lighthouse/pu
ValidationException::fromLaravel() and ValidationErrorHandler to include validation messages in extensions https://github.com/nuwave/lighthouse/pull/1899Fix usage of validation rules with chained query builders with @validator https://github.com/nuwave/lighthouse/pull/1890
@validator https://github.com/nuwave/lighthouse/pull/1890Call lighthouse:clear-cache in other commands to handle schema cache version 2 https://github.com/nuwave/lighthouse/pull/1894
lighthouse:clear-cache in other commands to handle schema cache version 2 https://github.com/nuwave/lighthouse/pull/1894Add method rethrowGraphQLErrors() to testing helper to leverage PHPUnit exception testing https://github.com/nuwave/lighthouse/pull/1885
rethrowGraphQLErrors() to testing helper to leverage PHPUnit exception testing https://github.com/nuwave/lighthouse/pull/1885Add config setting cache.version to use a PHP file for the schema cache and leverage OPcache https://github.com/nuwave/lighthouse/pull/1842
cache.version to use a PHP file for the schema cache and leverage OPcache https://github.com/nuwave/lighthouse/pull/1842Fix model name determination when using interfaces https://github.com/nuwave/lighthouse/pull/1882
Add config setting non_null_pagination_results to mark the generated result type of paginated lists as non-nullable https://github.com/nuwave/lighthou
non_null_pagination_results to mark the generated result type of paginated lists as non-nullable https://github.com/nuwave/lighthouse/pull/1878Fix incorrect config key for subscriptions redis storage connection https://github.com/nuwave/lighthouse/pull/1874
Avoid conflicting relation batch loader overlaps when using dot notation in @with https://github.com/nuwave/lighthouse/pull/1871
@with https://github.com/nuwave/lighthouse/pull/1871Allow integer zero, empty string and false as valid cached values with @cache https://github.com/nuwave/lighthouse/pull/1869
@cache https://github.com/nuwave/lighthouse/pull/1869Fix combining @lazyLoad with paginated relations https://github.com/nuwave/lighthouse/pull/1867
@lazyLoad with paginated relations https://github.com/nuwave/lighthouse/pull/1867Allow JSON notation -> in column references for complex where conditions https://github.com/nuwave/lighthouse/pull/1864
-> in column references for complex where conditions https://github.com/nuwave/lighthouse/pull/1864Handle null when encoding or decoding with @globalId https://github.com/nuwave/lighthouse/pull/1862
null when encoding or decoding with @globalId https://github.com/nuwave/lighthouse/pull/1862Fix resolving relation items and count in one query https://github.com/nuwave/lighthouse/pull/1859
Add ValidationException::withMessages() https://github.com/nuwave/lighthouse/pull/1857
ValidationException::withMessages() https://github.com/nuwave/lighthouse/pull/1857Add lifecycle events StartOperationOrOperations and EndOperationOrOperations https://github.com/nuwave/lighthouse/pull/1856
StartOperationOrOperations and EndOperationOrOperations https://github.com/nuwave/lighthouse/pull/1856Support Laravel Octane https://github.com/nuwave/lighthouse/pull/1854
graphql-php lazy field definitions https://github.com/nuwave/lighthouse/pull/1851webonyx/graphql-php:^14.7 https://github.com/nuwave/lighthouse/pull/1851Pass plain values to ScoutBuilderDirective::handleScoutBuilder() https://github.com/nuwave/lighthouse/pull/1853
ScoutBuilderDirective::handleScoutBuilder() https://github.com/nuwave/lighthouse/pull/1853Add @aggregate directive https://github.com/nuwave/lighthouse/pull/1849
@aggregate directive https://github.com/nuwave/lighthouse/pull/1849DataLoader functionality into BatchLoader and ModelsLoader https://github.com/nuwave/lighthouse/pull/1849Allow @builder in combination with @search https://github.com/nuwave/lighthouse/pull/1850
@builder in combination with @search https://github.com/nuwave/lighthouse/pull/1850Avoid setting multiple @model directives on generated paginator types https://github.com/nuwave/lighthouse/pull/1837
@model directives on generated paginator types https://github.com/nuwave/lighthouse/pull/1837Add SIMPLE pagination type https://github.com/nuwave/lighthouse/pull/1816
SIMPLE pagination type https://github.com/nuwave/lighthouse/pull/1816Fix problem with table name on HAS condition with relationship on same table https://github.com/nuwave/lighthouse/pull/1795
Fix usage of closures in validation https://github.com/nuwave/lighthouse/pull/1831
Add builder option to @all directive https://github.com/nuwave/lighthouse/pull/1826
builder option to @all directive https://github.com/nuwave/lighthouse/pull/1826Update behavior of TestReponse::assertGraphQLErrorMessage to work when multiple errors are present https://github.com/nuwave/lighthouse/pull/1827
TestReponse::assertGraphQLErrorMessage to work when multiple errors are present https://github.com/nuwave/lighthouse/pull/1827Fix overly eager validation of repeatable directive usage by requiring webonyx/graphql-php:^14.6.2 https://github.com/nuwave/lighthouse/pull/1824
webonyx/graphql-php:^14.6.2 https://github.com/nuwave/lighthouse/pull/1824repeatable directive nodes into executable definitions https://github.com/nuwave/lighthouse/pull/1824Support for Apollo Federation https://github.com/nuwave/lighthouse/pull/1728
Add placeholder type _ to schema-directives.graphql https://github.com/nuwave/lighthouse/pull/1823
_ to schema-directives.graphql https://github.com/nuwave/lighthouse/pull/1823Allow @limit on FIELD_DEFINITION to fix validation errors https://github.com/nuwave/lighthouse/pull/1821
@limit on FIELD_DEFINITION to fix validation errors https://github.com/nuwave/lighthouse/pull/1821assertGraphQLErrorMessage() to TestResponse mixin https://github.com/nuwave/lighthouse/pull/1819Deprecate the globalId argument of the @upsert directive https://github.com/nuwave/lighthouse/pull/1804
GraphQLContext to StartExecution eventconnect and disconnect operations in nested mutations for HasMany and MorphMany relations https://github.com/nuwave/lighthouse/pull/1730ValidateSchema event https://github.com/nuwave/lighthouse/pull/1764subscriptions.exclude_empty https://github.com/nuwave/lighthouse/pull/1799@defer by avoiding parsing the request multiple timescomparision to comparison in generated input types for @whereHasmget being called with an empty list of subscriber IDs https://github.com/nuwave/lighthouse/pull/1759lighthouse:clear-cache not clearing cache when a custom cache store is used https://github.com/nuwave/lighthouse/pull/1788globalId argument of the @upsert directive https://github.com/nuwave/lighthouse/pull/1804Validate that @with and @withCount are not used on root fields https://github.com/nuwave/lighthouse/pull/1714
@with and @withCount are not used on root fields https://github.com/nuwave/lighthouse/pull/1714EndExecution, EndRequest https://github.com/nuwave/lighthouse/pull/1726StartExecution event https://github.com/nuwave/lighthouse/pull/1726log option from the broadcasting config to the Pusher subscription driver https://github.com/nuwave/lighthouse/pull/1733pusher/pusher-php-server version 5 https://github.com/nuwave/lighthouse/pull/1741echo driver-based subscriptions, the event name will be lighthouse-subscription https://github.com/nuwave/lighthouse/pull/1733private channel https://github.com/nuwave/lighthouse/pull/1733Mixed type in directive definitions https://github.com/nuwave/lighthouse/pull/1742Allow using the @builder directive on fields https://github.com/nuwave/lighthouse/pull/1687
@builder directive on fields https://github.com/nuwave/lighthouse/pull/1687Nuwave\Lighthouse\Scout\ScoutBuilderDirective https://github.com/nuwave/lighthouse/pull/1691@eq directive on fields https://github.com/nuwave/lighthouse/pull/1681@throttle directive to set field rate limit using Laravel rate limiting services https://github.com/nuwave/lighthouse/pull/1708@search with other directives https://github.com/nuwave/lighthouse/pull/1691Nuwave\Lighthouse\Scout https://github.com/nuwave/lighthouse/pull/1698BaseDirective loads all arguments and caches them after the first directiveHasArgument/directiveArgValue call https://github.com/nuwave/lighthouse/pull/1707@can directive https://github.com/nuwave/lighthouse/pull/1715OR conditions in HAS relations https://github.com/nuwave/lighthouse/pull/1713@guard(with: "api") should be changed to @guard(with: ["api"])https://github.com/nuwave/lighthouse/pull/1705Deprecate the globalId argument of the @delete, @forceDelete and @restore directives https://github.com/nuwave/lighthouse/pull/1660
messages argument of @rules and @rulesForArray https://github.com/nuwave/lighthouse/pull/1662@rules and @rulesForArray https://github.com/nuwave/lighthouse/pull/1662@with https://github.com/nuwave/lighthouse/pull/1528Nuwave\Lighthouse\Execution\DataLoader\BatchLoaderRegistry to instantiate arbitrary batch loaders https://github.com/nuwave/lighthouse/pull/1528@limit directive to allow clients to specify the maximum number of results to return https://github.com/nuwave/lighthouse/pull/1674@orderBy on fields https://github.com/nuwave/lighthouse/pull/1678@like directive to use a client given value to add a LIKE conditional to a database query https://github.com/nuwave/lighthouse/issues/1644webonyx/graphql-php version ^14.5globalId argument of the @delete, @forceDelete and @restore directives https://github.com/nuwave/lighthouse/pull/1660messages argument of @rules and @rulesForArray as a map with arbitrary keys https://github.com/nuwave/lighthouse/pull/1662Nuwave\Lighthouse\Execution\DataLoader\BatchLoader in favour of Nuwave\Lighthouse\Execution\DataLoader\BatchLoaderRegistry https://github.com/nuwave/lighthouse/pull/1528globalId argument definition from @update https://github.com/nuwave/lighthouse/pull/1660Carbon\Carbon is cast to Illuminate\Support\Carbon in date scalars https://github.com/nuwave/lighthouse/pull/1672@withCount and paginated relationship directives https://github.com/nuwave/lighthouse/pull/1528Make @node force load the type if it has not been loaded https://github.com/nuwave/lighthouse/pull/1659
@node force load the type if it has not been loaded https://github.com/nuwave/lighthouse/pull/1659Deprecate Nuwave\Lighthouse\Subscriptions\Subscriber::setRoot() in favour of property access
@model not extend @node accidentallyNuwave\Lighthouse\Subscriptions\Subscriber::setRoot() in favour of property accessDeprecate values for the type argument of @paginate that are not PAGINATOR or CONNECTION
php artisan lighthouse:validate-schema https://github.com/nuwave/lighthouse/pull/1494application/graphql and application/x-www-form-urlencoded properly https://github.com/nuwave/lighthouse/pull/1424repeatable https://github.com/nuwave/lighthouse/pull/1529config/lighthouse.php https://github.com/nuwave/lighthouse/pull/1533FieldBuilderDirective https://github.com/nuwave/lighthouse/pull/1636@whereAuth directive for filtering a field based on authenticated user https://github.com/nuwave/lighthouse/pull/1636@trim directive on fields to sanitize all input strings https://github.com/nuwave/lighthouse/pull/1641Illuminate\Support\Carbon instead of Carbon\CarbonNuwave\Lighthouse\Exceptions\ValidationException no longer extends Illuminate\Validation\ValidationException https://github.com/nuwave/lighthouse/pull/1185Nuwave\Lighthouse\Validation https://github.com/nuwave/lighthouse/pull/1185ArgDirectives in distinct phases: Sanitize, Validate, Transform https://github.com/nuwave/lighthouse/pull/1185ArgBuilderDirective, ArgTransformerDirective and ArgDirectiveForArray extend Directive instead of ArgDirective https://github.com/nuwave/lighthouse/pull/1185OrderByClause input for @orderBy, the argument field is now always called column https://github.com/nuwave/lighthouse/pull/1337@orderBy, @whereConditions and @whereHasConditions https://github.com/nuwave/lighthouse/pull/1337__invoke is now the only supported method name for convention based field resolver classes https://github.com/nuwave/lighthouse/pull/1422Nuwave\Lighthouse\Support\Contracts\Directive to require all directives to have an SDL definition by implementing public static definition(): string https://github.com/nuwave/lighthouse/pull/1386Nuwave\Lighthouse\Schema\Factories\DirectiveNamespacer and Nuwave\Lighthouse\Schema\Factories\DirectiveFactory into Lighthouse\Schema\DirectiveLocator https://github.com/nuwave/lighthouse/pull/1494haydenpierce/class-finder as a built-in dependency https://github.com/nuwave/lighthouse/pull/1494defaultHasOperator to Nuwave\Lighthouse\WhereConditions\Operator https://github.com/nuwave/lighthouse/pull/1412lighthouse.php:
'guard' => 'api''forceFill' => truelaragraph/utils for parsing HTTP requests https://github.com/nuwave/lighthouse/pull/1424@method call the underlying method with the arguments as ordered parameters instead of the full resolver arguments https://github.com/nuwave/lighthouse/pull/1509ErrorHandler method handle() to non-static __invoke() and allow discarding errors by returning nulllighthouse.debug config through env LIGHTHOUSE_DEBUG https://github.com/nuwave/lighthouse/pull/1592multipartGraphQL now accepts arrays instead of JSON strings https://github.com/nuwave/lighthouse/pull/1615/DateTime::ATOM for DateTimeTZ ISO 8601 compatibility https://github.com/nuwave/lighthouse/pull/1622ProvidesRules interface into ArgumentValidation and ArgumentSetValidation https://github.com/nuwave/lighthouse/pull/1628TrimDirective to the default field_middleware config in lighthouse.php https://github.com/nuwave/lighthouse/pull/1641@spread https://github.com/nuwave/lighthouse/issues/1631TestResponse::jsonGet() helper, use ->json() instead https://github.com/nuwave/lighthouse/pull/1192/filesNuwave\Lighthouse\Execution\GraphQLValidator as validation now uses Laravel's native validator https://github.com/nuwave/lighthouse/pull/1185HasArgumentPath and HasErrorBuffer and the parts of FieldFactory that calls them https://github.com/nuwave/lighthouse/pull/1185ValidationDirective abstract class in favour of validator classes https://github.com/nuwave/lighthouse/pull/1185lighthouse.orderBy, always uses column now https://github.com/nuwave/lighthouse/pull/1337Nuwave\Lighthouse\Support\Contracts\DefinedDirective interface, moving its functionality to Nuwave\Lighthouse\Support\Contracts\Directive https://github.com/nuwave/lighthouse/pull/1386lighthouse.cache.ttl setting https://github.com/nuwave/lighthouse/pull/1423Nuwave\Lighthouse\Schema\AST\PartialParser in favor of GraphQL\Language\Parser https://github.com/nuwave/lighthouse/pull/1457Nuwave\Lighthouse\Execution\GraphQLRequest singleton https://github.com/nuwave/lighthouse/pull/1424@bcrypt in favor of @hash https://github.com/nuwave/lighthouse/pull/1200@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/1135pagination_amount_argument, it is always first nowtype argument of @paginate that are not PAGINATOR or CONNECTIONAdd @morphToMany directive https://github.com/nuwave/lighthouse/pull/1604
@morphToMany directive https://github.com/nuwave/lighthouse/pull/1604Support Laravel 8 https://github.com/nuwave/lighthouse/pull/1549 and https://github.com/nuwave/lighthouse/pull/1578
Fix the type hint in GraphQLContext::user()
GraphQLContext::user()Provide the definition for @nest
@nestEnsure the @with directive works properly with polymorphic relations https://github.com/nuwave/lighthouse/pull/1517
@with directive works properly with polymorphic relations https://github.com/nuwave/lighthouse/pull/1517Deprecate Nuwave\Lighthouse\Execution\ErrorBuffer in favor of Nuwave\Lighthouse\Execution\ErrorPool https://github.com/nuwave/lighthouse/pull/1420
lighthouse:cache to compile GraphQL AST https://github.com/nuwave/lighthouse/pull/1451Nuwave\Lighthouse\Support\Http\Middleware\LogGraphQLQueries that logs every incoming GraphQL query https://github.com/nuwave/lighthouse/pull/1454Nuwave\Lighthouse\Support\Contracts\ProvidesValidationRules https://github.com/nuwave/lighthouse/pull/1487DateTimeUtc scalar https://github.com/nuwave/lighthouse/pull/1320lighthouse-config and default schema with tag lighthouse-schema instead of the previously used tags config and schema https://github.com/nuwave/lighthouse/issues/1489Nuwave\Lighthouse\Execution\ErrorPool to allow collection of partial errors https://github.com/nuwave/lighthouse/pull/1420@count directive works properly with polymorphic relations https://github.com/nuwave/lighthouse/pull/1466graphQLEnpointUrl() test helper https://github.com/nuwave/lighthouse/pull/1439Nuwave\Lighthouse\Execution\ErrorBuffer in favor of Nuwave\Lighthouse\Execution\ErrorPool https://github.com/nuwave/lighthouse/pull/1420Add @withCount directive to eager load relationship counts on field access https://github.com/nuwave/lighthouse/pull/1390
@withCount directive to eager load relationship counts on field access https://github.com/nuwave/lighthouse/pull/1390lighthouse:directive artisan command to allow choosing interfaces https://github.com/nuwave/lighthouse/pull/1251lighthouse.cache.store configuration option to set the cache store to use for schema caching https://github.com/nuwave/lighthouse/pull/1446@count directive https://github.com/nuwave/lighthouse/pull/1390lighthouse:query and lighthouse:mutation, add option --full to include the seldom needed resolver arguments $context and $resolveInfoSafeguard deletion of programmatic-types.graphql in artisan lighthouse:ide-helper
programmatic-types.graphql in artisan lighthouse:ide-helperWrite definitions for programmatically registered types to programmatic-types.graphql when running the lighthouse:ide-helper artisan command https://g
programmatic-types.graphql when running the lighthouse:ide-helper artisan command https://github.com/nuwave/lighthouse/pull/1371multipartGraphQL Lumen test helper too https://github.com/nuwave/lighthouse/pull/1395@orderBy, @whereConditions and @whereHasConditions only work on field arguments https://github.com/nuwave/lighthouse/pull/1402force_fill option in lighthouse.php https://github.com/nuwave/lighthouse/pull/1405Nuwave\Lighthouse\Support\Contracts\DefinedDirective::definition() will be moved to Nuwave\Lighthouse\Support\Contracts\Directive and replace its name() method.
This requires all directives to have an SDL definition.Pull primary key from arguments in @update before force filling them into the Model https://github.com/nuwave/lighthouse/pull/1377
@update before force filling them into the Model https://github.com/nuwave/lighthouse/pull/1377Allow passing additional headers to multipartGraphQL test helper https://github.com/nuwave/lighthouse/pull/1342
multipartGraphQL test helper https://github.com/nuwave/lighthouse/pull/1342guard for all authentication functionality https://github.com/nuwave/lighthouse/pull/1343pagination.default_count https://github.com/nuwave/lighthouse/pull/1352has(), overwrite() and registerNew() to TypeRegistry to control if types should be overwritten when registering duplicates https://github.com/nuwave/lighthouse/pull/1361forceFill() when mutating models https://github.com/nuwave/lighthouse/pull/1348lighthouse.php https://github.com/nuwave/lighthouse/pull/1352paginate_max_count will change to pagination.max_count https://github.com/nuwave/lighthouse/pull/1352registerNew() method of TypeRegistry will be removed in favor of register(), which will change its behavior to throw when registering duplicates https://github.com/nuwave/lighthouse/pull/1361Fix nesting OR within AND condition when using @whereConditions https://github.com/nuwave/lighthouse/pull/1341
@whereConditions https://github.com/nuwave/lighthouse/pull/1341Throw an exception if the return type declaration class for a relation does not exist https://github.com/nuwave/lighthouse/pull/1338
Fix converting lists of lists into ArgumentSet https://github.com/nuwave/lighthouse/pull/1335
Fix creating multiple nested BelongsTo relationships on the same level when previous records with matching attributes exist https://github.com/nuwave/
Add flag --json to print-schema to output JSON instead of GraphQL SDL https://github.com/nuwave/lighthouse/pull/1268
--json to print-schema to output JSON instead of GraphQL SDL https://github.com/nuwave/lighthouse/pull/1268TestResponseMixin https://github.com/nuwave/lighthouse/pull/1308DateTimeTz https://github.com/nuwave/lighthouse/pull/1311_lighthouse_ide_helper.php with php artisan lighthouse:ide-helperbelongsTo relations at the same level https://github.com/nuwave/lighthouse/pull/1285Cache::has() https://github.com/nuwave/lighthouse/pull/1290resolve() helper with Lumen-compatible app() https://github.com/nuwave/lighthouse/pull/1305@create and @update on nested input object fields that accept an array of input types https://github.com/nuwave/lighthouse/pull/1316SubscriptionRegistry implementation using the container https://github.com/nuwave/lighthouse/pull/1286ExceptionHandler https://github.com/nuwave/lighthouse/pull/1303auth()->user() return the authenticated user instead of null https://github.com/nuwave/lighthouse/pull/1306Add AttemptAuthentication middleware to optionally log in users and delegate access guards to the field level https://github.com/nuwave/lighthouse/pul
AttemptAuthentication middleware to optionally log in users and delegate access guards to the field level https://github.com/nuwave/lighthouse/pull/1197lighthouse:directive to add directive class https://github.com/nuwave/lighthouse/pull/1240@with directive https://github.com/nuwave/lighthouse/pull/1068TestingServiceProvider for @mock when running unit tests https://github.com/nuwave/lighthouse/pull/1244Your coding agent can read these notes before it upgrades. Set up the MCP server →