In 2016, mobile internet usage exceeded desktop for the first time! With over 50% of users on mobile, is your web app optimized for them?
Let’s learn about Accelerated Mobile Pages, how AMP address mobile user challenges and build a valid AMP app together!
http://nodevember.org/speaker/Lisa%20Huang
1. Instant Mobile Web: An AMP Primer
Lisa Huang
Nov 2017
Slides: bit.ly/nodevember
Twitter/Github: @lisaychuang
2. INSTANT MOBILE WEB: AN AMP PRIMER
Hello Nodevember!
▸ Financial analyst > Digital Marketer > Fullstack
Engineer
▸ Flatiron School alumnae
▸ Taiwan + Singapore + South Africa + USA
▸ Basic Android phone & buying data by MBs
▸ Discovered AMP project through a SEO course
on FrontEndMasters.com
3. INSTANT MOBILE WEB: AN AMP PRIMER
Shift Towards Mobile
▸ Oct 2016 - Mobile page views has
overtaken Desktop for the first time
globally
▸ March 2017 - Android device page
views has overtaken Windows
▸ Momentum in this direction is only
growing!
MOBILE: 48.3%
DESKTOP: 46.9%
45.6%
50%50%
WINDOWS: 38.8%
ANDROID: 39.2% 40.3%
50%
37.8%
http://gs.statcounter.com/os-market-share/desktop-mobile/worldwide/#monthly-201606-201711
http://gs.statcounter.com/platform-market-share/desktop-mobile-tablet/worldwide/#monthly-201606-201711
4. INSTANT MOBILE WEB: AN AMP PRIMER
Performance === 💰💸
➡ wpostats.com ⬅
▸ Google: +800ms page load time = -$1M daily revenue loss
▸ Financial Times: +3000ms load time = 7.2% drop in user engagement
▸ Walmart: -1000ms load time = +2% increase in conversion
▸ AliExpress: -36% load time = +10.5% increase in orders
5. INSTANT MOBILE WEB: AN AMP PRIMER
▸ AMP is an open source framework to build really fast
mobile pages
▸ Create instantly loading mobile pages
▸ 4 Billion+ pages, 25million+ domains, 100+ languages
▸ May 2017: Google mobile search AMP Top Stories
Carousel global rollout
https://www.ampproject.org/
https://techcrunch.com/2016/02/24/google-now-highlights-amp-pages-in-its-mobile-search-results/
6. INSTANT MOBILE WEB: AN AMP PRIMER
Content Platforms that enable AMP
https://www.ampproject.org/support/faqs/supported-platforms
▸ Facebook
▸ Twitter
▸ WordPress
▸ Google
▸ Medium
▸ Pinterest
▸ LinkedIn
▸ Reddit
▸ Nuzzel
▸ Hatena
▸ Squarespace
▸ Ghost
▸ Drupal
▸ Fastcommerce
▸ Canvas
https://www.ampproject.org/latest/blog/amp-two-years-of-user-first-webpages/
7. INSTANT MOBILE WEB: AN AMP PRIMER
Content Platforms AMP Works On
https://www.ampproject.org/support/faqs/supported-platforms
▸ Facebook
▸ Twitter
▸ WordPress
▸ Google
▸ Medium
▸ Pinterest
▸ LinkedIn
▸ Reddit
▸ Nuzzel
▸ Hatena
▸ Squarespace
▸ Ghost
▸ Drupal
▸ Fastcommerce
▸ Canvas
https://www.ampproject.org/latest/blog/amp-two-years-of-user-first-webpages/
8. INSTANT MOBILE WEB: AN AMP PRIMER
Content Platforms AMP Works On
https://www.ampproject.org/support/faqs/supported-platforms
▸ Facebook
▸ Twitter
▸ WordPress
▸ Google
▸ Medium
▸ Pinterest
▸ LinkedIn
▸ Reddit
▸ Nuzzel
▸ Hatena
▸ Squarespace
▸ Ghost
▸ Drupal
▸ Fastcommerce
▸ Canvas
https://www.ampproject.org/latest/blog/amp-two-years-of-user-first-webpages/
9. INSTANT MOBILE WEB: AN AMP PRIMER
Who is publishing with AMP Today?
https://www.ampproject.org/latest/blog/amp-two-years-of-user-first-webpages/
10. INSTANT MOBILE WEB: AN AMP PRIMER
Google I/O May 2017 announcements
▸ Before: focused on static content
▸ Now: interactive content, moving towards an
interactive framework
▸ Future: ecommerce, highly interactive
experiences
▸ AMP to PWA!
https://www.ampproject.org/docs/guides/pwa-amp
11. INSTANT MOBILE WEB: AN AMP PRIMER
Mobile Web Challenges
📱 Most devices are not powerful
📡 Cellular networks make connections slowly
' JS is usually doing all the heavy lifting
12. INSTANT MOBILE WEB: AN AMP PRIMER
📱 Challenge #1: Most devices are not powerful
13. INSTANT MOBILE WEB: AN AMP PRIMER
▸ Complex CSS animations
▸ Video viewing
▸ Data download & processing
▸ Background Processes (Web Worker)
▸ Push notifications
▸ GPS
▸ Sensors: accelerometer, gyroscope,
magnetometer requests
https://developer.apple.com/library/content/documentation/Perf
🐢 Underpowered Devices - What’s slow?
14. INSTANT MOBILE WEB: AN AMP PRIMER
Case Study: CSS Animations
▸ Animate the ball by iteratively setting the left
position
▸ Triggers re-layout calculations, “janky” animation
▸ This experience is never desirable!
15. INSTANT MOBILE WEB: AN AMP PRIMER
Case Study: CSS Animations
▸ Animate the ball using transform:
translateX()
▸ GPU optimized and does not trigger a re-layout
▸ Only re-composition is required
16. INSTANT MOBILE WEB: AN AMP PRIMER
Underpowered Devices - AMP approach: Subset CSS
▸ Only subset of CSS allowed
▸ Max. 50KB total CSS
▸ Animation: only GPU-accelerated properties allowed
▸ Use transform and opacity changes
https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count
➡ https://csstriggers.com/ ⬅
17. INSTANT MOBILE WEB: AN AMP PRIMER
Underpowered Devices: AMP custom components
▸ Pre-calculate initial viewport layout with <amp-img>
▸ specified fixed height & width
▸ includes placeholder, and a fallback
https://www.ampproject.org/docs/
18. INSTANT MOBILE WEB: AN AMP PRIMER
📡 Challenge #2: Cellular networks make connections slowly
▸ Slow to initiate network connection
▸ Mobile network requests are extra expensive, and involve extra latency
▸ 2G: 300 - 1000ms, 3G: 100 - 300ms extra, 4G: 10 - 100ms extra
https://developers.google.com/speed/docs/insights/mobile
19. INSTANT MOBILE WEB: AN AMP PRIMER
Cellular: What’s slow?
📱
🖥
50% of pages involve > 76 requests
20. Tested From: Dulles, VA, “Good 2G speed”
Chrome - Emulated Motorola G (Gen 4)📱 webpagetest.org
Case Study: Adobe Typekit Blog
21. INSTANT MOBILE WEB: AN AMP PRIMER
AMP approach: Inlined CSS
▸ Inlined CSS stylesheet!
▸ When HTML lands —> Mobile page is ready for basic use!
https://medium.com/@cramforce/why-amp-html-does-not-take-full-advantage-of-the-preload-scanner-7e7f788aa94e
HTML
CSS
JSSingle Page App
🌟
HTML CSS
JS
AMP Html
🌟
<style amp-custom="">##...#</style>
22. INSTANT MOBILE WEB: AN AMP PRIMER
AMP approach: Prioritize resource loading
▸ Control network requests to prioritize resources effectively
▸ Prefetches and lazy-loads resources:
▸ Resources are prefetched as early as possible (⬇ the fold), but...
▸ lazy-loaded as late as possible (CPU is only used when resources are
actually shown to users)
https://medium.com/@cramforce/why-amp-html-does-not-take-full-advantage-of-the-preload-scanner-7e7f788aa94e
23. INSTANT MOBILE WEB: AN AMP PRIMER
AMP approach: AMP Cache
▸ AMP pages will be cached
when they’re discovered (or
updates are found)
▸ This saves the overhead of DNS
resolution & SSL handshake
https://developers.google.com/amp/cache/overview
https://blog.cloudflare.com/accelerated-mobile/
24. INSTANT MOBILE WEB: AN AMP PRIMER
' Challenge #3: JS doing all the heavy lifting
25. INSTANT MOBILE WEB: AN AMP PRIMER
Heavy JS: What’s slow?
▸ Synchronous JS pauses HTML parsing, it resumes once download completes
▸ Parsing the downloaded JS takes time (related to code size & other factors)
▸ ⚠ Server-side rendering aims to help, but is incredibly complex to get right
https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/FundamentalConcepts.html
26. INSTANT MOBILE WEB: AN AMP PRIMER
AMP approach: Async JS loading & iFrames
▸ Async JS loading keeps JS off the critical path
▸ Sandbox 3rd party JS in cross-domain iframe (also async)
▸ Block form submission and script execution (eval)
▸ Cannot trigger multiple style re-calcuation
🏖📦<script async src="">
27. INSTANT MOBILE WEB: AN AMP PRIMER
Recap: Mobile web challenges
📱 Most devices are not powerful
📡 Cellular networks make connections slowly
' JS is usually doing all the heavy lifting
28. INSTANT MOBILE WEB: AN AMP PRIMER
To AMP or not to AMP
▸ Feel locked into Google ecosystem
▸ Direct traffic vs Google cache
https://www.google.com/amp/s/
amp.theguardian.com/world/2017/oct/05/
nobel-peace-prize-2017-who-are-the-likely-
nominees
▸ Limited analytics data
▸ AMP analytics API supports
34 analytics platforms!
https://www.ampproject.org/docs/guides/analytics/analytics-vendors
29. INSTANT MOBILE WEB: AN AMP PRIMER
Live code!
▸ AMP validator plugin
1. Building the AMP boilerplate code
▸ “Hello AMP!”
2. Add embedded media
▸ <amp-youtube>, <amp-image-lightbox>
3. Add user interactivity & remote data:
▸ <amp-sidebar>, <amp-social-share>,
<amp-list>, <amp-mustache>
http://bit.ly/amp-corgi-repo
41. LIVE DEMO
<amp-list>
▸ fetches dynamic content from a CORS JSON endpoint
▸ XHR batching: single JSON data request as data source
▸ renders response (data) in a specified template
▸ supports a placeholder and/or fallback
▸ AMP runtime to update height / show overflow element
https://www.ampproject.org/docs/reference/components/amp-list
42. <amp-mustache>
▸ mustache is a logic-less template syntax
▸ NO if statements, else clauses, for loops etc
▸ Expands {{ }} tags using values provided in a hash or object
https://www.ampproject.org/docs/reference/components/amp-mustache
{
"items": [
{
"title": "AMP By Example",
"url": "https://ampbyexample.com/"
},
{
"title": "AMPproject.org",
"url": "https://www.ampproject.org/"
}
]
}
JSON OBJECT
<template type="amp-mustache">
Hello {{title}}!
</template>
AMP-MUSTACHE TEMPLATE
<div role="list">
<div role="listitem">Hello AMP By Example</div>
<div role="listitem">Hello AMPproject.org</div>
</div>
HTML
43. INSTANT MOBILE WEB: AN AMP PRIMER
AMP + Progressive Web Apps
https://www.ampproject.org/docs/guides/pwa-amp/amp-to-pwa
44. INSTANT MOBILE WEB: AN AMP PRIMER
AMP with PWA features
▸ Add a Web App Manifest
for users to install to home
screen
▸ Use Service Worker to
enable offline access
▸ Inject custom JS scripts
that’s not AMP-
compatible
https://www.ampproject.org/docs/guides/pwa-amp/amp-as-pwa#install-a-service-worker-to-enable-offline-access
45. INSTANT MOBILE WEB: AN AMP PRIMER
AMP as entry point into PWA
<amp-install-serviceworker>
▸ Installs Service Worker from
origin
▸ Let Service Worker intercept
navigation request, and respond
with a PWA
▸ Shell URL rewriting
https://www.ampproject.org/docs/guides/pwa-amp#amp-pages-with-pwa-features
46. INSTANT MOBILE WEB: AN AMP PRIMER
AMP as data source for PWA
▸ Build AMP pages as modular units 📦
▸ AMP as content source backend
▸ AMP HTML powers both AMP and
PWA experience
https://www.ampproject.org/docs/guides/pwa-amp/amp-in-pwa
47. INSTANT MOBILE WEB: AN AMP PRIMER
🎉 Thank you! 🎉
Questions? 🤔
Twitter & Github: @lisaychuang
Email: lisa.yc.huang@gmail.com