Questions about a web client library, or how to integrate Storj as an app developer?


I just want to ask about the use of uplink libraries. I’m a Flutter agency developer and I’m a little confused after scouring the forums and racking my head about how to integrate Storj across client platforms (mobile + web + desktop). I strongly prefer using the uplink protocol to seamlessly support end-to-end encryption, but it doesn’t seem like there’s a good way forward for web clients in particular:

  • I first thought about building a Flutter plugin by hand from the existing Android/Swift/JS/++ packages, but it looks like the JS package is node-only. This forum thread also suggests that the JS package is actually functionally deprecated and incompatible with the others. Is this true? It hasn’t been updated in years and has virtually no installs today.

  • I also thought I might figure out how to build a similar JS package off newer uplink-c, but this thread suggests that a pure JS implementation takes some drpc work that hasn’t been touched in years. It’s not clear to me whether it’s possible to use transpiling/binding tools to construct a functional client library. Is some foundational ecosystem work a prerequisite?

  • So I figured, maybe I just use the existing JS implementation and package a minimal JS engine with my apps so that I can have the same implementation across platforms. Buut I figured it would probably be a pain to get a node and node-gyp dependent package to work with the engines used by flutter_js (QuickJS and JavascriptCore). Is this even possible?

Is there some easier solution that I’m missing for web clients without resorting to S3 or a proxy?

I guess I’m surprised/concerned in two ways:

  1. To see so little investment in the most ubiquitous client environment. I wouldn’t expect a Flutter plugin, but it seems like JS support was driven by side-project efforts and just flatlined a few years back.
  2. From what I can tell a few crucial details about the JS library are hidden in forum posts and are otherwise undocumented. If it’s not interoperable with other libraries, that feels like a big deal to disclose clearly. I didn’t even find relevant breaking changes in the release notes for the Go and C libraires.

Are most customers simply satisfied by the S3 gateway solutions, or am I missing something? :sweat_smile:

Hello @Wes,
Welcome to the forum!

Currently you cannot use only client (browser) libraries to use a native protocol due to browser’s limitations:

However we have some web assembly implementations

But generally server-less is possible only for S3 protocol at the moment:

So, for the native protocol you need to have a backend and there you may use any of bindings: SDKs - Storj Docs
Even if some are outdated they still works.
Most customers uses our Storj-hosted S3-Gateway and/or presigned URLs, especially for light mobile apps to make their implementation easier, but they of course loose the CDN-like behavior in this case.
However we have implementations of a native protocol in the Mobile app for Android: Storj Mobile App - what would you like to see?
I would also add:


Don’t forget @Alexey - we also have integration on the Solana Saga phone/dapp store :wink:

1 Like