|
| 1 | +--- |
| 2 | +title: A year of releases in review |
| 3 | +description: >- |
| 4 | + Over the past year, Keystone has received numerous updates, new features, and |
| 5 | + essential bug fixes. Here’s a snapshot of the key improvements over the past |
| 6 | + 12 months. |
| 7 | +publishDate: 2024-08-07 |
| 8 | +authorName: The Keystone Team |
| 9 | +authorHandle: https://twitter.com/keystonejs |
| 10 | +--- |
| 11 | +Over the past year, Keystone has received numerous updates, new features, and essential bug fixes. Here’s a snapshot of the key improvements over the past 12 months. |
| 12 | + |
| 13 | +## Major Enhancements |
| 14 | + |
| 15 | +### Enhanced Database Integration |
| 16 | + |
| 17 | +One of the standout improvements this year is the update to Prisma `v5.13.0`. This update brings better performance and more robust features for database interactions. Alongside this, Keystone now supports extending the `PrismaClient`, providing more flexibility and control over database operations. |
| 18 | + |
| 19 | +### Interactive Transactions |
| 20 | + |
| 21 | +Keystone introduced `context.transaction`, allowing for interactive transactions within the `context`. This feature simplifies managing transactions, ensuring data integrity and consistency across operations. |
| 22 | + |
| 23 | +### Improved Migration Commands |
| 24 | + |
| 25 | +New migration commands like `keystone migrate create` and `keystone migrate apply` were added, making database migrations more straightforward and user-friendly. |
| 26 | + |
| 27 | +### Validation and Hooks |
| 28 | + |
| 29 | +A significant update was the overhaul of validation hooks for fields and lists. |
| 30 | + |
| 31 | +Hooks like`{field|list}.hooks.validate.[create|update|delete]` provide developers with more granular control over data validation, enhancing data integrity and application reliability. |
| 32 | + |
| 33 | +## Breaking Changes and Cleanups |
| 34 | + |
| 35 | +### Identifier Overhaul |
| 36 | + |
| 37 | +Keystone made a substantial change by switching file and image identifiers to random 128-bit `base64url` by default, replacing the older UUID system. This change improves security and performance. |
| 38 | + |
| 39 | +### Type and Parameter Cleanup |
| 40 | + |
| 41 | +Several deprecated types and parameters were removed, streamlining the codebase and improving overall efficiency. Notable removals include the old `AdminUIConfig`, `DatabaseConfig`, `GraphQLConfig`, and `ServerConfig` types, among others. |
| 42 | + |
| 43 | +### Prisma and GraphQL Schema Handling |
| 44 | + |
| 45 | +The handling of Prisma and GraphQL schemas saw improvements, with configurations now more centralised and consistent. This includes moving schema-related configurations to more intuitive locations within the setup. |
| 46 | + |
| 47 | +## New Features |
| 48 | + |
| 49 | +### Prisma Error Logging |
| 50 | + |
| 51 | +Server-side Prisma errors are now logged with `console.error`, making debugging easier and ensuring that critical issues are more visible during development. |
| 52 | + |
| 53 | +### Async HTTP Server Extension |
| 54 | + |
| 55 | +Support for asynchronous operations during HTTP server startup was added, allowing for more complex and dynamic server initialization processes. |
| 56 | + |
| 57 | +### GraphQL Error Messages |
| 58 | + |
| 59 | +Improved error messaging for GraphQL errors in the Admin UI list view helps developers quickly identify and resolve issues. |
| 60 | + |
| 61 | +### Admin UI Enhancements |
| 62 | + |
| 63 | +The Admin UI saw multiple enhancements, including a responsive menu for smaller devices, better handling of field omissions, and consistent sub-field ordering for image fields. |
| 64 | + |
| 65 | +## Bug Fixes |
| 66 | + |
| 67 | +Keystone JS addressed numerous bugs throughout the year, improving stability and performance. Some key fixes include: |
| 68 | + |
| 69 | +- Resolving issues with session strategies in the auth package. |
| 70 | +- Fixing default values and ordering for various field types. |
| 71 | +- Addressing Prisma migration errors in non-interactive environments. |
| 72 | +- Correcting access and overflow issues in the AdminUI. |
| 73 | + |
| 74 | +## Keystatic-powered docs & blog |
| 75 | + |
| 76 | +A growing portion of the Keystone documentation (as well as this blog!) is now content-editable via [Keystatic](https://keystatic.com), another [Thinkmill](https://thinkmill.com.au) product. |
| 77 | + |
| 78 | +Keystatic shares common DNA with Keystone, but operates without a database. Instead, it stores content in Markdown/YAML/JSON/Markdoc/MDX on the local file system, and syncs it with the GitHub API. |
| 79 | + |
| 80 | +The content can be edited via a world-class Admin UI (powered by [Keystar UI](https://github.com/Thinkmill/keystatic/tree/main/design-system) and coming to Keystone soon!), but also directly from the [codebase's content files](https://github.com/keystonejs/keystone/tree/main/docs/content). |
| 81 | + |
| 82 | +## Community Contributions |
| 83 | + |
| 84 | +Keystone JS has a vibrant community that continually contributes to its growth ❤️ |
| 85 | + |
| 86 | +This year, we saw first-time contributions from several developers, helping to enhance the platform with new features and fixes. |
| 87 | + |
| 88 | +We’d like to extend our heartfelt thanks to all the contributors who have dedicated their time and effort to make Keystone JS better. |
| 89 | + |
| 90 | +### Acknowledgements |
| 91 | + |
| 92 | +A special acknowledgment goes to some of our key community contributors who have made significant impacts: |
| 93 | + |
| 94 | +- [@renovate](https://github.com/renovate) for consistent contributions and improvements across various packages. |
| 95 | +- [@borisno2](https://github.com/borisno2) for significant enhancements and bug fixes. |
| 96 | +- [@iamandrewluca](https://github.com/iamandrewluca) for introducing new capabilities and extending functionality. |
| 97 | + |
| 98 | +Additionally, we’d like to highlight a few first-time contributors who have joined the community and made valuable contributions: |
| 99 | + |
| 100 | +{% hint kind="tip" %} |
| 101 | +[@ggpwnkthx](https://github.com/ggpwnkthx), [@dagrinchi](https://github.com/dagrinchi), [@Grumaks](https://github.com/Grumaks), [@PaulAroo](https://github.com/PaulAroo), [@leopoldkristjansson](https://github.com/leopoldkristjansson), [@ScottAgirs](https://github.com/ScottAgirs), [@lahirurane-rau](https://github.com/lahirurane-rau), [@MarcelMalik](https://github.com/MarcelMalik), [@TweededBadger](https://github.com/TweededBadger) |
| 102 | +{% /hint %} |
| 103 | + |
| 104 | +## Looking Ahead |
| 105 | + |
| 106 | +The Keystone JS team remains committed to delivering high-quality updates and features. We are excited about the future and look forward to continuing to enhance the platform, making it even more powerful and user-friendly. |
| 107 | + |
| 108 | +Thank you to all the community members and contributors for your ongoing support and contributions! Here’s to another year of innovation and improvement with Keystone! |
0 commit comments