Skip to content

[P1 OUTAGE] frontend-api.clerk.services NXDOMAIN — every custom domain + dashboard.clerk.com itself broken #8507

@upsy

Description

@upsy

Preliminary Checks

Reproduction

Not a code bug — DNS-layer outage. Reproduce from any network (no project required): curl -v https://clerk.bycoach.io/npm/@clerk/clerk-js@6/dist/clerk.browser.js → Could not resolve host curl -v https://clerk.clerk.com/npm/@clerk/clerk-js@6/dist/clerk.browser.js → Could not resolve host (your own dashboard host) Live failing endpoint: https://clerk.bycoach.io/npm/@clerk/clerk-js@6/dist/clerk.browser.js

Publishable key

pk_live_Y2xlcmsuYnljb2FjaC5pbyQ

Description

Severity

P1 — production auth fully down. Customer-facing.

Symptom

clerk-js fails to load with ERR_NAME_NOT_RESOLVED on:

  • Every custom-domain Clerk customer (e.g. our clerk.bycoach.io)
  • dashboard.clerk.com itself — your own engineers cannot sign in to the Clerk dashboard right now (tested via Playwright Chromium: 20 console errors, blocked at clerk.clerk.com/npm/@clerk/clerk-js@6/dist/clerk.browser.js)

Failing hostname

frontend-api.clerk.servicesNXDOMAIN at recursive resolvers, but stale positive answer at DoH endpoints (TTL=3600 cache). That's why some browsers/networks may transiently appear to work while most fail.

Both clerk.bycoach.io (custom domain) and clerk.clerk.com (your dashboard FAPI) CNAME to this same broken hostname.

Reproduce

getent hosts frontend-api.clerk.services   # empty (NXDOMAIN)
getent hosts clerk.clerk.com               # empty (CNAME → frontend-api.clerk.services)
getent hosts clerk.bycoach.io              # empty (CNAME → frontend-api.clerk.services)

# Controls — these still resolve, ruling out a wider issue:
getent hosts accounts.clerk.services       # resolves
getent hosts api.clerk.com                 # resolves
getent hosts api.accounts.dev              # resolves

The Cloudflare worker IP (104.18.34.146 / 172.64.153.110) still serves traffic correctly when DNS is bypassed via --resolve — so the worker is healthy, this is purely a DNS-layer failure.

Authoritative NS for clerk.services

dns1/2/3.easydns.{com,net,ca}, ns1-4.dnsimple.com

SOA serial: 1548369985

Status page

status.clerk.com shows "All Systems Operational" — this is incorrect.

Browser-side error

GET https://clerk.bycoach.io/npm/@clerk/clerk-js@6/dist/clerk.browser.js
     net::ERR_NAME_NOT_RESOLVED

Clerk: Failed to load Clerk JS
  (code="failed_to_load_clerk_js")

Identical error appears on dashboard.clerk.com itself loading https://clerk.clerk.com/npm/@clerk/clerk-js@6/dist/clerk.browser.js.

Impact

  • bycoach.io trainer sign-in/sign-up fully blocked. Customer-facing.
  • Confirmed reproducing from multiple independent networks: WSL2 dev box, mobile cellular network, Playwright Chromium.
  • First observed ~07:30 UTC on 2026-05-08, still failing at the time of filing (~08:45 UTC, ≈75 min).

Workaround

None client-side. Every pk_* publishable key encodes a FAPI URL that ultimately resolves through the same clerk.services zone, so swapping keys does not help. The fix has to happen at Clerk's authoritative DNS for frontend-api.clerk.services.

Notes for triage

This is not a code-level bug in @clerk/clerk-js. It is an infrastructure / DNS issue in the clerk.services zone affecting every customer with a custom domain (and your own dashboard).

Filing here because Discord/support channels are unreachable for us right now and dashboard.clerk.com (where the in-app support widget lives) is itself broken by this outage.

Environment

Not relevant — this is a DNS / infrastructure outage, not a package-level bug. Reproduces independent of OS, Node version, or @clerk/* package version, on any network without a stale DoH cache.

Observed on:
- Browser: Chromium 124 (Playwright) on Linux, Chrome on Windows 11
- Mobile: iOS Safari on cellular network (different ISP, also fails)
- CLI: curl 8.x on WSL2 Ubuntu 22.04 — `getent hosts frontend-api.clerk.services` returns NXDOMAIN

Project (for context only — not the source of the bug):
- @clerk/clerk-react: ^5
- @clerk/clerk-js: served from custom domain clerk.bycoach.io

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageA ticket that needs to be triaged by a team member

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions