Joomla Miscellaneous API changes: Joomla 3 → 4, 5 and 6
18 issues in this guide
Everything that does not own a subsystem guide still needs a namespaced home. This miscellaneous guide groups 18 catalog entries: JBuffer, JCaptcha, JCrypt, JDate, JHelp, JKeychain, JLog, JLogEntry, JLogLoggerFormattedtext, JNode, and 8 more. The replacement pattern is almost always a use statement for the Joomla\CMS\… (or Joomla\Registry\Registry) class listed in each entry, deletion of wrapper indirection, and third-party OAuth libraries where the old social package was removed. Profiler timing becomes microtime(true) / memory_get_usage() where helpers vanished. Hop mix: 5 at Joomla 3 → 4; 13 at Joomla 5 → 6. None of these entries invent new product statistics — they only record what the catalog already documents as removed, aliased, or replaced. Scan this list when a Class not found does not match Factory, Form, Table, or HTMLHelper, then jump to the matching anchor for the mechanical fix. Catalog replacements in this guide include JBuffer → Joomla\CMS\Utility\BufferStreamHandler; JCaptcha → Joomla\CMS\Captcha\Captcha; JCrypt → Joomla\CMS\Crypt\Crypt; JDate → Joomla\CMS\Date\Date. Open each h2 anchor for the full before/after, fix list, and error strings shipped in the reference data.
JBUFFER-CLASS-001
JBuffer
JBuffer class name
JBuffer is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JBuffer" not found.
JBuffer → Joomla\CMS\Utility\BufferStreamHandler
Dies at Joomla 5 → 6What you will see
- Class "JBuffer" not found
- Class 'JBuffer' not found
- Failed to open stream: JBuffer
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JBuffer for Joomla\CMS\Utility\BufferStreamHandler.
Joomla 3
Remove or stop calling this
JBuffer::getInstance();
// or new JBuffer()Joomla 4 / 6
Use this instead
use Joomla\CMS\Utility\BufferStreamHandler;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Utility\BufferStreamHandler.
- 2Replace every JBuffer with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JBuffer · Joomla\CMS\Utility\BufferStreamHandler · class alias · J prefix
JCAPTCHA-CLASS-001
JCaptcha
JCaptcha class name
JCaptcha is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCaptcha" not found.
JCaptcha → Joomla\CMS\Captcha\Captcha
Dies at Joomla 5 → 6What you will see
- Class "JCaptcha" not found
- Class 'JCaptcha' not found
- Failed to open stream: JCaptcha
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JCaptcha for Joomla\CMS\Captcha\Captcha.
Joomla 3
Remove or stop calling this
JCaptcha::getInstance();
// or new JCaptcha()Joomla 4 / 6
Use this instead
use Joomla\CMS\Captcha\Captcha;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Captcha\Captcha.
- 2Replace every JCaptcha with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JCaptcha · Joomla\CMS\Captcha\Captcha · class alias · J prefix
JCRYPT-CLASS-001
JCrypt
JCrypt class name
JCrypt is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCrypt" not found.
JCrypt → Joomla\CMS\Crypt\Crypt
Dies at Joomla 5 → 6What you will see
- Class "JCrypt" not found
- Class 'JCrypt' not found
- Failed to open stream: JCrypt
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JCrypt for Joomla\CMS\Crypt\Crypt.
Joomla 3
Remove or stop calling this
JCrypt::getInstance();
// or new JCrypt()Joomla 4 / 6
Use this instead
use Joomla\CMS\Crypt\Crypt;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Crypt\Crypt.
- 2Replace every JCrypt with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JCrypt · Joomla\CMS\Crypt\Crypt · class alias · J prefix
JDATE-CLASS-001
JDate
JDate class name
JDate is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JDate" not found.
JDate → Joomla\CMS\Date\Date
Dies at Joomla 5 → 6What you will see
- Class "JDate" not found
- Class 'JDate' not found
- Failed to open stream: JDate
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JDate for Joomla\CMS\Date\Date.
Joomla 3
Remove or stop calling this
JDate::getInstance();
// or new JDate()Joomla 4 / 6
Use this instead
use Joomla\CMS\Date\Date;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Date\Date.
- 2Replace every JDate with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JDate · Joomla\CMS\Date\Date · class alias · J prefix
JHELP-CLASS-001
JHelp
JHelp class name
JHelp is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHelp" not found.
JHelp → Joomla\CMS\Help\Help
Dies at Joomla 5 → 6What you will see
- Class "JHelp" not found
- Class 'JHelp' not found
- Failed to open stream: JHelp
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JHelp for Joomla\CMS\Help\Help.
Joomla 3
Remove or stop calling this
JHelp::getInstance();
// or new JHelp()Joomla 4 / 6
Use this instead
use Joomla\CMS\Help\Help;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Help\Help.
- 2Replace every JHelp with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JHelp · Joomla\CMS\Help\Help · class alias · J prefix
JKEYCHAIN-CLASS-001
JKeychain
JKeychain
JKeychain was removed. There is no compatibility plugin for it.
JKeychain → No core replacement — use env/secrets yourself
Dies at Joomla 3 → 4What you will see
- Class "JKeychain" not found
Symptoms people search
keychain fatal on CLI
Replace this code
Swap JKeychain for No core replacement — use env/secrets yourself.
Joomla 3
Remove or stop calling this
$kc = new JKeychain();Joomla 4 / 6
Use this instead
// Joomla 4+ has no JKeychain. Store secrets outside the repo.How to fix it
- 1Move secrets to environment or a vault.
- 2Do not expect a drop-in class.
Also known as
JKeychain
There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.
JLOG-CLASS-001
JLog
JLog class name
JLog is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JLog" not found.
JLog → Joomla\CMS\Log\Log
Dies at Joomla 5 → 6What you will see
- Class "JLog" not found
- Class 'JLog' not found
- Failed to open stream: JLog
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JLog for Joomla\CMS\Log\Log.
Joomla 3
Remove or stop calling this
JLog::getInstance();
// or new JLog()Joomla 4 / 6
Use this instead
use Joomla\CMS\Log\Log;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Log\Log.
- 2Replace every JLog with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JLog · Joomla\CMS\Log\Log · class alias · J prefix
JLOGENTRY-CLASS-001
JLogEntry
JLogEntry class name
JLogEntry is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JLogEntry" not found.
JLogEntry → Joomla\CMS\Log\LogEntry
Dies at Joomla 5 → 6What you will see
- Class "JLogEntry" not found
- Class 'JLogEntry' not found
- Failed to open stream: JLogEntry
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JLogEntry for Joomla\CMS\Log\LogEntry.
Joomla 3
Remove or stop calling this
JLogEntry::getInstance();
// or new JLogEntry()Joomla 4 / 6
Use this instead
use Joomla\CMS\Log\LogEntry;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Log\LogEntry.
- 2Replace every JLogEntry with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JLogEntry · Joomla\CMS\Log\LogEntry · class alias · J prefix
JLOGLOGGER-CLASS-001
JLogLoggerFormattedtext
JLogLoggerFormattedtext class name
JLogLoggerFormattedtext is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JLogLoggerFormattedtext" not found.
JLogLoggerFormattedtext → Joomla\CMS\Log\Logger\FormattedtextLogger
Dies at Joomla 5 → 6What you will see
- Class "JLogLoggerFormattedtext" not found
- Class 'JLogLoggerFormattedtext' not found
- Failed to open stream: JLogLoggerFormattedtext
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JLogLoggerFormattedtext for Joomla\CMS\Log\Logger\FormattedtextLogger.
Joomla 3
Remove or stop calling this
JLogLoggerFormattedtext::getInstance();
// or new JLogLoggerFormattedtext()Joomla 4 / 6
Use this instead
use Joomla\CMS\Log\Logger\FormattedtextLogger;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Log\Logger\FormattedtextLogger.
- 2Replace every JLogLoggerFormattedtext with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JLogLoggerFormattedtext · Joomla\CMS\Log\Logger\FormattedtextLogger · class alias · J prefix
JNODE-CLASS-001
JNode
JNode / JTree
The old tree helpers were removed in Joomla 4.
JNode → Nested table / custom tree
Dies at Joomla 3 → 4What you will see
- Class "JNode" not found
- Class "JTree" not found
Symptoms people search
category tree fatal
Replace this code
Swap JNode for Nested table / custom tree.
Joomla 3
Remove or stop calling this
$node = new JNode(); $tree = new JTree();Joomla 4 / 6
Use this instead
Use Nested tables (Joomla\CMS\Table\Nested) or your own tree. JNode and JTree are gone.How to fix it
- 1Stop extending JNode/JTree.
- 2Store hierarchy in nested-set columns or rebuild.
Also known as
JNode · JTree
There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.
JOBJECT-CLASS-001
JObject
JObject class name
JObject is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JObject" not found.
JObject → Joomla\CMS\Object\CMSObject
Dies at Joomla 5 → 6What you will see
- Class "JObject" not found
- Class 'JObject' not found
- Failed to open stream: JObject
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JObject for Joomla\CMS\Object\CMSObject.
Joomla 3
Remove or stop calling this
JObject::getInstance();
// or new JObject()Joomla 4 / 6
Use this instead
use Joomla\CMS\Object\CMSObject;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Object\CMSObject.
- 2Replace every JObject with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JObject · Joomla\CMS\Object\CMSObject · class alias · J prefix
JPROFILER-CLASS-001
JProfiler
JProfiler class name
JProfiler is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JProfiler" not found.
JProfiler → Joomla\CMS\Profiler\Profiler
Dies at Joomla 5 → 6What you will see
- Class "JProfiler" not found
- Class 'JProfiler' not found
- Failed to open stream: JProfiler
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JProfiler for Joomla\CMS\Profiler\Profiler.
Joomla 3
Remove or stop calling this
JProfiler::getInstance();
// or new JProfiler()Joomla 4 / 6
Use this instead
use Joomla\CMS\Profiler\Profiler;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Profiler\Profiler.
- 2Replace every JProfiler with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JProfiler · Joomla\CMS\Profiler\Profiler · class alias · J prefix
JPROFILER-GETMICROTIME-001
JProfiler::getmicrotime()
JProfiler::getmicrotime / getMemory
Those profiler shortcuts were removed.
JProfiler::getmicrotime() → microtime(true) / memory_get_usage()
Dies at Joomla 3 → 4What you will see
- Call to undefined method ...::getmicrotime
- Call to undefined method ...::getMemory
Symptoms people search
debug timer fatal
Replace this code
Swap JProfiler::getmicrotime() for microtime(true) / memory_get_usage().
Joomla 3
Remove or stop calling this
$start = JProfiler::getmicrotime();Joomla 4 / 6
Use this instead
$start = microtime(true);How to fix it
- 1Use PHP native timing APIs.
- 2JProfiler::getInstance() still exists as namespaced Profiler.
Also known as
getmicrotime · JProfiler::getMemory
JREGISTRY-CLASS-001
JRegistry
JRegistry class name
JRegistry is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JRegistry" not found.
JRegistry → Joomla\Registry\Registry
Dies at Joomla 5 → 6What you will see
- Class "JRegistry" not found
- Class 'JRegistry' not found
- Failed to open stream: JRegistry
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JRegistry for Joomla\Registry\Registry.
Joomla 3
Remove or stop calling this
JRegistry::getInstance();
// or new JRegistry()Joomla 4 / 6
Use this instead
use Joomla\Registry\Registry;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\Registry\Registry.
- 2Replace every JRegistry with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JRegistry · Joomla\Registry\Registry · class alias · J prefix
JSONAPI-TEXT-001
text (intro + fulltext concatenated)
JSON API combined text field
Web services used to mash intro and full article into one text field.
text (intro + fulltext concatenated) → introtext + fulltext fields
Dies at Joomla 5 → 6Symptoms people search
API article text duplicated · json api text
Replace this code
Swap text (intro + fulltext concatenated) for introtext + fulltext fields.
Joomla 3
Remove or stop calling this
GET /api/index.php/v1/content/articles/1 → body.text combinedJoomla 4 / 6
Use this instead
Read introtext and fulltext separately. Combined text is deprecated toward Joomla 8.How to fix it
- 1Update API consumers to introtext/fulltext.
Also known as
web services · introtext · fulltext
JUTILITY-CLASS-001
JUtility
JUtility class name
JUtility is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JUtility" not found.
JUtility → Joomla\CMS\Utility\Utility
Dies at Joomla 5 → 6What you will see
- Class "JUtility" not found
- Class 'JUtility' not found
- Failed to open stream: JUtility
Symptoms people search
white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility
Replace this code
Swap JUtility for Joomla\CMS\Utility\Utility.
Joomla 3
Remove or stop calling this
JUtility::getInstance();
// or new JUtility()Joomla 4 / 6
Use this instead
use Joomla\CMS\Utility\Utility;
// Call the namespaced class. Do not keep the J prefix.How to fix it
- 1Add a use statement for Joomla\CMS\Utility\Utility.
- 2Replace every JUtility with the short class name from that use line.
- 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.
Also known as
JUtility · Joomla\CMS\Utility\Utility · class alias · J prefix
JWRAPPER-CLASSES-001
JFormWrapperHelper
JFormWrapper / JHttpWrapper / language wrappers
Unit-test wrapper classes were removed in Joomla 4.
JFormWrapperHelper → Call the static methods on the real class
Dies at Joomla 3 → 4What you will see
- Class "JFormWrapperHelper" not found
- Class "JHttpWrapperFactory" not found
Symptoms people search
wrapper helper fatal
Replace this code
Swap JFormWrapperHelper for Call the static methods on the real class.
Joomla 3
Remove or stop calling this
JFormWrapperHelper::loadFieldClass('text');Joomla 4 / 6
Use this instead
FormHelper::loadFieldClass('text');How to fix it
- 1Call FormHelper, HttpFactory, LanguageHelper directly.
Also known as
JFormWrapper · JHttpWrapperFactory · JClientWrapperHelper
SOCIAL-PACKAGES-001
JFacebook / JGoogle / JTwitter
Facebook / Google / Twitter social packages
Core social API packages were deleted.
JFacebook / JGoogle / JTwitter → Third-party OAuth libraries
Dies at Joomla 3 → 4What you will see
Symptoms people search
social login fatal
Replace this code
Swap JFacebook / JGoogle / JTwitter for Third-party OAuth libraries.
Joomla 3
Remove or stop calling this
Joomla 4 / 6
Use this instead
How to fix it
Also known as
JFacebook · JGoogle · JTwitter · JLinkedin · JOAuth1 · JOAuth2
There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.