If you're building or maintaining anything on Joomla — an extension, a template, a custom component — the Joomla 7 breaking changes list is the most important document you'll read this year. Unlike minor version bumps, Joomla 7 is a major release: backward compatibility is intentionally broken to clean up years of deprecated code and modernize the platform.
The Joomla Maintenance Team has already begun the removal process. The June 6, 2026 sprint cleared over 100 deprecation notices in a single day, with more sprints scheduled. This article tracks every significant breaking change as the 7.0-dev branch evolves — bookmark it and check back regularly.
Last updated: August 2026. As new sprints land, this list will be updated.
How to Read This List
Breaking changes are grouped by category. Each entry shows:
- What was removed — the deprecated API, class, or method
- Modern replacement — what you should use instead
- Impact — how likely this is to affect your extension
Impact ratings: 🔴 High (affects most extensions) | 🟡 Medium (common in older code) | 🟢 Low (niche usage)
1. Static Factory Class Removals
The biggest category. JFactory and its family of static accessor methods are gone in Joomla 7. These were deprecated in Joomla 4.0 and have now reached their end of life.
JFactory Method Removals 🔴 High Impact
JFactory::getUser()→Factory::getApplication()->getIdentity()or DI injectionJFactory::getDbo()→ InjectDatabaseInterfacevia constructorJFactory::getApplication()→Factory::getApplication()or DI injectionJFactory::getConfig()→Factory::getApplication()->getConfig()JFactory::getDocument()→Factory::getApplication()->getDocument()JFactory::getLanguage()→Factory::getApplication()->getLanguage()JFactory::getSession()→Factory::getApplication()->getSession()JFactory::getCache()→Factory::getContainer()->get(CacheControllerFactoryInterface::class)JFactory::getMailer()→Factory::getContainer()->get(MailerFactoryInterface::class)
J-Prefixed Helper Classes 🔴 High Impact
All legacy J-prefixed class aliases are removed:
JHtml→Joomla\CMS\HTML\HTMLHelperJText→Joomla\CMS\Language\TextJRoute→Joomla\CMS\Router\RouteJUri→Joomla\CMS\Uri\UriJLog→Joomla\CMS\Log\LogJMail→Joomla\CMS\Mail\MailJLoader→ Not needed (PSR-4 autoloading handles class loading)JDate→Joomla\CMS\Date\DateJFile→Joomla\Filesystem\FileJFolder→Joomla\Filesystem\FolderJPath→Joomla\Filesystem\Path
2. MVC Architecture Changes
Legacy MVC Class Names 🔴 High Impact
JModelLegacy→Joomla\CMS\MVC\Model\BaseModelorListModelJModelList→Joomla\CMS\MVC\Model\ListModelJModelForm→Joomla\CMS\MVC\Model\FormModelJModelAdmin→Joomla\CMS\MVC\Model\AdminModelJControllerLegacy→Joomla\CMS\MVC\Controller\BaseControllerJControllerForm→Joomla\CMS\MVC\Controller\FormControllerJViewLegacy/JViewHtml→Joomla\CMS\MVC\View\HtmlView
jimport() Calls 🟡 Medium Impact
jimport() is completely removed. Joomla uses PSR-4 autoloading — simply delete any jimport() calls and use proper use statements instead.
3. Plugin System Changes
Legacy Plugin Event Method Signatures 🟡 Medium Impact
Joomla 7 removes the old compatibility layer for loose plugin event signatures. All plugins must use typed event objects:
// Old — breaks on Joomla 7
public function onContentBeforeSave($context, $article, $isNew) {}
// Modern — required in Joomla 7
use Joomla\CMS\Event\Content\ContentBeforeSaveEvent;
public function onContentBeforeSave(ContentBeforeSaveEvent $event) {
$context = $event->getContext();
$article = $event->getItem();
}
JPlugin Base Class 🟡 Medium Impact
JPlugin → Joomla\CMS\Plugin\CMSPlugin
4. Database Layer Changes
Database query methods remain — but the database object must be injected via DI, not fetched via JFactory::getDbo(). Ensure $db comes from constructor injection throughout your extension.
5. Form and Field Changes
JForm Legacy Methods 🟡 Medium Impact
JForm→Joomla\CMS\Form\FormJFormField→Joomla\CMS\Form\FormFieldJFormRule→Joomla\CMS\Form\FormRule
6. HTTP and Request Handling
JInput / JRequest Removals 🟡 Medium Impact
JInput→Joomla\CMS\Input\Input(access via$app->input)JRequest→ Completely removed
7. PHP Version Requirements
Joomla 7 requires PHP 8.1+ (exact minimum TBC). Remove any PHP 7.x compatibility shims from your extension code.
How to Check Your Extension
Static Search
grep -r "JFactory\|JHtml\|JText\|JRoute\|JUri\|jimport\|JPlugin\|JModel\|JController\|JView" /path/to/extension/
Enable Joomla Deprecation Logging
System → Global Configuration → System → Debug System: Yes + Log Deprecated API: Yes. Review /logs/deprecated.php after browsing your extension.
Test Against 7.0-dev
The most reliable method. See our guide: How to Set Up a Joomla 7 Dev Environment.
Is This List Complete?
Not yet — the 7.0-dev branch is actively evolving. More sprints are planned, each removing additional deprecated code. The Joomla Manual is the authoritative source. This article will be updated after each major sprint.
Stay tuned to thepixel.dev for ongoing Joomla 7 coverage. Already tackled JFactory? Read: JFactory is Dead: How to Modernize Your Extension.