I'd like to echo this, specifically focusing on AJAX. It's not enough to be offline-friendly if your requests don't themselves retry or work well when internet is spotty. A problem I've often encountered in online-only scenarios is when AJAX calls fail. How do you ultimately retry them? At a certain point, you need the same infrastructure you'd be building for an offline app to cache and queue requests, as well as present sensible non-success responses. So, just as mobile first solved problems for both tablets and focusing a design, offline first can solve problems with error messages, caching to speed up online responses and AJAX retries.