ECOOP 2022
Mon 6 June - Thu 7 July 2022 Berlin, Germany
Tue 7 Jun 2022 14:30 - 15:00 at Pine - Afternoon Session

Client-side web applications have evolved around the assumption that state can only be accessed via expensive network calls to a backend web server. However, in a local-first application, this assumption no longer holds; a client device can have rich, low-latency access to locally persisted state. We think this shift can enable new patterns for radically simplifying UI development, by managing state in a powerful client-side database.

We propose some design principles for achieving this simplification: using declarative relational queries to represent data transformations, representing state in a graph of reactive queries, and combining UI state with domain state in a single local-first datastore. We call this combination of principles the reactive relational model. We have built a prototype called Riffle implementing this idea using the SQLite embedded database and the React.js web UI framework, and have used the prototype to build some sample apps, including a full-featured music management application.

So far, we have found promising signs that a reactive relational model can help developers more easily and debug local-first apps, produce faster experiences for end-users, and offers intriguing possibilities for data-centric interoperability between apps. We’ve also encountered challenges from trying to build toward this vision using existing tools. We will share some of these experiences and the opportunities we see for future local-first state management systems.

Tue 7 Jun

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change