Check what curl actually returns, with headers:
curl -i https://tidyhome.app/.well-known/apple-app-site-association
Two things usually break it on Vercel:
- Redirect. If
tidyhome.appredirects towww.tidyhome.app(Vercel's default when you add both), Apple does not follow redirects. The file must be served with a 200 on the exact domain inassociatedDomains. - Content-Type. A file without extension is served as
application/octet-stream. Apple is lenient about this nowadays but serveapplication/jsonto be safe:
// vercel.json
{
"headers": [{
"source": "/.well-known/apple-app-site-association",
"headers": [{ "key": "Content-Type", "value": "application/json" }]
}]
}Also: Apple fetches the file through its own CDN, not from the device, and caches it. After fixing, check with https://app-site-association.cdn-apple.com/a/v1/tidyhome.app to see what Apple has.
And the appID in the file is TEAMID.bundleid, not just the bundle id.