keystone
2026-11-03The superpowered headless CMS for Node.js — built with GraphQL and React
- Maintenance
- ActiveBased on the last push: commit history is not collected yet
- License
- MITPermissive · OSI-approved
- Security
- 10 advisories2 critical, 2 high, 3 medium, 3 low · Scorecard 5.3/10
- Supported versions
- No scheduleendoflife.date does not track this project
10k stars · 1.3k forks · 160 open issues · last release 12 days ago · data checked 2 hours ago
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- 2026-07-28Jul 28, 2026
Breaking Changes
[core]Upgrades Prisma major version to 7.prismaand@prisma/clientare now peer dependencies of@keystone-6/core. You will need to install them in your project along with the relevant adapter for your database (e.g.@prisma/adapter-pg). Thedb.url,db.shadowDatabaseUrl, anddb.enableLoggingconfig options have been replaced with aprismaClientOptionsoption, this is a function which should return the configuring Prisma adapter and any other options you want to pass to the Prisma client. The Prisma Client is now generated intogenerated/prismaby default now (#9872) @emmatown[core]Removes thekeystone prismacommand, you should useprismadirectly. (#9872) @emmatown[core]Removes thekeystone migratecommands and the--with-migrationsoption, you should useprismadirectly. (#9872) @emmatown[core]Replaces@keystone-6/core/testing'sresetDatabasefunction with new implementations in@keystone-6/core/testing/postgresql,@keystone-6/core/testing/sqliteand@keystone-6/core/testing/mysql(#9872) @emmatown[auth, cloudinary, core, create-keystone-app, document-renderer, fields-document]Changes package to exclusively Node ESM. This is intended to be used byrequire(esm)and should not affect consumers beyond requiring a modern Node version.keystone buildoutputs are still CommonJS. (#9929) @emmatown[core]Moves the default field mode configuration fromui.*.defaultFieldModetofieldDefaults.ui.*.fieldModeon lists and field groups. (#9882) @emmatown[core]Fixes thepasswordfield to throw an error for inputs longer than 72 bytes when using the defaultbcryptkey derivation function (KDF) (#9486) @emmatown[core]Changes thesudoboolean on GraphQL schema extensions toscope, which is either'public'or'internal'. Code that previously checkedschema.extensions.sudoshould now checkschema.extensions.scope === 'internal'. (#9914) @emmatown[core]ChangesdisplayMode: 'count'on relationship fields to requireitemView.fieldMode: 'read'or a dynamicfieldModethat only resolves to'read'or'hidden'. (#9528) @emmatown[auth]RemovesmagicAuthLinkandpasswordResetLinkfunctionality from@keystone-6/auth(#9245) @dcousens[core]Removes{list}.descriptionand{list}.ui.description, retains{list}.graphql.descriptionfunctionality (#9672) @dcousens[core]Removesnullvalue from{field}.ui.description, replace with empty string or omit the key (#9672) @dcousens[core]Changes field meta from{field}.pathto{field}.key, as used by field views (#9671) @dcousens[core]Movesstorageconfiguration toimageandfilefields, with a newStorageStrategyinterface that directly defines howput,deleteandurlfunctions (#9529) @emmatown[auth, core, fields-document]Updates tographql@^16.14.2,graphqlis now also a peer dependency in addition to a normal dependency so if you have a dependency ongraphqlyourself, you must have a compatible version installed (#9956) @emmatown[core]Moves{field}.labelto{field}.ui.label(#9631) @dcousens[core]Changes the type forui.getAdditionalFilesto be flattened, prefer function composition when wrapping (#9681) @dcousens[core]Removes the deprecated--fixflag fromkeystone postinstall(#9190) @gautamsi[core]Updates@apollo/serverto v5 (#9880) @trickreich[core]AddsitemField,originalItemField,inputFieldDataandresolvedFieldDataparameters to field hooks (#9600) @dcousens[core]Removes theisFilterable,isOrderable,defaultIsFilterable, anddefaultIsOrderableconfiguration options. Field read access can now distinguish between reading an item, filtering, and ordering throughaccess.read.item,access.read.filter, andaccess.read.order. The corresponding GraphQL schema fields can be omitted throughgraphql.omit.read, with list-wide defaults configured throughfieldDefaults.accessandfieldDefaults.graphql.omit. (#9883) @emmatown[create-keystone-app]Removes auto-install, use your preferred package manager to install dependencies instead (#9942) @emmatown[core]Changes the method by which.sudo()bypasses access control, withcontext.sudo().graphql.schemanow retaining access control as part of the GraphQL schema (#9731) @dcousens
- 2026-07-21Jul 21, 2026
Breaking Changes
[core]Upgrades Next major version to 15 (#9809) @AlanBreck @MauriceArikoglu[auth, cloudinary, core, fields-document]Upgrades React major version to 19 (#9809) @AlanBreck @MauriceArikoglu
- 2024-04-16Apr 16, 2024
Breaking Changes
[core]Changesfileandimageto use random 128-bitbase64urlidentifiers by default, notuuid(#9079) @dcousens[core]RemovesAdminUIConfig,DatabaseConfig,GraphQLConfigandServerConfigfrom@keystone-6/core/types, and some unused types - instead useKeystoneConfig['ui'],KeystoneConfig['db']and so on (#9085) @dcousens[core]Removes@keystone-6/core/systemfrom exports (#9085) @dcousens[core]Upgrade@prisma/*packages to5.12.1(#9088) @dcousens, @borisno2[core]Removes unused type parameters from typesListConfigandListAdminUIConfig(#9083) @dcousens[core]Remove the deprecated type parameters from thelistandgroupfunctions (#9083) @dcousens[core]RemovesgraphqlSchemaparameter fromextendHttpServer, usecontext.graphql.schemainstead (#9083) @dcousens[core]Movesconfig.extendGraphqlSchematoconfig.graphql.extendGraphqlSchema, similar todb.extendPrismaSchema(#9083) @dcousens[core]RemoveKeystoneConfigparameter from getAdditionalFiles function type (#9083) @dcousens[core]Remove the deprecatedcontext.exitSudofromKeystoneContext(#9083) @dcousens[core]Removecontext.experimental.initialisedLists, usecontext.__internal.lists(may break in patch) (#9083) @dcousens[core]RemoveExtendGraphqlSchematype alias, use(schema: GraphQLSchema) => GraphQLSchemainstead (withimport type { GraphQLSchema } from 'graphql'). (#9083) @dcousens, @emmatown[core]Remove the deprecated (#8721)config.server.healthCheck, useextendExpressAppinstead (#9083) @dcousens[core]RemovesListSchemaConfigtype, useKeystoneConfig['lists']instead (#9083) @dcousens[core]Removedb.additionalPrismaDatasourceProperties, useextendPrismaSchemaif needed (#9083) @dcousens[core]Removedb.prismaPreviewFeatures, useextendPrismaSchemaif needed (#9083) @dcousens[core]Removeanytype parameter fromSessionStore/SessionStoreFunctiontypes (#9083) @dcousens[core]Remove deprecatedconfig.db.useMigrations, use--with-migrationsprocess argument orkeystone prisma migrate [dev|deploy]instead (#9090) @dcousens[core]Changekeystone prismabehaviour to first requirekeystone build(orkeystone dev) (#8776) @dcousens, @borisno2
Release history
All releases on GitHubAtom feed/feed/keystonejs/keystone
Badge
[](/p/keystonejs/keystone)
03 November 2026
The following packages have been updated
@keystone-6/core@8.3.0
New Features
[core]Adds support for context functions in list labels, field labels and descriptions, and group labels and descriptions (#10025) @MauriceArikoglu
Bug Fixes
[core]Fixes empty, not empty and is not filters for relationship fields in the Admin UI (#10087) @emmatown[core]Skips unnecessary printing and parsing of GraphQL documents incontext.graphql.{run,raw}and cache GraphQL validation by document identity (#10077) @emmatown
:eyes: Review
See https://github.com/keystonejs/keystone/compare/2026-10-27...2026-11-03 to compare with our previous release.