gatsbyjs/gatsby · error
We couldn't load "${__PATH_PREFIX__}/page-data/sq/d/${static
Error message
We couldn't load "${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json" What it means
Thrown by ProdLoader when fetching a static query result JSON file from the server fails. During production page load, Gatsby fetches /page-data/sq/d/<hash>.json for each static query (useStaticQuery / StaticQuery). If the HTTP request fails or returns an error, the .catch handler throws this error with the full URL.
Source
Thrown at packages/gatsby/cache-dir/loader.js:553
// get list of static queries to get
const staticQueryBatchPromise = Promise.all(
dedupedStaticQueryHashes.map(staticQueryHash => {
// Check for cache in case this static query result has already been loaded
if (this.staticQueryDb[staticQueryHash]) {
const jsonPayload = this.staticQueryDb[staticQueryHash]
return { staticQueryHash, jsonPayload }
}
return this.memoizedGet(
`${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`
)
.then(req => {
const jsonPayload = JSON.parse(req.responseText)
return { staticQueryHash, jsonPayload }
})
.catch(() => {
throw new Error(
`We couldn't load "${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json"`
)
})
})
).then(staticQueryResults => {
const staticQueryResultsMap = {}
staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {
staticQueryResultsMap[staticQueryHash] = jsonPayload
this.staticQueryDb[staticQueryHash] = jsonPayload
})
return staticQueryResultsMap
})
return (
Promise.all([componentChunkPromises, staticQueryBatchPromise])
.then(([pageResources, staticQueryResults]) => {View on GitHub (pinned to 8b06340921)
Solutions
- Verify the static query JSON exists at the reported URL by opening it directly in a browser or using curl.
- Ensure your deployment includes the entire public/page-data/ directory, including the sq/d/ subdirectory.
- If using a CDN, purge the cache after deploying a new build so old hashes don't 404.
- Check hosting configuration (e.g. nginx, Netlify, Vercel) serves JSON files with correct content-type and no redirect rules that break the path.
Example fix
# before — deployment missing page-data # only public/ root uploaded, page-data/sq/d/ omitted # after — ensure full recursive upload rsync -av --delete public/ user@host:/var/www/site/ # or in CI: ensure `gatsby build` output (public/) is uploaded in full
Defensive patterns
Strategy: retry
Validate before calling
// Pre-deploy check: verify static query JSONs exist in public/
const fs = require('fs')
const path = require('path')
function checkStaticQueryOutputs(publicDir) {
const sqDir = path.join(publicDir, 'page-data', 'sq', 'd')
if (!fs.existsSync(sqDir)) {
console.warn('No static query output directory found')
return
}
const files = fs.readdirSync(sqDir)
console.log(`Found ${files.length} static query JSON files`)
}
checkStaticQueryOutputs('public') Try / catch
// Add a retry wrapper around static query fetches in custom code
// (Gatsby's loader handles this internally, but for custom fetches:)
async function fetchWithRetry(url, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
const res = await fetch(url)
if (res.ok) return res.json()
} catch {}
await new Promise(r => setTimeout(r, 1000 * (i + 1)))
}
throw new Error(`Failed to load ${url}`)
} Prevention
- Deploy the entire public/ directory recursively, including page-data/sq/d/.
- Purge CDN cache after deploying a new build.
- Set long cache headers with content-hash-based filenames to avoid stale-file mismatches.
- Monitor 404s on page-data paths in your hosting analytics.
When it happens
Trigger: The browser sends a GET request for the static query JSON and it fails — network error, 404 (file not deployed), 500 (server error), or CORS issue. The .catch in the loader swallows the original error and throws this generic message.
Common situations: Incomplete deployment (static query JSON files not uploaded to the CDN/host), CDN cache miss returning 404, intermittent network failures on mobile/slow connections, deploying a new build while users have an older bundle cached (hash mismatch), or a hosting config that doesn't serve .json files from public/page-data/.
Related errors
- Image downloading failed for ${originalImg}, please check if
- Could not find the file specified in the Link header `${head
- {"fetchError":"Could not fetch ${pathOrUrl} from official re
- Something went wrong when trying to add the plugins to the p
- Cannot access Contentful space "${maskText(pluginOptions.spa
AI-assisted analysis of gatsbyjs/gatsby@8b06340921 (2026-08-13).
Data as JSON: /api/errors/14b4893eb8d71202.
Report an issue: GitHub.