TL;DR
Strapi v3.0.0-beta.0 marks a significant milestone with a complete architectural overhaul that separates core features from custom code. This release introduces a cleaner project structure with extensions, improves the build process, enhances the admin panel, and adds comprehensive documentation for the beta version. The release focuses on developer experience with better Windows support, Node.js v10 compatibility, and improved CLI commands. This beta release represents a major step toward a more modular, maintainable, and customizable headless CMS.
Highlight of the Release
- Complete architectural overhaul separating core features from custom code
- New extensions system for customizing controllers, services, and routes
- Improved build process with better Windows support
- Enhanced admin panel with split admin and users functionality
- Comprehensive beta documentation including migration guide
- Node.js v10 requirement for better stability
Migration Guide
Migration Guide from Alpha to Beta
Project Structure Changes
Your project structure needs to be updated to match the new beta structure:
/api # API folder containing your content types
/build # Build files (auto-generated)
/config # Configuration files
/extensions # Extensions to customize core features
/controllers # Override core controllers
/models # Override core models
/services # Override core services
/plugins # Custom plugins (now optional)
/public # Public assets
Required Steps
-
Node.js Version: Ensure you're using Node.js v10 (other versions are no longer supported)
-
Create Extensions Directory:
mkdir -p extensions/controllers extensions/models extensions/services
-
Update Dependencies:
npm install strapi@beta
# or with yarn
yarn add strapi@beta
-
Update Commands:
- Replace
strapi dev with strapi develop
- Note that
strapi dev still works as an alias
-
Admin Customization: If you've customized the admin panel, review the new admin customization documentation as the approach has changed.
-
Plugin Management: Plugins are now managed differently. The plugins folder is optional, and plugins can be installed via npm/yarn.
Database Migrations
If you're using SQLite, be aware that the NOT NULL constraint handling has changed for alter operations. If you encounter issues, you may need to manually adjust your database schema.
For PostgreSQL users, there's now dbSchema support which you can configure in your database settings.
Custom Code
If you've written custom controllers, services, or routes:
- Move custom controllers to the extensions folder
- Update any imports that reference internal Strapi modules
- Review the new queries interface for plugins
See the full migration guide in the documentation for detailed instructions.
Upgrade Recommendations
Who Should Upgrade
- Development Projects: If you're in active development and can handle breaking changes, upgrading to the beta is recommended to take advantage of the new architecture and features.
- Production Applications: If you're running a production application on a stable alpha release, consider waiting for the final 3.0.0 release unless you specifically need the new features.
Upgrade Process
-
Backup Your Project: Before upgrading, create a complete backup of your project and database.
-
Read the Migration Guide: Thoroughly review the migration guide in the documentation to understand all the changes.
-
Upgrade in a Development Environment First: Test the upgrade in a development environment before applying to production.
-
Install the Beta Version:
npm install strapi@beta
# or with yarn
yarn add strapi@beta
-
Update Project Structure: Follow the migration guide to update your project structure with the new extensions folder.
-
Test Thoroughly: Test all functionality, especially custom code and plugins, as the architectural changes may affect them.
Considerations
- Node.js Version: The beta requires Node.js v10 exclusively.
- Custom Code: If you have extensive custom code, the migration might require significant effort due to the architectural changes.
- Plugins: Some plugins may not be compatible with the beta yet. Check plugin compatibility before upgrading.
Overall, the upgrade to beta is recommended for developers who want to take advantage of the new architecture and are prepared to handle potential breaking changes.
Bug Fixes
Admin Interface
- Fixed missing history in saga causing UI issues
- Fixed UI issues with modal dialogs staying open and invalid menu links
- Fixed administrator account editing functionality
- Fixed wrong input import in Content Type Manager
- Fixed enumeration placeholder display
Framework
- Fixed issues with file paths in Windows environments
- Fixed invalid filter name and cleaned up search queries
- Fixed IP filter middleware
- Fixed image upload in content types
- Removed NOT NULL constraint on SQLite alter operations as tables are recreated afterwards
- Fixed missing identity in controllers without models
- Added dbSchema support for PostgreSQL
Plugins
- Fixed model rename not using the correct API name to persist files
- Fixed CRUD operations for roles with users
- Fixed missing default providers in upload plugin
- Fixed Cloudinary provider plugin by changing secret field to password type
New Features
Core Architecture Changes
- Split Core and Custom Code: Completely restructured the architecture to separate core features from custom code, making the system more modular and maintainable.
- Extensions System: New extensions folder structure allows overriding controllers, services, and routes without modifying core files.
- Admin/Users Split: Separated admin functionality from user management for better security and modularity.
Build Process
- Improved Build System: Refactored the build process for better performance and reliability.
- Admin Build Script: Enhanced admin build script for future updates and better development workflow.
- Watch Mode: Added watch mode to development process for faster iterations.
CLI Improvements
- Renamed Commands:
strapi dev is now strapi develop (with dev as an alias)
- Local Commands: Added ability to load local commands when necessary with strapi CLI
- Delete Files Option: Added delete files option to
strapi uninstall command
- Yarn Support: Now uses yarn for installation if detected during
strapi new
Admin Panel
- Basic Customization: Added admin panel basic customization options
- Admin Development: New
yarn dev command in strapi-admin for improved development workflow
Security Updates
No specific security fixes were mentioned in the release notes. However, the architectural changes that separate admin functionality from user management (PR #3316) likely improve the security posture of the application by providing better isolation between these concerns.
Performance Improvements
Build Process Optimization
- Refactored admin build script for better performance
- Removed locale dynamic import to prevent webpack from building all React-Intl locales
- Optimized build and clean scripts for faster execution
- Added bundle analyzer for identifying performance bottlenecks
Development Workflow
- Added watch mode to rollup for faster development iterations
- Improved development workflow with new
strapi develop command
- Added
yarn dev to strapi-admin for more efficient development
Database Improvements
- Added dbSchema support for PostgreSQL for better performance with complex schemas
- Improved handling of many-to-many relationships
- Optimized search queries and filtering
Impact Summary
The release of Strapi v3.0.0-beta.0 represents a fundamental shift in the architecture and philosophy of the platform. By separating core features from custom code through the new extensions system, Strapi has become significantly more modular and maintainable. This architectural change allows developers to customize core functionality without modifying the core files, making upgrades smoother and reducing the risk of conflicts.
The improved build process and development workflow enhancements provide a better developer experience, with faster iterations and more reliable builds. Windows users will particularly benefit from the fixes to path handling issues that previously caused problems.
The admin panel has been enhanced with better customization options and a cleaner separation between admin functionality and user management. This not only improves security but also makes the system more flexible for different use cases.
The comprehensive documentation updates, including a detailed migration guide, show a commitment to helping users transition to the new architecture. The focus on Node.js v10 compatibility ensures a stable foundation, though it may require some users to update their environments.
For plugin developers, the new queries interface and improved plugin management provide better tools for extending Strapi's functionality.
Overall, this beta release lays the groundwork for a more robust, flexible, and developer-friendly headless CMS, though the significant architectural changes mean that migration from alpha versions will require careful planning and testing.
Full Release Notes
💅 Enhancement
🐛 Bug fix
🚀 New feature