What graphile/crystal shipped
Written by FoxPlug from the repository's own releases; not affiliated with Graphile. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/graphile/crystal; Graphile did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of September 28, 2026
What shipped
- Graphile-build-pg 5.1.5 changes how dataplanPg and grafast helpers are imported in the introspection plugin to follow a cleaner pattern. Release
- Fixed a bug where connection fields would unnecessarily fetch data when only requesting totalCount with pagination arguments like first: 0. Pull request #3194
- Grafast 1.1.4 now reports field errors when list fields receive non-array values instead of silently converting to null. Release
- Optimized constraint checks for plans that have no constraints, which covers most plans. Pull request #3189
- Settings loading is now more efficient since it happens on nearly every request. Pull request #3180
- Improved logic around bakedInput and list handling. Pull request #3179
- Removed maxClientQueues setting from exports to reduce pollution. Pull request #3193
Why it matters
This week brings performance improvements to request handling and connection queries, plus better error reporting for invalid list completions so clients can distinguish actual failures from null values.
Changelog entry
- Graphile-build-pg 5.1.5: Changed introspection plugin import pattern for dataplanPg and grafast helpers Release
- Grafast 1.1.4: Report field errors when list completion receives non-array values Release
- Fixed connection inefficiency where totalCount requests forced underlying collection fetches unnecessarily Pull request #3194
- Optimized constraint checks for plans without constraints Pull request #3189
- Made settings loading more efficient for frequent request-time access Pull request #3180
- Improved bakedInput and list handling logic Pull request #3179
- Removed maxClientQueues setting from public exports Pull request #3193
- Added executor queue test coverage Pull request #3195
Graphile Crystal updates: fixed connection totalCount inefficiency, improved settings loading performance, grafast now reports list errors properly, and optimized constraint checks.
Graphile Crystal had a solid week of performance and reliability improvements. We fixed a bug where connection queries unnecessarily fetched data, made settings loading more efficient since it runs on every request, and improved grafast to properly report field errors when list fields receive invalid data. We also optimized constraint checks for the common case where plans have no constraints.
Week of September 14, 2026
What shipped
- WithPgClient variants now maintain full multistep equivalence with non-WithPgClient variants through internal reworking. Pull request #3187
- PgResource.get() and.find() now automatically skip empty fetches when WHERE conditions are always falsy. Pull request #3177
- Functional PostgreSQL resource execution now has result-shape typing for PgResource.execute(), executePositional(), and executeNamed(). Pull request #3174
- PgClient type is now inferred from loaded adaptors, eliminating the need for most manual casting. Pull request #3175
- @returnType decorator now works with setof functions, fixing pagination field descriptions. Pull request #3173
- PgSelect now deduplicates queries early, matching functionality already present in PgExecutor. Pull request #3181
- PgResource.get() and.find() now accept null/undefined, reducing boilerplate like inhibitOnNull. Pull request #3178
- Experimental support added for wrapping CRUD mutations. Pull request #3185
- SmartFieldPlanResolver types in wrapPlans() have been improved. Pull request #3176
- GetGraphQLTypeByPgCodec and getTypeMetaByName now have stronger types. Pull request #3172
Why it matters
Type improvements and performance optimizations across multiple areas make development more reliable and reduce boilerplate. The fix for @returnType with setof functions and automatic skipping of empty fetches address real usability issues. Support for inferring PgClient types simplifies setup for new users.
Changelog entry
- WithPgClient variants reworked to maintain full multistep equivalence with non-WithPgClient variants Pull request #3187
- Experimental support for wrapping CRUD mutations Pull request #3185
- PgSelect now deduplicates queries early to reduce redundant work Pull request #3181
- PgResource.get() and.find() now accept null/undefined arguments Pull request #3178
- Automatic optimization to skip empty fetches when WHERE conditions are always falsy Pull request #3177
- Functional PostgreSQL resources now have result-shape typing for execute() methods Pull request #3174
- PgClient type inference from loaded adaptors reduces manual casting requirements Pull request #3175
- @returnType decorator now works with setof functions, improving pagination field descriptions Pull request #3173
- Stronger types for getGraphQLTypeByPgCodec and getTypeMetaByName Pull request #3172
This week: WithPgClient multistep equivalence, automatic empty fetch skipping, PgClient type inference from adaptors, @returnType now works with setof functions, and stronger types throughout.
Crystal shipped significant improvements this week focused on developer experience and type safety. WithPgClient regained full multistep equivalence, pgResource queries now automatically skip empty fetches, and PgClient types are inferred from loaded adaptors. The @returnType decorator now works correctly with setof functions. Type safety improvements landed across getGraphQLTypeByPgCodec, getTypeMetaByName, and functional resource execution results.