badges/shields · info · NotFound

no active version found

Error message

no active version found

What it means

The GNOME Extensions version service throws this NotFound when none of the extension versions returned by extensions.gnome.org have the active status. The service filters results to ACTIVE_STATUS before picking the latest, and an empty filtered list means no active version can be reported.

Source

Thrown at services/gnome-extensions/gnome-extensions-version.service.js:60

  static render({ version }) {
    return renderVersionBadge({ version })
  }

  async fetch({ extensionId }) {
    return await this._requestJson({
      schema: versionSchema,
      url: `https://extensions.gnome.org/api/v1/extensions/${extensionId}/versions/?page_size=100`,
      httpErrors: {
        404: 'extension not found',
      },
    })
  }

  async handle({ extensionId }) {
    const { results } = await this.fetch({ extensionId })
    const activeVersions = results.filter(r => r.status === ACTIVE_STATUS)
    if (activeVersions.length === 0) {
      throw new NotFound({ prettyMessage: 'no active version found' })
    }
    const latest = activeVersions.reduce((a, b) =>
      a.version > b.version ? a : b,
    )
    const version = latest.version_name ?? String(latest.version)
    return this.constructor.render({ version })
  }
}

View on GitHub (pinned to 766fd8bc89)

Solutions

  1. Verify the extensionId matches a published, active extension on extensions.gnome.org
  2. Check the extension's page for review status; resubmit/wait for approval if pending
  3. Use a different extensionId pointing to the actively maintained extension
  4. Remove the version badge until an active version exists
Defensive patterns

Strategy: validation

Validate before calling

const { results } = await (await fetch(`https://extensions.gnome.org/extension-query/?extension_id=${extensionId}`)).json()
if (!results || !results.some(r => r.status === 1)) console.warn('No active version for this extension')

Type guard

const hasActiveVersion = (results) => Array.isArray(results) && results.some(r => r.status === 1)

Try / catch

try {
  const version = await service.handle({ extensionId })
} catch (e) {
  if (e.prettyMessage === 'no active version found') {
    // render 'unavailable' badge
  } else throw e
}

Prevention

When it happens

Trigger: Querying a version badge for an extensionId whose versions were all rejected, disabled, or unreviewed on extensions.gnome.org; or the extensionId resolves to an extension with no approved releases.

Common situations: Extension under review or removed from the store; developer querying a draft/unapproved extension; typo in the numeric extensionId referencing an extension whose active version was withdrawn.

Related errors


AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30). Data as JSON: /api/errors/765c2cd5b437f64a. Report an issue: GitHub.