In HACS documentation is told that it looks for new updates for every 6 hours.
I have small custom repository and obviously have integration installed myself. I did want to observe how updates are delivered and purposely did not refresh repository manually.
Every time I push new update to integration it takes about week before HACS actually notifies me that new version is available!
Every integration i have eventually updates so this is not that HACS cant see updates, but why the heck that talk about 6 hours?
It might be something that GitHub implemented. There have been several periods recently where they rate limited HACS and / or HA to prevents the Git System from crashing. (As I understand it, rumor. But there have been Git outages that seem suspicious.)
It is pretty annoying especially when on my custom card i do an update and want to test it asap.
My idea is: Add button to manually check all HACS repositories for updates by jan-tdy · Pull Request #1607 · frenck/spook · GitHub
Well, when I refresh repo in HACS it shows update immediately (and always has). This indicates that there is no problem with seeing the update, HACS just doesn’t want to look at it. It is annoying that it should do it by itself. I have no idea is this behavior only with me or all users. There is no consistency here in how users actually receive updates.
From my understanding, HACS is supposed to look at the version tag, not the manifest (I specifically tried to find confirmation that this would be OK), so I’ve mostly ignored the manifest.
For me as a developer, especially using AI, it is hard to maintain the correct version in the manifest.
I am seeing the same issue. I am not notified of an update and when I manually check for updates there are updates available. I just run the update check manually and it found an update that was released two days ago, but never was reported as having an update available by HACS prior to the manual check.
Try something like release please, can automate all of the semver stuff, tagging, releases.
From my understanding, HACS is supposed to look at the version tag, not the manifest (I specifically tried to find confirmation that this would be OK), so I’ve mostly ignored the manifest.
That is not correct.
For example, look at: Can't update to v0.20.0 · Issue #25 · FezVrasta/ha-rbac · GitHub
I just create a tag (e.g. v2.1.1), a release (2.1.1), and update the manifest ("2.1.1") and it shows up after you just check for updates.
![]()
Also known as “It works for me”
This has been driving me crazy for the last couple of weeks. Some HACS integrations seem to show heir updates, some don’t. It happens random. When manually refreshing a custom integration, the update shows right away…
I dont know…
HACS documentation says:
Versions¶
If the repository uses GitHub releases, the tag name from the latest release is used to set the remote version. Just publishing tags is not enough, you need to publish releases.
end quote
manifest.json is used for Installed Version Tracking: HACS reads the “version” field inside manifest.json to determine what version is currently installed on the user’s Home Assistant instance.
So it is best when both are updated but as long as manifest version is lower then tag it should not interfere updating process.
I stand by my position that the manifest does not affect how HACS updates the integration, mainly because that is what the documentation says.
However, for those who have the problem of forgetting to update the manifest file, you can use the following script in the release.yml file. Note that this script makes certain assumptions:
- manifest.json is located directly at the root of your repository, if not edit that part.
- You draft your new release, tags, description manually
name: Update Release Notes & Manifest
on:
release:
types: [published]
jobs:
update-release-and-manifest:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
# Step 1: Checkout the repo code
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
# Step 2: Update manifest.json version
- name: Update manifest.json version
run: |
# 1. Strip 'v' from tag name if present (e.g., 'v1.2.0' -> '1.2.0')
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
# Path to manifest.json at repo root
MANIFEST_PATH="manifest.json"
# 2. Update version key in manifest.json using jq
jq --arg v "$VERSION" '.version = $v' "$MANIFEST_PATH" > tmp.json && mv tmp.json "$MANIFEST_PATH"
# 3. Configure git bot
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# 4. If manifest changed, commit to main and move the release tag
if ! git diff --quiet "$MANIFEST_PATH"; then
git add "$MANIFEST_PATH"
git commit -m "bump: manifest version to $VERSION [skip ci]"
git push origin HEAD:main
# Re-tag the new commit so HACS gets the updated manifest
git tag -f "$TAG"
git push origin "$TAG" --force
fi