[▲ Vercel Community](/) · [Categories](/categories) · [Latest](/latest) · [Top](/top) · [Live](/live)

[Help](/c/help/9)

# iOS Calendar subscription fails with verification failed error on Vercel hosted .ics feed

30 views · 0 likes · 1 post


Kemal023 (@kemal023) · 2026-02-23

## 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.js` with `FastAPI` backend
*   **Domain:** `www.gocutit.com`
*   **Endpoint:** `/api/sync/calendar/[user].ics`
*   **Vercel Plan:** Hobby

## What Works ![:white_check_mark:](https://emoji.discourse-cdn.com/unicode/white_check_mark.png?v=15 ":white_check_mark:")

*   `Google Calendar` subscription — works perfectly
*   `Microsoft Outlook` subscription — works perfectly
*   Direct browser access — returns `200 OK`, downloads valid `.ics` file
*   The `.ics` file is fully `RFC 5545` compliant with correct `text/calendar` `Content-Type`

## What Fails ![:cross_mark:](https://emoji.discourse-cdn.com/unicode/cross_mark.png?v=15 ":cross_mark:")

*   `iOS` native `Calendar` app (Settings → Calendar → Accounts → Add Subscribed Calendar)
*   Error message: 

> **Error: Verification failed**

*   The `iOS Calendar` uses the `dataaccessd` user-agent for these requests

## Troubleshooting Completed

1.  **Disabled Deployment Protection** via `OPTIONS` Allowlist for the `/api/sync/calendar` path
2.  **Added CORS headers** in `vercel.json`:
    *   `Access-Control-Allow-Origin: *`
    *   `Access-Control-Allow-Methods: GET, OPTIONS, HEAD`
3.  **Tested with a static file**: Placed a hardcoded `test.ics` file in the `/public` folder — same “Verification failed” error on `iOS`
4.  **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
5.  **Verified Deployment Protection** is not the issue — accessing the URL in an incognito browser successfully downloads the `.ics` file

## Key Finding ![:magnifying_glass_tilted_left:](https://emoji.discourse-cdn.com/unicode/magnifying_glass_tilted_left.png?v=15 ":magnifying_glass_tilted_left:")

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`/`SSL` handshake handling specific to `iOS`
*   Some undocumented bot filtering at the Edge layer
*   The way `iOS Calendar` probes/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!