Overview
I’m hosting a Next.js / FastAPI project on Vercel that provides a dynamic iCalendar (.ics) feed for users to subscribe to. The feed works perfectly on every platform except the native iOS Calendar app, which throws a “Verification failed” error.
Environment
- Framework:
Next.jswithFastAPIbackend - Domain:
www.gocutit.com - Endpoint:
/api/sync/calendar/[user].ics - Vercel Plan: Hobby
What Works 
Google Calendarsubscription — works perfectlyMicrosoft Outlooksubscription — works perfectly- Direct browser access — returns
200 OK, downloads valid.icsfile - The
.icsfile is fullyRFC 5545compliant with correcttext/calendarContent-Type
What Fails 
iOSnativeCalendarapp (Settings → Calendar → Accounts → Add Subscribed Calendar)- Error message:
Error: Verification failed
- The
iOS Calendaruses thedataaccessduser-agent for these requests
Troubleshooting Completed
- Disabled Deployment Protection via
OPTIONSAllowlist for the/api/sync/calendarpath - Added CORS headers in
vercel.json:Access-Control-Allow-Origin: *Access-Control-Allow-Methods: GET, OPTIONS, HEAD
- Tested with a static file: Placed a hardcoded
test.icsfile in the/publicfolder — same “Verification failed” error oniOS - Firewall Configuration:
- Created a custom bypass rule for path
/api/sync/calendar— Rule is Active - Bot Protection: Disabled
- Attack Challenge Mode: Disabled
- Bypass rule is positioned above all other rules
- Created a custom bypass rule for path
- Verified Deployment Protection is not the issue — accessing the URL in an incognito browser successfully downloads the
.icsfile
Key Finding 
When attempting to subscribe from iOS Calendar, no requests appear in Vercel logs at all. This indicates the requests are being blocked or dropped at Vercel’s Edge layer before reaching the application.
This happens even though:
- All protections are disabled
- Custom bypass rules are in place
- The endpoint is fully public and accessible from all other clients
Theory
It appears Vercel’s Edge network is specifically blocking or dropping connections from Apple’s dataaccessd user-agent, possibly due to:
TLS/SSLhandshake handling specific toiOS- Some undocumented bot filtering at the Edge layer
- The way
iOS Calendarprobes/validates URLs before subscribing
Request
Has anyone successfully hosted an .ics calendar subscription feed on Vercel that works with the native iOS Calendar app? Is there a known workaround or configuration required to allow the dataaccessd user-agent through Vercel’s Edge network?
Any help would be greatly appreciated!