Features
Desktop
To qualify, a runtime must be designed to run on the desktop of any OS without a
3rd party plugin or another runtime. Some frameworks source another runtime which
adds significant complexity and bloat.
Mobile
To qualify, the runtime must be production ready and originally designed to run
on mobile without impacting the user's code or adding complexity(such as sourcing
another runtime).
Web Language
Socket Runtime is targeted at web developers who know JavaScript, HTML, and CSS.
Tauri requires learning Rust and Flutter requires learning Dart for them to be
used as intended.
Web Compatible
To qualify, a runtime should be able to run any library that runs in a browser.
There are third party projects that might get some Web libraries to work but at
the cost of added complexity, risk, and build time. React Native for example
does not have a DOM because it compiles the React AST to native components.
Any Backend
In Tauri, this is Rust. In Electron, this is Node. Socket doesn't care what
adjacent process you run, it could be any valid process that can read standard
input and write to standard output.
Backend Optional
We consider the practice of separating frontend and backend to be a design mistake
that has continued to influence runtimes since Electron's popularity. The design
was a security precaution predicated on the idea that the backend, an arbitrary
program containing potentially thousands of transient dependencies, having unmitigated
access to the user's computer, could be fully trusted.
We advise creating Socket apps in a single process. Socket's APIs are constrained
by the CSP, a native Web platform feature.
Native Add-ons
While React Native and Cordova-based solutions like Capacitor have large ecosystems
of plugins, Socket runtime is batteries included — there is no need for the
ordinary user to figure out who maintains or how to install critical components
like filesystem or bluetooth. Socket does support native add-ons, but they're less
critical to every day usage. This also improves auditability.
Native P2P
Socket is the first runtime to offer Web developers a complement to a traditional
client-server architecture. P2P makes it possible to discover, connect to, and sync
state with other users over the Internet and locally, even if all the other users of
your app are offline — no Cloud or server infrastructure is required at all.
Socket Runtime's P2P builds on UDP, like HTTP3 and other modern protocols. Making
P2P a native feature provides many opportunities for separating concerns and improving
auditability.
Bluetooth
Socket Runtime provides bluetooth as a native feature for all platforms that can be used for P2P in cases where wifi or internet is not available.