🎉 Welcome to the Craft 5.0 beta!

We have just tagged 5.0.0-beta.6, and will continue to release previews as features are finalized and bugs are fixed ahead of a public launch in April.

Between now and then, we invite you to test-drive the new PHP features, content storage system, element improvements, and breadcrumbs—and to ready your plugins for use with the public release.

<aside> 🔥 Beta releases are fun to experiment with, but please do not use them in production. To report problems with a tagged version, create an issue on GitHub.

</aside>

Installation

To use the alpha in a new or existing project, replace your craftcms/cms version constraint in composer.json with ^5.0.0-alpha.1, then run composer update.

You can also get a bleeding-edge project up-and-running with DDEV:

# Create a new project directory and move into it:
mkdir my-craft-project
cd my-craft-project/

# Configure a new DDEV project
ddev config --project-type=craftcms --docroot=web --create-docroot --php-version=8.2

# Use the new Craft 5 starter project:
ddev composer create -y --no-scripts craftcms/craft=^5.0.0-alpha.1

# Run the setup wizard:
ddev craft install

Requirements + Housekeeping

The PHP ecosystem is rapidly evolving! We’re excited to take advantage of a few new language features, and have taken the opportunity to tidy our use of some underlying technologies.

Preparation

If you haven’t already, spin up a project with the latest Craft 4.x release, and run Rector and PHPStan against your existing Craft 4 plugin. Migrating a Craft 3 plugin directly to Craft 5 is not recommended, as users would need to uninstall your plugin when updating via Craft 4.

PHP 8.2

Craft 5.0 requires PHP 8.2, meaning plugins now have access to language features from it and 8.1. Our Rector and PHPStan packages have been updated to assist in modernizing your plugins’ code.

Database Character Sets

Tables created in MySQL databases under Craft 5.0 will default to the utf8mb4 character set. Users will be advised to run php craft db/convert-charset to ensure all tables have consistent character sets and collations.

<aside> 🌍 Multibyte emoji can now safely be stored directly in any supported database, and do not require packing and unpacking with craft\\helpers\\StringHelper::emojiToShortcodes($string) and craft\\helpers\\StringHelper::shortcodesToEmoji($string), respectively.

</aside>