RemoteStorage

Dev tools

frontend state library

SHOW HN2024

129points
62comments
#657of 3,515 in 2024
Top 19%of 2024 by points

How HN took it

MixedNo clear lean

7 positive, 15 neutral or asking, 2 mixed, 11 critical, out of 35 comments about the project. Thread score -0.08.

Idea: 6 for, 7 againstExecution: 0 for, 3 againstDesign: 1 for, 0 againstPerformance: 0 for, 1 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Simple API that feels like localStorage

    From 3 comments
    • Your landing page at https://remote.storage/ is so good, I love the minimalism. Six lines of code tell me exactly what it does.
      paulgb on HN
    • I love the simplicity and kinda wish that was actually built into Chrome. I know it would probably break things but if Google could automatically sync local storage and IndexedDB…
      matlin on HN
    • That's so cool ! I was thinking how I'd make work syncing my offline first app and this looks promising
      simlevesque on HN
  • Fills a real need for cross-device frontend preferences

    From 2 comments
    • I would state the opposite, the use case is huge. To add something new, that needs to persist, will not require going to a backend team and begging for a new API from them. A…
      buro9 on HN
    • That's so cool ! I was thinking how I'd make work syncing my offline first app and this looks promising
      simlevesque on HN

Objections

  • Writes are async, so existing sync code must change

    From 2 comments
    • Very cool overall but the sync->async change means you can't always use it as a drop-in replacement. I assume it's making network calls in those cases which will take…
      joshstrange on HN
    • Totally fair point and I understand that as-is it’s way simpler than what I proposed. I just know there are places I have to change a whole chain of functions from sync to async…
      joshstrange on HN
  • Conflict resolution and offline behaviour unclear or missing

    From 3 comments
    • How are the conflicts resolved? Machine A is online and sets "x" to 1. Machine B is offline and sets "x" to 2. Machine B goes online. What the resulting state on A and on B? What…
      eps on HN
    • I see. The case in question is when the user switches between two devices, each of which may be sometimes offline. This can cause older changes hitting the server later than the…
      eps on HN
    • Based on the comments I think this is just, not yet implemented. But is one of the next steps for truly cross device storage.
      valsk on HN
  • Name collides with existing remoteStorage.io protocol

    From 3 comments
    • The name Remotestorage is already used for a protocol for portable user-controlled storage. See e.g. Remotestorage.io.
      vidarh on HN
    • how is this different from remotestorage.io ?
      airtonix on HN
    • Not to be confused with https://remotestorage.io/
      SushiHippie on HN
  • Backend needs its own auth and user ID, which is hard to get

    From 2 comments
    • The bit about finding a unique ID for the user is the whole pain point though. The only way to do that really is for the user to create an account on some service that I host.…
      stevage on HN
    • Cookies or passkeys? Seems very complex when you can use something simply to track state and identity. Passkeys sync across cloud storage, for example, even if you’re using a…
      toomuchtodo on HN

Requests

  • Add JWT authentication

    From 2 comments
    • On the authentication front - JWTs would be a great fit here! The developer's backend could issue a JWT, which is validated by the remoteStorage backend. Then, use the `sub`…
      maxwellg on HN
    • I like this but umm yeah I can roll my own pretty easily. If you had a simple auth solution built in I'd use it!
      valsk on HN
  • Offline support and optimistic local writes

    From 2 comments
    • Very cool overall but the sync->async change means you can't always use it as a drop-in replacement. I assume it's making network calls in those cases which will take…
      joshstrange on HN
    • I see. The case in question is when the user switches between two devices, each of which may be sometimes offline. This can cause older changes hitting the server later than the…
      eps on HN
  • OpenAPI spec or API documentation

    From 2 comments
    • What is special with the server? I was surprised you offered a community-hosted server. An OpenAPI spec should be enough, right?
      shunyaekam on HN
    • I think you should give an API specification so that people don’t bother using public API or hosting another service could implement it directly in the existing backend.
      novoreorx on HN

Questions

  • How does this differ from remotestorage.io and PouchDB

    From 3 comments
    • How does this compare to PouchDB[1]? [1]: https://pouchdb.com/
      amadeuspagel on HN
    • how is this different from remotestorage.io ?
      airtonix on HN
    • At first I got confused, because i thought this was a refreshed version of https://remotestorage.io ....but, i see now that its different/separate.
      mxuribe on HN
  • How are conflicts resolved between devices

    From 1 comment
    • How are the conflicts resolved? Machine A is online and sets "x" to 1. Machine B is offline and sets "x" to 2. Machine B goes online. What the resulting state on A and on B? What…
      eps on HN

Alternatives named

  • PouchDB

    From 1 comment
  • remotestorage.io

    From 2 comments
  • ElectricSQL

    From 1 comment
  • Triplit

    From 1 comment
    • Your app might not need it but if you want partial replication or relational querying in addition to offline-first syncing then check out https://github.com/aspen-cloud/triplit…
      matlin on HN
  • cr-sqlite

    From 1 comment

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/38972358)