I've built my own client for Twitter. I'm using a library that a random guy maintains. It has its problems, but all of them can be worked around, and overall it feels solid, especially considering the fact that it's done by a single person.
Then I had to add bsky support when everyone and their mother migrared there. I used the atproto Python library and holy smokes, whener I need to touch that part of the code I feel sad.