Skip to content
Where We're At

SDKs and languages

There is no right way to build for ATproto. Which languages and tools do you reach for? How do the SDKs hold up?

Which languages have you used with ATproto?

179 responses

Over 70% of builders use TypeScript, which makes sense, considering the official SDKs are written in it, and it is the dominant frontend language.

  1. TypeScript70.4%, 126 people
  2. JavaScript34.6%, 62 people
  3. Rust32.4%, 58 people
  4. Go27.9%, 50 people
  5. Python25.7%, 46 people
  6. Gleam6.7%, 12 people
  7. Kotlin6.7%, 12 people
  8. Swift6.7%, 12 people
  9. Dart5%, 9 people
  10. C#4.5%, 8 people
  11. Elixir2.8%, 5 people
  12. Ruby2.8%, 5 people
Show 19 more
  1. PHP1.7%, 3 people
  2. C/C++1.1%, 2 people
  3. Clojure1.1%, 2 people
  4. bash0.6%, 1 person
  5. C0.6%, 1 person
  6. Common Lisp0.6%, 1 person
  7. Elm0.6%, 1 person
  8. GDScript0.6%, 1 person
  9. Haskell0.6%, 1 person
  10. Java0.6%, 1 person
  11. Mercury0.6%, 1 person
  12. Objective C0.6%, 1 person
  13. Observable JavaScript0.6%, 1 person
  14. Perl0.6%, 1 person
  15. Powershell0.6%, 1 person
  16. Scala0.6%, 1 person
  17. Zig0.6%, 1 person
  18. zsh0.6%, 1 person
  19. Something else1.1%, 2 people
Share of the 179 people who answered. Several answers each, so shares can add up past 100%.

How do you feel about these libraries?

173 responses

  • Negative

    • Used it, negative experience
    • Heard of it, not interested
    • Never heard of it, not interested
  • Neutral

    • No sentiment given
  • Positive

    • Never heard of it, interested
    • Heard of it, interested
    • Used it, positive experience

TypeScript and JavaScriptshown to 138 people

  1. atcute132 of 138

    Most common: Used it, positive experience, 41.7%

  2. @atproto/api135 of 138

    Most common: No sentiment given, 43%

  3. @atproto/lex134 of 138

    Most common: No sentiment given, 44.8%

  4. Airspace132 of 138

    Most common: No sentiment given, 60.6%

Rustshown to 58 people

  1. jacquard58 of 58

    Most common: No sentiment given, 37.9%

  2. atproto-crates57 of 58

    Most common: No sentiment given, 47.4%

  3. ATrium58 of 58

    Most common: No sentiment given, 48.3%

Goshown to 50 people

  1. indigo49 of 50

    Most common: Used it, positive experience, 57.1%

Pythonshown to 46 people

  1. atproto46 of 46

    Most common: Used it, positive experience, 37%

Swiftshown to 12 people

  1. ATProtoKit11 of 12

    Most common: No sentiment given, 63.6%

  2. swift-atproto10 of 12

    Most common: No sentiment given, 70%

Dartshown to 9 people

  1. atproto.dart9 of 9

    Most common: No sentiment given, 33.3%

C#shown to 8 people

  1. idunno.Bluesky8 of 8

    Most common: No sentiment given, 50%

  2. CarpaNet8 of 8

    Most common: No sentiment given, 50%

Elixirshown to 5 people

  1. atex5 of 5

    Most common: Used it, positive experience, 40%

Rubyshown to 5 people

  1. ruby.sdk.blue5 of 5

    Most common: No sentiment given, 40%

PHPshown to 3 people

  1. libphpsky3 of 3

    Most common: No sentiment given, 33.3%

Zigshown to 1 person

  1. zat1 of 1

    Most common: Used it, positive experience, 100%

Each bar splits one entry's ratings from negative to positive. Entries with fewer than 10 ratings come last.

What is most frustrating about the SDK/language you use most?

56 responses

OAuth and related docs seem to cause the most headaches for builders.

  1. OAuth16.1%, 9 people
  2. Outdated SDK documentation16.1%, 9 people
  3. Lexicon codegen issues12.5%, 7 people
  4. AI use within library5.4%, 3 people
  5. Attachment to Bluesky5.4%, 3 people
  6. Lack of libraries5.4%, 3 people
  7. Library Design5.4%, 3 people
  8. Rust5.4%, 3 people
  9. @atproto/lex3.6%, 2 people
  10. Debugging3.6%, 2 people
  11. Documentation style3.6%, 2 people
  12. Download size3.6%, 2 people
Show 48 more
  1. Lifetimes3.6%, 2 people
  2. Missing context for AI3.6%, 2 people
  3. Slow startup times3.6%, 2 people
  4. Types3.6%, 2 people
  5. Abstractions1.8%, 1 person
  6. Adoption1.8%, 1 person
  7. AI use (official SDK)1.8%, 1 person
  8. Atmosphere account requirement1.8%, 1 person
  9. atproto-crates1.8%, 1 person
  10. Authentication1.8%, 1 person
  11. Caching1.8%, 1 person
  12. CBOR support1.8%, 1 person
  13. Complexity1.8%, 1 person
  14. Custom lexicons1.8%, 1 person
  15. Dependencies1.8%, 1 person
  16. Dependency bloat1.8%, 1 person
  17. Discussing lexicons1.8%, 1 person
  18. DPoP1.8%, 1 person
  19. Edge cases1.8%, 1 person
  20. Elixir1.8%, 1 person
  21. Errors1.8%, 1 person
  22. Flutter1.8%, 1 person
  23. Gleam1.8%, 1 person
  24. Go1.8%, 1 person
  25. Handle resolution1.8%, 1 person
  26. Hydration1.8%, 1 person
  27. indigo1.8%, 1 person
  28. Interop between JS frontend and Rust backend1.8%, 1 person
  29. jacquard1.8%, 1 person
  30. Java1.8%, 1 person
  31. Jetstream compression1.8%, 1 person
  32. Lack of tutorials1.8%, 1 person
  33. Listening for service events1.8%, 1 person
  34. Mental model mismatch1.8%, 1 person
  35. Missing parity with Bluesky1.8%, 1 person
  36. Missing plain JS SDK1.8%, 1 person
  37. Missing releases1.8%, 1 person
  38. Missing SDK features1.8%, 1 person
  39. Missing websocket plumbing1.8%, 1 person
  40. Multiple clients per domain1.8%, 1 person
  41. Perl1.8%, 1 person
  42. Poor error messages1.8%, 1 person
  43. Rate limits1.8%, 1 person
  44. Request handling1.8%, 1 person
  45. Spec compliance1.8%, 1 person
  46. standard.site integration1.8%, 1 person
  47. Testing1.8%, 1 person
  48. URL segmentation1.8%, 1 person
Free-text answers grouped into topics. Share of the 56 people who answered.