Too bad, I was hoping for a discussion of state reconciliation strategies between front and back end. Anyone know where to find the conversation on the state of the art?
you wanted that from something titled "Robust Client-Side JavaScript"?
i somewhat work in state reconciliation. what do you want to know? i dont think its progressed a whole lot beyond the "your frontend is a part of your distributed system so CAP theorem applies"
A large part of the domain is synchronisation and determining what even needs to be reconciled.
Even at that level, pretty much everyone’s been inventing their own thing since time immemorial.
I am aware of only one attempt to standardise anything in this general area (synchronisation in web tech): JMAP, now published as RFC 8620. JMAP is an object synchronisation protocol based on web tech. Its prime motivating example has been the email domain, to provide a replacement for IMAP, and that data model is published as RFC 8621; but JMAP is perfectly generic and applicable to other data models (which is why the two RFCs are separate documents).
JMAP doesn’t say anything about actual reconciliation; if it’s possible you may need it, deciding how to handle it is left up to you.
I reckon JMAP is the state of the art, though the ecosystem is decidedly immature. But before listening to me, know that I’m biased by having been a Fastmail employee, working on the frontend. (And having drunk the kool-aid, I intend to use JMAP as the primary API on various other personal projects that I have in mind, even if I also expose other less-complicated and less-capable APIs for others that want them.)
Depending on what you wanted to count, you could also include the CouchDB Replication Protocol. It’s decidedly robust, with a different focus to JMAP and overall more opinions, which could be good or bad depending on your perspective and situation.
(And returning to what you were originally asking, CouchDB has its own state reconciliation in case of diverging edits. Kind of, anyway. It’s essentially “pick one, deterministically, and leave the revisions around so that software can do something more nuanced afterwards if it really wants to”.)
React + Apollo + TypeScript syntax took me a bit of time to get accustomed to after primarily working with JavaScript and REST APIs, but once I fully grokked it I decided I will never go back.