From MozillaWiki
Jump to: navigation, search

Session Title

Offline Web Applications

Session Leader

Robert O'Callahan


A huge weakness of Web applications today compared to regular desktop applications is that they only work when you have a connection to the Internet. Providing APIs to fix that would help drive the Web forward and also be a big win for Firefox if we could get app developers to use them.


  • What are the requirements?
    • Same URL as the online app?
    • Dynamic mode switching?
    •  ?
  • What APIs do we need to provide?
    • DOM Storage
    • Offline status detection?
    • How to make page content available offline? [1]
  • What UI is needed?
    • Bookmarks?
    • Can we get away without any UI at all?
  • Who can implement this?
  • How do we get web developers to use it?


UI model
go to, and it works.

Pin model

Recursive walk (transitive) Great for browsing offline, but many problems for offline apps.

archive across the wire link rel="offline"

User's decision

If they bookmark it, we should make it available offline

What about users who don't bookmark?


  • Persistent, robust "offline content" cache
  • All bookmarked pages go into offline content cache
    • <link rel="offline" href="..."> target pages linked from bookmarked page go into offline content cache
    • Revalidate/refetch offline contents periodically
  • Serve HTTP loads from offline content cache if main cache misses while in offline mode
  • When connection fails during a regular HTTP load, and we have offline content for the page, the error page offers "Put domain into offline mode" button.
  • Pages loaded from offer infobar with button to put domain back into online mode.

With this, plus using JAR files to snapshot content consistently for offline use, plus DOM Storage, plus DOM APIs to detect online/offline status, apps can do cool offline stuff.

  • Traverse page content (to some depth) to automatically get offline access to bookmarked static page collections?

Interested Attendees

Please add your name here if you're likely to attend this session, this will help prioritize sessions and minimize conflicts

  • Basil
  • Dria
  • Jay Goldman (Radiant Core)
  • Zach Lipton
  • ispiked
  • shaver
  • beltzner
  • Steven Garrity (if schedule allows)
  • Marcio Galli
  • bsmedberg
  • Mike Kaply
  • Javier Pedemonte
  • timeless
  • Brendan Eich
  • Myk
  • robcee
  • dmose
  • Rob Helmer
  • Julien Couvreur