@hugh ActivityPub is very badly defined, I wrote an article about it (about s2s, but all of that applies to c2s as well): https://chrastecky.dev/technology/activity-pub-the-good-the-bad-and-the-ugly
Additionally, it's a very chatty api with a lot of http requests, that's fine for s2s, but for c2s it makes the app much slower.