Skip to main content

6. Akeeba Release System: the Update Stream "Element" field

This is the second manifest/element mismatch in the chain, and it's the hardest one to find because it isn't in your code at all — it's a configuration value inside ARS's own Update Stream settings, undocumented in any current Akeeba material we could find.

Joomla decides whether a found update actually applies to your installed extension by matching the feed's <element> tag against your extension's real element (libraries/src/Updater/Updater.phpgetUpdateObjectsForSite()):

$eid = $extension->find([
    'element'   => $current_update->element,   // whatever your ARS feed says
    'type'      => $current_update->type,
    'client_id' => $current_update->client_id,
    'folder'    => $current_update->folder ?? '',
]);

if (!$uid) {
    if ($eid) {
        // matched an installed extension — check version, queue the update
    } else {
        // "a potentially new extension to be installed" — extension_id stays 0
        $retVal[] = $current_update;
    }
}

If ARS's generated feed declares <element>yourpackage</element> (matching your <packagename>, which feels like the obvious value to enter) instead of the real pkg_yourpackage, this lookup fails silently. The update gets stored in #__updates with extension_id = 0, and the Extensions: Update list page explicitly filters those rows out (WHERE u.extension_id != 0, with the comment "ignoring new installs" right there in Joomla's own core). The practical symptom: "Check for Updates" runs, takes several real seconds doing a live fetch, and reports nothing available — forever, no matter how correct everything else is.

ARS does not derive this value automatically by parsing your uploaded package's manifest. It's a separate field, confirmed directly by Akeeba's lead developer in a 2014 support ticket listing exactly what he filled in when configuring his own update stream: "Stream Name, Alias, Category, Package naming pattern and element."

THE FIXIn ARS, find your Update Stream's configuration (a tab on the Category, separate from the general fields) and set Element to pkg_yourpackage — matching Joomla's derived value, not your raw packagename. Verify by fetching your live feed URL and checking the <element> tag directly.