Hi @denyhs, Thanks for the kind words.
The biggest challenge (regarding Meteor) was that there is no “official” native DDP support for iOS / visionOS. I found an open-source library, but it was not stable and had quite some bugs. It also did not really work in the same way as Meteor’s web implementation does. So I made a fork which tries to better mimic what Meteor does (and I assume it’s still a bit buggy ).
Although DDP is a pretty simple protocol, the devil is in the details, especially when it gets to things like reconnecting if the connection breaks up. The existing library did not really care for this (or to be more precise: it kinda did, but only for an outdated WebSockets implementation). Another example was that the library did not follow the resub/unsub pattern of the web implementation, resulting in all documents being sent again instead of diffing them. Implementing something like Meteor’s “merge box” is not trivial, too.
Luckily, I had some prior experience, since I had pretty much the same situation when I integrated DDP into our Unity-based mobile apps for iOS and Android, which also use the same Meteor backend. I had found a C# implementation, but it had similar issues, so I patched it a lot back then.
I would love to see native ports of DDP implemented by the Meteor team, ideally in Swift, Kotlin, and C#. That would be just amazing. When I started with Meteor back in 2015, there were inofficial implementations for iOS (Objective-C) and Android (Java) by Martijn from MDG, but they are pretty outdated.
You can find the other thread here: Replacement for DDP?
Besides Meteor, the biggest challenge on visionOS right now is that the platform is pretty new. It has bugs and limitations, the documentation and tutorials are scarce, and Apple’s support in the forums quite often boils down to: “If you need this or that feature, please open a ticket.”
And if you’re new to Swift and Swift UI (like me), that’s a pretty steep learning curve as well. Both of these technologies are IMHO quite “over-engineered”, and still differ a lot from OS version to OS version (even on iOS). Thus, it’s quite tough find the right docs / tutorials / samples online.
Happy to jump on a Zoom call anytime to tell you more, if you’re interested.
EDIT: Besides, I think Meteor is the perfect backend for a highly reactive app like ours, where things happen in real-time, in a multi-user social environment. We’re also using maps heavily in the visionOS app, where it is crucial that you only get the diffs when panning. As it is a social app, there’s tons of content to be found all over the world.