badges/shields · error · InvalidResponse

no releases

Error message

no releases

What it means

The Bower version badge reads latest_release_number from normalized registry data. If the package has no releases (field is falsy), transform throws InvalidResponse 'no releases'. This distinguishes a package that exists but was never published with a version from other failures.

Source

Thrown at services/bower/bower-version.service.js:27

  static openApi = {
    '/bower/v/{packageName}': {
      get: {
        summary: 'Bower Version',
        parameters: pathParams({
          name: 'packageName',
          example: 'bootstrap',
        }),
      },
    },
  }

  static defaultBadgeData = { label: 'bower' }

  static transform(data) {
    const version = data.latest_release_number

    if (!version) {
      throw new InvalidResponse({ prettyMessage: 'no releases' })
    }

    return version
  }

  async handle({ packageName }) {
    const data = await this.fetch({ packageName })
    const version = this.constructor.transform(data)

    return renderVersionBadge({ version })
  }
}

View on GitHub (pinned to 766fd8bc89)

Solutions

  1. Publish a tagged release (git tag + push) for the package and re-check the badge.
  2. Verify the package name in the badge URL matches the Bower registry entry.
  3. Ensure tags follow valid semver so the registry can pick a latest version.
  4. If the package is abandoned with no releases, use a different badge or repository.

Example fix

// before
git push origin main
// after
git tag v1.0.0 && git push origin main --tags
Defensive patterns

Strategy: validation

Validate before calling

const data = await fetchNormalizedBowerData(pkg)
if (!data.latest_release_number) {
  console.warn(`Bower package '${pkg}' has no releases`)
}

Type guard

function hasRelease(data) {
  return typeof data?.latest_release_number === 'string' && data.latest_release_number.length > 0
}

Try / catch

try {
  return await bowerVersionBadge(pkg)
} catch (e) {
  if (/no releases/.test(e.message)) return renderBadge('no releases')
  throw e
}

Prevention

When it happens

Trigger: Requesting a Bower version badge for a package whose normalized data has no latest_release_number — the package exists in the registry but has no tagged versions, so transform throws InvalidResponse({ prettyMessage: 'no releases' }).

Common situations: Packages registered in the Bower registry with only a master branch and no git tags; repos where tags do not follow semver and were rejected; newly registered packages not yet released; package renamed upstream so the old registry entry is stale.

Related errors


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