The lemmy API still hasn’t hit a version 1.0, and should very much be considered beta, with a lot of active and breaking changes. When we do stabilize it, then we can start to make these breaking API changes more solid. The v3
should probably just go away at this point, because we have too much active development and API changes to justify it.
What we do on lemmy-js-client, which has its types auto-generated from rust, is use tags that match our lemmy release semver version.
I’m not sure how you built lemmy-swift-client ( I hope its auto-generated from either the rust or lemmy-js-client types), but you could do the same thing: use tags to version it, then applications could use those tagged versions.