I ran across WebXDC this past weekend, and I'm intrigued. I've built a few apps on it already, and I'm very pleasantly surprised by how cleverly inverted the whole model is (in combination with ChatMail). Delta Chat is available on iOS, I believe. I use Arcanechat on Android.

https://webxdc.org/

https://chatmail.at/

https://apps.apple.com/us/app/delta-chat/id1459523234

https://arcanechat.me/

The beauty of the ecosystem is that apps are just zips of a webapp that is self-contained, and uses the webxdc api to message other copies of itself running on other folks' phones that are part of that chat group. Basically, the app communicates (and is distributed over!) the group chat (it's otherwise insulated from the internet). And because apps are just zipped webapps, they can be pulled apart, hacked on, and reassembled as needed for your group.

ChatMail relays tend not to retain info - they aren't hosts, they just relay encrypted messages (the platform mandates encryption). This sidesteps all the approval/review processes, and there is no app store or developer fee or even SDK. It's just folks trading apps and running them together.

It can't solve a lot of cases, but it solves some use cases (like a shared grocery list, or real-time card games, or games with leaderboards) really well.

Interesting. What apps have you built? How/where is state maintained?

Yeah, it's a pretty fascinating architecture. I already have a side project called AppDeck where I've been buliding out a WebDAV server and a suite of HTML apps that know how to save modified copies of themselves back to the server. I've been using it for a couple of years, and the suite is growing - tools, apps, games, etc.

My son had written a game like this called "Quantum Chain" that had basic leaderboard functionality. That was the first app we ported: the platform injects the webcdx.js shim, and we update Quantum Chain to post messages to it when someone finished a game with a high score. This is replicated out to the relays the same way every message in the group chat is. When the app fires up, Delta/ArcaneChat replay all messages that are typed for that app back to it, and it restores it's state that way. There's some localstorage caching to make this a bit more efficient as the stream grows.

So it's a bit like several services reading off the same kafka stream to stay in sync.

I've since ported over (and massive improved) my implementation of KenKen, which also has leaderboards. I then took on realtime gameplay: a card game my family likes called "Shithead" that supports 2-6 players. I built a first version in about 6 hours, and I'm still working out session management (so folks can join and leave games and everything syncs properly). Still a couple of edge cases to fix, but overall, it been trivially easy to bring over webapps to the platform that already exist, and a few hours of effort to create a new one.

I'm pretty thrilled with the whole ecosystem, as it gets me away from all the BS the companies have layered on top of the basic "Apps with Friends" experience ArcaneChat offers.

Related: You can perfectly well upload WebXDC's to your "Saved Messages" channel (the channel where you DM yourself) to have a single user app running on the platform. It already has close to 200 apps of various sorts you can try from the default "app directory", but of course any site can be used as the directory.