Why Fablehenge is a Progressive Web App
The only real “complaint” we’ve received about Fablehenge is a deliberate design decision: Fablehenge is developed as a progressive web application. We’ve realized that a lot of users don’t know what this means, so we want to clarify the details and our rationale.
What is a Progressive Web Application?
A progressive web application, or PWA as the tech folk like to call it, is kind of a hybrid between a native application and a traditional web page. It has all the benefits of both and none of the drawbacks.
You can access Fablehenge from any web browser while connected to the Internet and it will behave like any other web page. Indeed, if this is all you do, you probably won’t notice that it is much different from other web pages, other than being quite a bit faster.
However, PWAs go much further than traditional web pages. For one thing, you can unplug your router and visit my.fablehenge.com (either directly or through a bookmark) again. It will continue to work, without any Internet connection at all. When you first load Fablehenge, the progressive web app stores all the necessary software in a special cache the browser manages for us. That means the next time you access the page, it can load the entire application from the cache without making any requests to the Internet. This has two benefits:
- It loads faster next time because it doesn’t have to download anything.
- It loads even when you are not connected to the Internet.
In addition, we store all of your data in a database that is managed by the browser. This means we do not need to request any information from the cloud in order for you to work on your book. This means your data is available instantly without having to download anything, and that it can be saved instantly without having to wait for any forms to submit or data to upload to our services.
When you are connected to the Internet while logged into Fablehenge as a subscriber, we automatically sync all that data to the cloud in the background, but only when your connection is idle. We also automatically sync it to any other connected browsers, so you see the same view of Fablehenge no matter where you log in from.
The one drawback of this over other web apps is that when you first log in, we have to sync all your data from other browsers. This can take up to a minute, but we feel that front-loading all that waiting is better than having “please wait while we upload your book” messages interrupting your flow every time you change something.
In addition to making the platform more pleasant for our authors to use, this separation of storage and cloud makes the platform more pleasant for us to develop.
Progressive Web Applications can be Installed
As described in our documentation Fablehenge can be installed onto your computer a tablet, just like any other native application. You can load it from your Start Menu, Dock, Spotlight, Desktop, or Home Screen (depending which OS you use). After loading, it opens in a native window without the browser’s address bar and toolbar taking up space:
The installed app uses a combination of browser and native technology to render the user interface as efficiently and quickly as possible. But it uses the same storage and syncing mechanisms we use in the browser, so you get the same speed and cloud sync activity from a native app experience.
The primary benefit of a Progressive Web Application over a Native app is that it can be updated seamlessly and silently. For our authors, this means you get the latest features immediately with no extra work on your part. For us as developers, it means we can develop those features more efficiently, as we don’t have to worry that old versions of the application might be connecting to our cloud with unexpectedly outdated data formats.
Another benefit is that it allows Jen and I to create and maintain a single application by ourselves. We don’t have to hire separate teams for Android, IOs, ChromeOS, Windows, and MacOs development, something we absolutely cannot afford to do. We are also able to support less well-known platforms that would otherwise be completely ignored.
The last benefit over native apps is rather political. Progressive Web Applications use open standards that are not controlled by any one corporation. You may have seen recent news about clashes between Apple and large companies like Facebook, EA, and Patreon, due to recent decisions Apple has made about their app store. In the past, similar flareups have happened because Google or Microsoft have tried tried to turn their market dominance into an absolute monopoly.
Large companies like that have the luxury of fighting each other over their arbitrary rules, but small companies just have to play by the big company’s rules, or not at all. We aren’t using the Progressive Web App to make any kind of political statement. It’s just that it would be impossible for us to build Fablehenge any other way and still eke out a living from supporting the product.