Samuel Newman 5f539827da set the global app labelers on the lex Client static
`configureGlobalAppLabelers` now writes both `AtpAgent.configure` and
`Client.configure`, so a client built without a wrapped agent carries the
global `;redact` moderation authorities. That is what the logged-out appview
client needs: it has no agent underneath to stamp the header, and after the
bundle rework no client will.

Flipping the static alone double-emits, which two probe runs confirmed. Neither
producer dedupes against the other - the agent joins its list with whatever is
already on the request while lex collects into a `Set` keyed on the
`;redact`-suffixed string - so a DID in both statics produced
`did:plc:x;redact, did:plc:x;redact`. Separately, the PDS and chat clients wrap
the session manager *below* the agent's header layer and so emitted no labelers
at all; the static would have started adding them to non-appview requests.

Both are closed by building the three agent-wrapping clients with
`appLabelers: null`, which suppresses the class-wide static per instance. That
leaves exactly one producer on an appview request and none on a PDS or chat one,
while the static stays populated for the clients that read only it. The
labeler-header tests cover all three surfaces and fail without the suppression.

The per-account subscriptions stay on the agent for now, behind
`applyLabelersToClient`, because the agent is still what stamps the header on
the wrapping client's requests. The bundle-rework slice repoints that one
function body at `appviewClient.setLabelers` and drops the agent statics; the
`Client.configure` half of `configureGlobalAppLabelers` and the
`appLabelers: null` on the appview client both stay as they are.

`configureModerationForAccount` takes the bundle rather than a bare agent,
matching the signature the bundle rework needs.
2026-08-13 22:13:47 +03:00
2026-02-23 22:34:52 -08:00
2022-06-07 17:50:05 -05:00
2026-08-13 05:49:05 -07:00
2026-05-05 11:51:42 -07:00
2026-07-10 12:27:00 -07:00
2026-05-25 16:29:46 -05:00
2026-08-13 21:41:06 +03:00
2022-06-07 17:50:05 -05:00
2024-07-11 18:15:35 -07:00
2022-06-07 17:50:05 -05:00
2026-07-23 18:25:40 +03:00
2026-07-27 23:43:11 -07:00
2026-08-13 21:41:06 +03:00
2026-01-20 08:50:07 +02:00
2026-05-18 09:51:04 -07:00
2026-07-14 05:39:05 -07:00
2026-08-12 05:49:31 -07:00
2026-08-13 22:12:54 +03:00

Bluesky Social App

Welcome friends! This is the codebase for the Bluesky Social app.

Get the app itself:

Development Resources

This is a React Native application, written in the TypeScript programming language. It builds on the atproto TypeScript packages (like @atproto/api), which are also open source, but in a different git repository.

There is a small amount of Go language source code (in ./bskyweb/), for a web service that returns the React Native Web application.

The Build Instructions are a good place to get started with the app itself.

The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't need to understand AT Protocol to work with this application, but it can help. Learn more at:

The Bluesky Social application encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is app.bsky.*.

Contributions

Note

While we do accept contributions, we prioritize high quality issues and pull requests. Adhering to the below guidelines will ensure a more timely review.

Rules:

  • We may not respond to your issue or PR.
  • We may close an issue or PR without much feedback.
  • We may lock discussions or contributions if our attention is getting DDOSed.
  • We're not going to provide support for build issues.

Guidelines:

  • Check for existing issues before filing a new one please.
  • Open an issue and give some time for discussion before submitting a PR.
  • Stay away from PRs like...
    • Changing "Post" to "Skeet."
    • Refactoring the codebase, e.g., to replace React Query with Redux Toolkit or something.
    • Adding entirely new features without prior discussion.

Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for!

Forking guidelines

You have our blessing 🪄 to fork this application! However, it's very important to be clear to users when you're giving them a fork.

Please be sure to:

  • Change all branding in the repository and UI to clearly differentiate from Bluesky.
  • Change any support links (feedback, email, terms of service, etc) to your own systems.
  • Replace any analytics or error-collection systems with your own so we don't get super confused.
  • Replace the landing-screen illustration in assets/illustrations/. It is commissioned artwork licensed to Bluesky alone, and our MIT license does not cover it.
  • Source your own UI icons. The glyph set in assets/icons/ is licensed to us by a third party for our own use, and that license does not extend to you.
  • Replace the Bluesky logo, app icons, and other brand assets. Our trademarks are not licensed with the code.

Please read ./ASSETS.md before you ship. Not every file in this repository is covered by our MIT license — some of the artwork, icons, fonts, and brand assets are licensed to us by third parties or are trademarks, and ASSETS.md says which ones and what to do about them. That file is new. Its absence is why some forks have shipped assets they did not have rights to, and that was our omission rather than theirs.

Security disclosures

If you discover any security issues, please send an email to security@bsky.app. The email is automatically CC'd to the entire team and we'll respond promptly.

Are you a developer interested in building on atproto?

Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party integration can be as seamless as first-party through custom feeds, federated services, clients, and more.

License (MIT)

See ./LICENSE for the full license, which covers the source code in this repository.

It does not cover every file. Certain images, icons, fonts, and brand assets are licensed to us by third parties, or are trademarks, and are carved out — see ./ASSETS.md. Required third-party attribution notices are collected in ./NOTICE.md.

Bluesky Social PBC has committed to a software patent non-aggression pledge. For details see the original announcement.

P.S.

We ❤️ you and all of the ways you support us. Thank you for making Bluesky a great place!

S
Description
No description provided
Readme MIT 838 MiB
Latest Build Latest
2026-09-08 16:36:01 +00:00
Languages
TypeScript 92.9%
Go 2.2%
JavaScript 1.8%
Kotlin 0.9%
HTML 0.9%
Other 1.2%