Do not fetch the entire PWARegistry every time a user loads your page.
Instead:
Initial sync
Store the revision
Later: check the current revision
Fetch only changes
Update your local data
In a product that looks like a store:
PWARegistry
Your backend sync process
Your database / cache
Your frontend
Initial load
GET /registry/v1/meta.jsonand storerevision.GET /registry/v1/index.json.- Fetch
/registry/v1/apps/{id}.jsononly for apps you will display. Many catalogs keep the index and load full records lazily.
Incremental load (after the first sync)
GET /registry/v1/meta.json.- If
revisionequals your stored revision, stop. GET /registry/v1/changes.json?since=YOUR_REVISION.- Download full records for ids in
addedandupdated. - Drop or tombstone local copies listed in
removed. - Store the returned
revision.
Hourly is plenty. The homepage health pass and the public cron keep the registry itself current; your copy only needs to notice.
At 1,000, 10,000, or 100,000 apps the same pattern holds. The changes feed exists so you do not re-pull 100,000 records.
Copy-paste TypeScript for this loop is on Example: Build a PWA Store.