Personal goes progressive
October 26, 2023
Two weeks ago, we launched Space OS to the world, with the aim of making computing on the web more personal, powerful, and fun. While much of the focus was on the Horizon, Space OS has a lot to offer beyond the Horizon itself.
One of the things the team has been working very hard on with Space OS is the cloud infrastructure to power personal web applications. Personal web apps are different from traditional apps you may use on the web, like Figma, Google Docs, or ChatGPT. These applications all run on infrastructure “shared” by everyone that uses it — you and I both access Google Docs via the same url: https://docs.google.com/.
In contrast, personal web applications run on dedicated, personal infrastructure in your own personal cloud computer.
You can install your own copy of personal web apps, like you did years ago on your personal computer. This copy will continue to work, even if the developer removes the app. But unlike a few decades ago, the personal computer that runs these apps lives in the cloud, so your app is always available, when and where you need it to be.
The infrastructure we’ve built for personal web apps covers a gamut of additional features designed to put you in the driver’s seat — each app gets its own domain, and you can add your own custom domains. The data these apps store all lives in sandboxed “Collections”, which you can explore via GUIs and build against and extend with the Deta SDKs and HTTP API. You can also backup, wipe and export it all.
Developers around the world have already built hundreds of personal web apps for everything from bookmarking to running intelligent experiments to live streaming, which you can install into your own personal cloud computer today.
When we launched Space OS and Horizon, the only way to access your personal apps on Space was to open your browser, log in to Space, enter Horizon and open the app (or visit an app’s url directly, if you remember it). This is restrictive, requiring you to leave the context you’re in, and to go through a new one. We believe the powers of Space and Space apps should meet you closer to where you already are, wherever that may be. Internally, the team calls this “Space Everywhere”.
Today, we are taking the first step in direction “Space Everywhere” by automatically creating installable PWAs out of all of your Space apps (if they serve html, and are using Deta Auth / protected routes). This means you can install almost any application from Space on your desktop, tablet, or phone (if they support PWAs).
To install a Space app as a PWA, simply open it and click the install button and the app will install on your device.
Mobile: Android and iOS
While visiting a Space app from Chrome, open Chrome’s context menu and click “Install App” to add it to your Android device. On iOS in Safari, click the “share” icon next to the app’s URL and then select “Add to Home Screen”.
This introduction of PWAs also includes basic, read-only, offline support. If you visit a page in a Space-native PWA, and then revisit the same page when you are offline, the page will continue to work. Currently this does not include updating any data or syncing, but is planned via integration with the Deta Browser SDK.
Within the Space Runtime of each application on Space, we now include a “client runtime” for every application that uses html. If a Space application doesn’t already ship a manifest file, we add one, enabling it to be installed as a PWA. This manifest file includes a custom generated icon for the app, its name, description and some other information. Additionally, if the app doesn’t ship with a “service worker”, we add one to allow offline support. We’ve open sourced these aspects of the runtime; you can see what’s going on here.
Developers can currently opt-out of auto PWA-fication of Space apps via the
auto_pwa field in the Spacefile.
We see today’s release as a starting point not only for PWAs, but also in making Space apps more powerful, and bringing these powers to you, wherever you may already be. For developers it’s a chance to build web applications that can be used across devices and interfaces. This can be in the browser, on Horizon, or within and between apps and your “Space”.
We’re working on new interfaces in this direction, what we call “immersive interoperability”. If you’re a developer interested in building the next generation of web applications, make sure to apply for developer access and the alpha of SpaceKit 2 here.