This document describes the chronology of key events, that impacted on development of online web applications, that can work offline.
User cannot continue working with online applications without connection (he cannot read emails, see calendar and working on presentations without connection. At the same time, desktop application allows user to do it (read emails from cache, see calendar events from cache).
In case of losing the connection, web-applications depend on HTTP Cache, because those applications cannot ask for a new data.
At the January 2008, the world saw the HTML5 Working Draft that contains description of Offline Web applications. It descripbes cache of application and special file called manifest, that contains all rules required for caching application resources. In the document there are also descriptions of events that browser should fire in case of losing or getting internet connection.
Note published 30th of March 2008 adds more information about resource caching and also gives information about client-size SQL storage.
In 2008 the world meets hybrid web-applications. These application represent native shell that implemented on each platform and bunch of frontend resources. Developer needs to write only client-size resources and those will be packed into native shell, that was provided by framework. Missing features were implemented by native code for each platform and their APIs are accessible from JavaScript for developers.
- In September 2008 Rhodes Open Source framework was published
- In December 2008 Appcelerator Titanium was published
- In 2009 Phone Gap was published
Hybrid applications still work and popular.
In 2010 Firefox starts working on Open Web App - first attempt for creating tools and practices for developing and delivering web applications, that works offline.
Open Web Apps could be installed locally on devide, they have access to local storage and they also have access to API of device if priveleged was granted.
In 2012 Firefox Web Runtime Project was published. It allows users to install Open Web Apps on Windows, Mac, Android and Linux.
Applications was two types: hosted and packaged apps. Packaged application in an achive, that contains manifest file and all needed resources. Hosted app was just an website with manifest. While opening a website with Firefox browser, a special native banner with button to install the app is appear to user. The difference between hosted app and packaged that first one automatically updates when website was updated, but packaged apps usually have more priveleges for using device APIs. Also users were able to download the applications right from Firefox Marketplace, analogue of Google Play for Firefox applications.
In 2015 Web Runtime was closed.
In december 2013 W3C First Public Working Draft Manifest for web apps and bookmarks was published. This documement contains description of mafinest file. Now, it is json-structured file with application name, description, icons and etc. As you see, there are no caching rules in manifest.
Google (an Alex Russell, developer of Blink, in particular) gave description of Progressive Web App - web application, that could be installed on device from browser and such type of application also has access to native features of device.
Differences and major parts of Progressive Web App:
- Manifest file (specification Web App Manifest - W3C Working Draft 30 November 2016)
- Service Worker
Service Worker see more Service Workers: an Introduction - script, that runs in separated context from browser window, that responsible for handling background jobs, resouce caching and can also handle push-notifications.
Also, browser will show the user a native banner to install an application, but a few rules must be followed:
- Manifest file must exist and contains least required amount of information
- An app must work over HTTPS
- An app must contain Service Worker
- User must visit the app twice, but with at least 5 minutes between visits.