The best way to understand what Joomla 7 is doing to your extension is to actually run it. The 7.0-dev branch is live on GitHub and actively evolving — every sprint that removes deprecated code changes what breaks and what doesn't. Setting up a local Joomla 7 development environment lets you catch compatibility issues now, not after release day.
This guide walks you through the complete setup: cloning the repository, configuring your local server, installing Joomla, and running your extension against the dev branch. No surprises, no guesswork.
What You'll Need
- PHP 8.1+ — PHP 8.2 or 8.3 recommended
- Composer — from getcomposer.org
- MySQL 8.0+ or MariaDB 10.4+
- Git
- A local web server — MAMP, XAMPP, Laravel Herd, or similar
- Node.js 20+ and npm — for building front-end assets
Step 1: Clone the Joomla 7.0-dev Branch
# Clone the 7.0-dev branch only
git clone --branch 7.0-dev --single-branch \
https://github.com/joomla/joomla-cms.git joomla7-dev
cd joomla7-dev
To keep it up to date after sprints:
git pull origin 7.0-dev
Step 2: Install PHP Dependencies
composer install
This pulls all libraries Joomla needs. May take a few minutes on first run.
Step 3: Build Front-End Assets
# Install Node.js dependencies
npm ci
# Build assets
npm run build
Skip this and the admin panel will look broken. For active development, use npm run watch instead.
Step 4: Configure Your Local Web Server
MAMP / XAMPP
Set the document root to the joomla7-dev folder and restart Apache.
Laravel Herd
mv joomla7-dev ~/Herd/joomla7-dev
# Accessible at http://joomla7-dev.test
PHP Built-in Server (quick testing only)
php -S localhost:8080 -t /path/to/joomla7-dev
Step 5: Create the Database
mysql -u root -p
CREATE DATABASE joomla7dev CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'joomla7'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON joomla7dev.* TO 'joomla7'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Keep this database completely separate from any production databases.
Step 6: Run the Joomla Installer
Open your browser at your local Joomla 7 URL. The web installer launches automatically. Configure:
- Database Type:
MySQLi - Host:
localhost - Username/Password: as created above
- Database Name:
joomla7dev - Table Prefix:
j7_
Step 7: Enable Deprecation Logging
This is the most important step for extension compatibility testing:
- Log in to the Joomla 7 admin
- System → Global Configuration → System tab
- Set Debug System → Yes
- Set Log Deprecated API → Yes
- Save
Every deprecated API call will now be logged to /logs/deprecated.php.
Step 8: Install and Test Your Extension
- Package your extension as a zip
- System → Install → Extensions → upload and install
- Browse every page your extension affects
Watch for:
- Fatal errors — a removed class or method is being called
- Warning messages — non-fatal but will become fatal in later sprints
- Entries in /logs/deprecated.php — shows remaining deprecated API calls
Step 9: Keep Your Dev Branch Updated
cd joomla7-dev
git pull origin 7.0-dev
composer install
npm ci && npm run build
Pull updates weekly. A warning from last week may be a fatal error this week.
Useful Tips
PHP Error Reporting
error_reporting = E_ALL
display_errors = On
log_errors = On
Xdebug
Install Xdebug + VS Code or PhpStorm to step through code when something breaks unexpectedly.
Automate Extension Testing
#!/bin/bash
zip -r /tmp/com_myext.zip . --exclude=".git/*"
php /path/to/joomla7-dev/cli/joomla.php extension:install --path=/tmp/com_myext.zip
When Things Break
- Read the error — PHP tells you the exact class or method missing
- Search your codebase — find every call to that class/method
- Apply the replacement — use the JFactory cheatsheet or Joomla Manual
- Test again — repeat until clean
Conclusion: Start Testing Today
The Joomla 7 dev environment setup takes less than an hour. The insight it provides — knowing exactly what breaks and what needs fixing — is invaluable. Every week you wait is another sprint worth of changes you haven't tested against.
Set it up. Pull updates weekly. Fix issues as they appear. By the time Joomla 7 reaches release candidate, your extension will be ready.
Follow thepixel.dev for more Joomla 7 developer guides. Also see: Joomla 7 Breaking Changes: The Complete List.