TL;DR
Strapi v5.0.0-beta.2: Enhanced Features, Bug Fixes, and Performance Improvements
This beta release brings significant improvements to Strapi v5, including bulk content release capabilities, non-localized fields for internationalization, GraphQL GET query support, and various bug fixes. The release focuses on enhancing developer experience with better API organization, improved security with dependency updates, and refined content management workflows. This update is particularly valuable for developers working with internationalized content and those using GraphQL for their API needs.
Highlight of the Release
- Bulk actions for content releases to manage multiple entries at once
- Non-localized fields for internationalization to maintain consistency across languages
- GraphQL GET query support with authentication for better caching and CDN integration
- Database identifier shortening with migration support
- Improved handling of relations with lazy loading
- Security enhancements with dependency updates
Migration Guide
Database Identifier Shortening
This release includes a breaking change related to database identifiers. The identifiers have been shortened and an internal migration has been added. If you're using direct database queries or have custom code that relies on specific database identifier formats, you'll need to update your code accordingly.
API Registry Refactoring
The API registry has been refactored, which may affect custom plugins or extensions that interact with it directly. Review your custom code that interacts with the API registry to ensure compatibility.
Public Interface Cleanup
The public interface of strapi/strapi has been cleaned up, which may affect imports in custom code. If you're importing from internal paths that are no longer exposed, you'll need to update your imports to use the public API.
Package Structure Changes
Content Manager admin has been moved to its own package. If you have custom code that extends or modifies the Content Manager, you may need to update your imports and references.
Upgrade Recommendations
For Beta Testers
As this is a beta release (v5.0.0-beta.2), it's recommended for testing and evaluation purposes only. Do not use in production environments.
For those already using v5.0.0-beta.1, upgrading to beta.2 is recommended to benefit from the bug fixes and new features. Pay special attention to the database identifier shortening change if you have custom code that interacts directly with the database.
Before upgrading:
- Create a complete backup of your database and project files
- Review the breaking changes, especially regarding database identifiers
- Test the upgrade in a development environment before applying to staging or production-like environments
After upgrading:
- Test all custom plugins and extensions thoroughly
- Verify that internationalized content works correctly, especially with the new non-localized fields feature
- Check that GraphQL queries function as expected, particularly if you're using GET requests
Bug Fixes
Content Management Fixes
- Fixed an issue where creating a new locale didn't pre-fill non-internationalized fields
- Resolved a problem with locale validation when not creating content for all locales
- Fixed relations lazy loading to improve performance and reliability
- Corrected the capitalization in scheduling information for content releases
- Fixed an issue where the edit release modal would close on error, causing loss of user input
Upload and File Management
- Added support for private upload providers
- Fixed file name sanitization when uploading images to prevent security issues
- Refactored signing URL in Data Transfer Service (DTS)
Internationalization and Localization
- Fixed timezone handling in content releases to ensure proper UTC time-based creation
- Resolved component UID resolution issues
Admin Interface
- Fixed the NotFoundPage to be properly within authenticated admin panel routes
- Ensured purchase pages are shown correctly with Cloud plans
New Features
Bulk Actions for Content Releases
A major enhancement in this release is the addition of bulk actions for content releases. Content editors can now select multiple entries and perform actions like publish, unpublish, and add to release in a single operation. This significantly improves workflow efficiency when managing large amounts of content.
Non-localized Fields for Internationalization
The internationalization system now supports non-localized fields, allowing certain content to remain consistent across all language versions. This feature is particularly useful for content that should be identical regardless of locale, such as codes, identifiers, or globally standardized information. The UI now includes an earth icon to symbolize these localized fields.
GraphQL GET Query Support
GraphQL now supports GET queries with authentication, which is advantageous for caching, CDNs, and other performance optimizations. This removes an unnecessary restriction that previously blocked authenticated GET queries to the /graphql endpoint.
Zod Validation Integration
Initial integration of Zod for validation has been added, providing a more type-safe approach to data validation throughout the application. This lays the groundwork for more robust validation patterns in future releases.
Security Updates
Dependency Security Updates
- Updated sanitize-html (and types) from 2.11.0 to 2.13.0 to address security advisory 1096639
- Upgraded @koa/cors from 3.4.3 to 5.0.0 to fix security advisory 1095223
File Upload Security
- Improved file name sanitization when uploading images to prevent potential security vulnerabilities
Performance Improvements
Relations and Data Handling
- Improved relations lazy loading for better performance when working with related content
- Cleaned up document service relation transforms for more efficient data processing
- Simplified the history meta object for better performance and reduced complexity
Dependencies and Build Optimizations
- Upgraded to Prettier 3.2.5 with support for dynamic imports of pure ESM
- Upgraded Lerna and NX for better monorepo management
- Upgraded Rimraf to 5.0.5 for improved file deletion performance
- Removed React Helmet in favor of more modern alternatives
- Upgraded @koa/cors from 3.4.3 to 5.0.0 for better CORS handling
Impact Summary
Strapi v5.0.0-beta.2 represents a significant step forward in the v5 development cycle, focusing on developer experience, content management workflows, and performance optimizations.
The addition of bulk actions for content releases addresses a key workflow pain point, allowing content editors to manage multiple entries simultaneously. This can dramatically improve efficiency for teams working with large content volumes.
The non-localized fields feature for internationalization solves a common challenge in multilingual content management, ensuring consistency across languages where needed while still allowing localization elsewhere.
GraphQL GET query support enhances API flexibility, particularly for scenarios involving caching and CDNs, which can lead to better performance for end users.
Database identifier shortening may require attention from developers with custom code, but provides long-term benefits for database management.
Security improvements through dependency updates address known vulnerabilities, keeping Strapi installations safer.
Overall, this beta release demonstrates Strapi's commitment to improving both developer and content editor experiences while maintaining a focus on performance and security.