Budibase/budibase · error

Github release version not found

Error message

Github release version not found

What it means

fetchLatestRelease derives the plugin version from the GitHub release's tag_name or name via normaliseVersion. If neither yields a parsable version string (after the tarball check passed), it throws 'Github release version not found'.

Source

Thrown at packages/server/src/sdk/plugins/update.ts:107

  const url = `${GITHUB_API_ROOT}/${repo}/releases/latest`
  const headers = headersForRequest(token)
  const response = await fetch(url, { headers })

  if (response.status === 404) {
    return null
  }

  const data = await response.json()
  const tarballAsset = (data.assets || []).find(
    (asset: any) => asset?.content_type === "application/gzip"
  )
  const tarballUrl = tarballAsset?.browser_download_url
  if (!tarballUrl) {
    throw new Error("Github latest release url not found")
  }
  const version = normaliseVersion(data.tag_name) || normaliseVersion(data.name)
  if (!version) {
    throw new Error("Github release version not found")
  }
  return {
    version,
    tagName: data.tag_name,
    name: data.name,
    htmlUrl: data.html_url,
    publishedAt: data.published_at,
    tarballUrl,
    etag: response.headers.get("etag") || undefined,
    body: data.body,
  }
}

function buildUpdateInfo(
  plugin: Plugin,
  release: ReleaseDetails
): PluginUpdateInfo {
  return {

View on GitHub (pinned to a81a902e9a)

Solutions

  1. Retag/rename the GitHub release to include a semver version (e.g. v1.2.3) in tag_name or name.
  2. Ask the maintainer to fix the release naming via `gh release edit <tag> --tag v1.2.3`.
  3. Pin the plugin to an earlier release with a valid version tag.
  4. If you control the plugin repo, ensure CI publishes tags matching semver.

Example fix

// before
git tag build-2026 && git push --tags
// after
git tag v1.2.3 && git push --tags
Defensive patterns

Strategy: validation

Validate before calling

const v = normaliseVersion(release.tag_name) || normaliseVersion(release.name)
if (!v) throw new Error(`Release ${release.tag_name} has no parsable version`)

Type guard

const hasParsableVersion = (r: { tag_name?: string; name?: string }): boolean => Boolean(normaliseVersion(r.tag_name) || normaliseVersion(r.name))

Prevention

When it happens

Trigger: A GitHub release whose tag_name and display name contain no recognisable semantic version (e.g. tag "latest", "stable", or a date-only name that normaliseVersion cannot parse).

Common situations: Maintainers tagging releases with non-semver names; renaming releases to marketing names ('Summer drop'); CI creating tags like "build-123" that the version normaliser rejects.

Related errors


AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29). Data as JSON: /api/errors/f621986a76a70d2f. Report an issue: GitHub.