Comment by YousefED

2 years ago

This article has been quite the inspiration for many projects and progress on this front. I think we're seeing more and more developments around CRDTs and local-first frameworks / applications.

I'm working on a few projects in this area:

- https://www.typecell.org - Notion meets Notebook-style live programming for TypeScript / React

- https://www.blocknotejs.org - a rich text editor built on TipTap / Prosemirror that supports Yjs for local-first collaboration

- https://syncedstore.org - a wrapper around Yjs for easier development

In my experience so far, some things get more complicated when building a local-first application, and some things get a lot easier. What gets easier is that once you've modeled and implemented the data-layer (which does require you to rethink / unlearn a few principles), you don't need to worry about data-fetching, errors etc. as much as in a regular "API-based" app.

Another interesting video I recommend on this topic is about Linear's "Sync Engine" which employs some of the local-first techniques as well: https://www.youtube.com/watch?v=Wo2m3jaJixU

>https://www.typecell.org

I took a look at the landing page out of curiosity, just an FYI but at first glance there's nothing that indicates to me that this is not a regular SaaS app.

Specifically, unless I'm missing something, nothing in the text jumped out at me indicating the app satisfies this condition stated in the article:

>for good offline support it is desirable for the software to run as a locally installed executable on your device

Might want to make this feature more prominent if you support it.

  • Thanks, great feedback!

    Although it's entirely architected on a local-first stack, I indeed haven't shipped the main benefit of this, a locally installable app. There's a WIP PR here that adds PWA support: https://github.com/TypeCellOS/TypeCell/pull/352. I'll highlight this more when this is merged.

    Nevertheless, some of the benefits are already noticeable and come "out of the box" with building on a local first architecture, even if not shipping an executable yet: - multiplayer sync - speed: documents are loaded from local storage initially if they have been loaded before, and changes sync in after that

    In the future (when there's an installable app), I also want to enable saving / loading from the file system, so that it's completely transparent where your data is.