TL;DR
Strapi v3.0.0-alpha.25 brings significant improvements with a focus on bug fixes, enhancements, and new features. This release includes fixes for database operations across different SQL variants, improved error handling, and enhanced user experience with fixed notifications positioning. Notable additions include BigInt support in the admin UI, getting started videos for onboarding, and comprehensive documentation updates. The release also introduces event tracking in the front-end and improves the developer experience with better error messages and code organization.
Highlight of the Release
- New getting started videos for improved onboarding experience
- BigInt support added to the admin UI for handling larger numbers
- Fixed notifications container position to improve visibility
- Improved error handling and messaging in the File Upload plugin
- Enhanced documentation with new Installation Requirements and Quick Start guides
- Fixed database operations across different SQL variants including SQLite
Migration Guide
Lifecycle Hook Changes in Bookshelf
The lifecycle hooks in Bookshelf have been updated to be more consistent with Mongoose:
beforeFetchCollection has been renamed to beforeFetchAll
afterFetchCollection has been renamed to afterFetchAll
If you're using these hooks in your code, you'll need to update the hook names accordingly.
Email and Upload Providers
Email and upload providers are now managed from an npm organization. If you're using custom providers or extending the default ones, you may need to update your imports and dependencies.
Public Folder Path in Upload Provider
The public folder path in the local upload provider is no longer hardcoded. It now follows the strapi.config.public.path value. If you've customized the upload provider or are using a custom path for your public folder, ensure your configuration is properly set.
GraphQL Dependency Update
The GraphQL dependency has been updated to v14.1.0. If you're using GraphQL in your project, test your queries and mutations to ensure compatibility with the new version.
Upgrade Recommendations
This release contains numerous bug fixes and enhancements that improve stability, especially for SQL database users. We recommend all users upgrade to this version, particularly if you:
- Use SQLite or other SQL databases
- Work with relational data models
- Have experienced issues with lifecycle hooks
- Need BigInt support for large numbers
The upgrade process should be straightforward for most users, but pay special attention to the lifecycle hook changes in Bookshelf if you're using custom models with these hooks.
To upgrade:
- Stop your Strapi application
- Update your dependencies in package.json to point to
v3.0.0-alpha.25
- Run
npm install or yarn install
- Start your Strapi application
- Test your custom models, especially those using Bookshelf lifecycle hooks
If you've made customizations to the upload provider or are using a custom public folder path, verify that your uploads are working correctly after the upgrade.
Bug Fixes
Database and ORM Fixes
- Fixed template typo for relations in Bookshelf search
- Fixed
$pull error when deleting entries with dominant model in many-to-many relations
- Fixed 'non-constant default' error when adding timestamp fields to existing SQLite3 tables
- Added missing await statement in Bookshelf template
- Fixed triggering of beforeUpdate and afterUpdate hooks when updating documents
- Fixed SQL mutation updates
- Fixed issues with UPPERCASE/camelCase names in database operations
- Fixed user count per role on SQL databases
Authentication and User Management
- Fixed bad token generation for confirmation links
- Removed token from register route when email confirmation is required
File Upload
- Fixed hardcoded public folder path in "strapi-provider-upload-local"
- Return proper error response (400 Bad Request) when files attribute is empty
Content Management
- Fixed update entry operation when date fields are empty
- Now properly displays ID as default displayed attribute
- Fixed issue that prevented creating new entries for models with only relational fields
New Features
Getting Started Videos
A new onboarding feature has been added that provides getting started videos to help new users learn Strapi more effectively. These videos are integrated into the admin interface and include Amplitude tracking to help the Strapi team understand user engagement.
BigInt Support in Admin UI
Added support for BigInt data type in the admin UI, allowing for storage and manipulation of larger integer values. This is particularly useful for IDs, timestamps, or any other numeric data that might exceed the limits of regular integers. The implementation respects JavaScript's maximum safe integer limits.
Events in Front-end
Added event tracking capabilities throughout the front-end interface, including in the content-type builder, content manager, and users & permissions settings. This will help the Strapi team better understand how users interact with the platform and inform future improvements.
Security Updates
No specific security fixes were mentioned in this release. However, the improvements to token handling in the authentication process (fixing bad tokens for confirmation links and removing tokens from register routes when email confirmation is required) do enhance the security posture of the application by preventing potential token-related vulnerabilities.
Performance Improvements
Code Organization and Structure
- Removed relative imports in all plugins, switching to absolute paths for better maintainability and performance
- Forcefully disabled package-lock generation to prevent dependency conflicts
UI Responsiveness
- Improved OverlayBlocker component when server errors occur, reducing the wait time from 30 to 15 seconds
- Updated notifications container position to fixed, ensuring they remain visible regardless of scroll position
Impact Summary
Strapi v3.0.0-alpha.25 is a significant update that focuses on stability, user experience, and developer productivity. The release addresses numerous bugs in database operations across different SQL variants, particularly benefiting users of SQLite and other SQL databases.
The addition of BigInt support expands the data modeling capabilities, allowing for storage of larger numbers. The new getting started videos enhance the onboarding experience for new users, while the improved documentation provides clearer guidance on installation and quick start processes.
For developers, the code organization improvements with absolute paths instead of relative imports make the codebase more maintainable. The fixes to lifecycle hooks ensure more predictable behavior when working with data models.
Content managers will appreciate the UI improvements, including fixed notification positioning and better error messages when uploading files. The ability to create entries for models with only relational fields removes a previous limitation in content management.
Overall, this release represents a solid step forward in Strapi's evolution, with improvements that benefit all types of users while maintaining backward compatibility (with minor adjustments for Bookshelf lifecycle hooks).
Full Release Notes
🐛 Bug fix
- [Framework] Fix template typo for releations Bookshelf search (#2970) @absolux
- [Framework] Fix $pull error deleting entry with dominant model of many-to-many relation (#2812) @gilhardl
- [Framework] Fix 'non-constant default' error while addind timestamp field to existing sqlite3 table (#2946) @dev-drprasad
- [Framework] Added mising await statement in bookshelf template (#2864) @rejifald
- [Framework] Trigger beforeUpdate and afterUpdate hooks when update document (#2905) @henrych4
- [Framework] Forcefully disable package-lock generation (#2906) @derrickmehaffy
- [Plugin] Fix user count per role on SQL database (#2911) @lauriejim
- [Plugin] Fix for UPPERCASE / camelCase names (#2909) @EpicUsaMan
- [Plugin] The public folder path shouldn't be hard-coded in "strapi-provider-upload-local" (#2966) @ZibanPirate
- [Plugin] Fix bad token for confirmation link (#2915) @lauriejim
- [Plugin] Remove token from register route if confirm email is required (#2916) @lauriejim
- [Plugin] Fix update entry when empty date field (#2896) @soupette
- [Plugin] Display ID as default displayed attribute (#2869) @Aurelsicoko
- [Plugin] Fix for SQL Mutation Updates (#2943) @derrickmehaffy
- [Plugin] Return bad request in case of empty files attribut (#2850) @rsinelle
- [Plugin] Fix for SQLite #2879 (#2907) @EpicUsaMan
💅 Enhancement
🚀 New feature