AT Protocol deprecates hardcoding bsky.social and relying on default AppView proxying
What changed
In its March 7, 2025 roadmap the AT Protocol team listed deprecated patterns it will start removing "more aggressively". Clients should resolve login identifiers to PDS instances instead of hardcoding bsky.social, which still proxies requests to avoid breakage and "may stop proxying in the near future". Clients should also stop relying on the reference PDS forwarding app.bsky.* calls to api.bsky.app by default and always name a service in the atproto-proxy header. The #tombstone, #handle and #migrate firehose events, replaced in 2024, will be removed from the Lexicons.
What it means
Tools that send every request to bsky.social, or call app.bsky endpoints through a PDS without an atproto-proxy header, may break when Bluesky stops the compatibility proxying it still provides.
Who is affected
Developers of Bluesky posting, scheduling, analytics and bot tools, especially older code written before federation.
What to do
Resolve each handle or DID to its PDS and send requests there, and always set the atproto-proxy header (did:web:api.bsky.app#bsky_appview for the Bluesky AppView) on proxied app.bsky calls. No removal date was given.
What this means for you
Bluesky accounts can live on many different servers. Some older apps still send everything to Bluesky's main server and count on it to pass requests along. Bluesky has warned that this courtesy may end. If it does, those older apps could stop posting or loading. Well-maintained apps already handle this; ask your app if you are not sure.
The details
- No hardcoded
bsky.social: "Client apps should resolve user login identifiers (handles or DIDs) to PDS instances, and should not hardcode thebsky.socialdomain for API requests." Bluesky has kept proxying such requests "to avoid breakage" and "may stop proxying in the near future." No date was given. - Always set
atproto-proxy: the reference PDS has forwardedapp.bsky.*endpoints toapi.bsky.appby default. No other namespace gets this. Clients "should always specify a service in the proxy header." The Bluesky AppView service reference isdid:web:api.bsky.app#bsky_appview. - Old firehose events:
#tombstone,#handleand#migratewere replaced by#identityand#accountin 2024 and will be removed from the Lexicons (the May 2025 relay post spells#migrateas#migration). See Bluesky relay software supports Sync v1.1 for the relay side. - Same post, other plans: Sync v1.1 (new
#syncmessage,tooBigremoved,desynchronizedandthrottledaccount statuses,com.atproto.sync.listReposByCollection), OAuth auth scopes, and a PDS web interface for account sign-up. - Background: Bluesky opens federation explains why accounts may not be on
bsky.social.
What to do next
- Business owners: Nothing, unless your Bluesky tool fails for accounts hosted outside Bluesky; then ask the vendor about this change.
- Marketers and agencies: Ask your Bluesky tool vendor whether it resolves each account's own server rather than assuming bsky.social.
- Developers: Remove hardcoded
bsky.socialAPI calls, resolve DID to PDS at login, addatproto-proxyto app.bsky requests, and drop handling for the old firehose event types.
Primary sources
Get an email when a new API change is added
Follow new entries with the RSS feed. Each platform also has its own feed, for example X or Meta.