Max Prin - SMX West 2018 - JavaScript & PWAs - What SEOs Need To Know

Max Prin
Max PrinGlobal Technical SEO Director at Condé Nast
#SMX #23A @maxxeight
What SEOs Need To Know
JavaScript &
Progressive
Web Apps (PWAs)
#SMX #23A @maxxeight
#SMX #23A @maxxeight
What’s a Web App?
#SMX #23A @maxxeight
Traditional Page Lifecycle Web Application Lifecycle
What’s a Web App?
Initial GET request
POST request
HTML
HTML
Initial GET request
AJAX call
HTML
(App shell)
JSON,
HTML,
etc.
#SMX #23A @maxxeight
What’s a Progressive Web App?
NativeApps
Web Apps
#SMX #23A @maxxeight
Reliable & Fast
App shell cached locally (on 1st load)
• Fast loading when offline or with slow
connection (on subsequent loads)
Mobile-friendly (responsive)
Secure (HTTPS)
What’s a Progressive Web App?
Engaging
Bookmark (icon) on
device’s homepage
Push notifications
#SMX #23A @maxxeight
What’s a Progressive Web App?
#SMX #23A @maxxeight
WHAT ABOUT ACCESSIBILITY
FOR SEARCH ENGINE BOTS?
#SMX #23A @maxxeight
What’s a Progressive Web App?
NativeApps
Web Apps
#SMX #23A @maxxeight
How Search Engines Typically Work
Render
#SMX #23A @maxxeight
Rendering On Google Search
Googlebot uses a web rendering service (WRS)
that is based on Chrome 41 (M41).
However:
 Some features and APIs, such as IndexedDB
or Service Workers, are disabled.
Google doesn’t install or use Service Workers
when crawling PWAs #SMXInsights
#SMX #23A @maxxeight
Issues for all crawlers
 Potentially a unique URL (or non-crawlable URLs)
 A unique HTML document (the “app shell”)
– Same <head> section (title, meta and link tags, etc.)
Issues for crawlers other than Google (and Baidu)
 Client-side rendering of content (HTML source code vs. DOM)
Web Apps (SPAs, PWAs)
#SMX #23A @maxxeight
 Crawling
– 1 unique “clean” URL per piece of content (and vice-versa)
Making Sure Search Engines Can Understand Your Pages
#SMX #23A @maxxeight
Crawling: Provide “Clean”/Crawlable URLs
Fragment Identifier: example.com/#url
– Not supported. Ignored. URL = example.com
Hashbang: example.com/#!url (pretty URL)
– Google and Bing will request:
example.com/?_escaped_fragment_=url (ugly URL)
– The escaped_fragment URL should return an HTML snapshot
Clean URL: example.com/url
– Leveraging the pushState function from the History API
– Must return a 200 status code when loaded directly
#SMX #23A @maxxeight
 Crawling
– 1 unique “clean” URL per piece of content (and vice-versa)
– onclick + window.location ≠ <a href=”link.html”>
Making Sure Search Engines Can Understand Your Pages
#SMX #23A @maxxeight
 Crawling
– 1 unique “clean” URL per piece of content (and vice-versa)
– onclick + window.location ≠ <a href=”link.html”>
 Rendering
– Don’t block JavaScript resources via robots.txt
Making Sure Search Engines Can Understand Your Pages
#SMX #23A @maxxeight
Rendering: Don’t Block Resources
#SMX #23A @maxxeight
 Crawling
– 1 unique “clean” URL per piece of content (and vice-versa)
– onclick + window.location ≠ <a href=”link.html”>
 Rendering
– Don’t block JavaScript resources via robots.txt
– Load content automatically, not based on user interaction (click,
mouseover, scroll)
Making Sure Search Engines Can Understand Your Pages
#SMX #23A @maxxeight
Rendering: Load Content Automatically
#SMX #23A @maxxeight
 Crawling
– 1 unique “clean” URL per piece of content (and vice-versa)
– onclick + window.location ≠ <a href=”link.html”>
 Rendering
– Don’t block JavaScript resources via robots.txt
– Load content automatically, not based on user interaction (click,
mouseover, scroll)
– For Bing and other crawlers: HTML snapshots
Making Sure Search Engines Can Understand Your Pages
#SMX #23A @maxxeight
 Crawling
– 1 unique “clean” URL per piece of content (and vice-versa)
– onclick + window.location ≠ <a href=”link.html”>
 Rendering
– Don’t block JavaScript resources via robots.txt
– Load content automatically, not based on user interaction (click,
mouseover, scroll)
– For Bing and other crawlers: HTML snapshots
 Indexing
– Avoid duplicate <head> section elements (title, meta description,
etc.)
Making Sure Search Engines Can Understand Your Pages
#SMX #23A @maxxeight
Main content gets
rendered here
Same title, description,
canonical tag, etc. for
every URL
#SMX #23A @maxxeight
Share these #SMXInsights on your social channels!
#SMXInsights
 SEO Best Practices For JavaScript
Sites
– Crawling: use clean URLs and proper <a href> elements
– Rendering: avoid blocking resources and loading content
upon user interaction
– Indexing: make sure meta data in <head> is not
duplicated across pages
#SMX #23A @maxxeight
Tools
#SMX #23A @maxxeight
#SMX #23A @maxxeight
#SMX #23A @maxxeight
#SMX #23A @maxxeight
Share these #SMXInsights on your social channels!
#SMXInsights
 The Rich Results Testing Tool is the only Google-
provided tool showing the rendered code (DOM)
#SMX #23A @maxxeight
#SMX #23A @maxxeight
SEO Crawlers
#SMX #23A @maxxeight
LEARN MORE: UPCOMING @SMX EVENTS
THANK YOU!
SEE YOU AT THE NEXT #SMX
1 of 31

Recommended

Max Prin - brightonSEO San Diego 2023 - Developing SEO Tools by
Max Prin - brightonSEO San Diego 2023 - Developing SEO ToolsMax Prin - brightonSEO San Diego 2023 - Developing SEO Tools
Max Prin - brightonSEO San Diego 2023 - Developing SEO ToolsMax Prin
40 views30 slides
Search Y 2020 - PWA + AMP by
Search Y 2020 - PWA + AMPSearch Y 2020 - PWA + AMP
Search Y 2020 - PWA + AMPMax Prin
127 views37 slides
PWA & AMP (PWAMP) - Making the Bot Experience as Good as the User Experience by
PWA & AMP (PWAMP) - Making the Bot Experience as Good as the User ExperiencePWA & AMP (PWAMP) - Making the Bot Experience as Good as the User Experience
PWA & AMP (PWAMP) - Making the Bot Experience as Good as the User ExperienceMax Prin
33K views33 slides
What's New with Schema and Structured Data - Max Prin - SMX Advanced 2019 by
What's New with Schema and Structured Data - Max Prin - SMX Advanced 2019What's New with Schema and Structured Data - Max Prin - SMX Advanced 2019
What's New with Schema and Structured Data - Max Prin - SMX Advanced 2019Max Prin
2.3K views30 slides
PWA + AMP: The Future of E-Commerce? Max Prin - BrightonSEO - Sept. 2018 by
PWA + AMP: The Future of E-Commerce? Max Prin - BrightonSEO - Sept. 2018PWA + AMP: The Future of E-Commerce? Max Prin - BrightonSEO - Sept. 2018
PWA + AMP: The Future of E-Commerce? Max Prin - BrightonSEO - Sept. 2018Max Prin
3.8K views36 slides
Max Prin - MnSearch Summit 2018 - SEO for the Current Mobile Landscape by
Max Prin - MnSearch Summit 2018 - SEO for the Current Mobile LandscapeMax Prin - MnSearch Summit 2018 - SEO for the Current Mobile Landscape
Max Prin - MnSearch Summit 2018 - SEO for the Current Mobile LandscapeMax Prin
593 views65 slides

More Related Content

Recently uploaded

Aurora Vietnam_Credential_2023_Eng_Update2811 by
Aurora Vietnam_Credential_2023_Eng_Update2811Aurora Vietnam_Credential_2023_Eng_Update2811
Aurora Vietnam_Credential_2023_Eng_Update2811Aurora Vietnam IMC Agency
22 views131 slides
Conversational AI and Platinum by
Conversational AI and PlatinumConversational AI and Platinum
Conversational AI and PlatinumJerryMaurer3
47 views13 slides

Recently uploaded(20)

Conversational AI and Platinum by JerryMaurer3
Conversational AI and PlatinumConversational AI and Platinum
Conversational AI and Platinum
JerryMaurer347 views
What's new at Ahrefs [end of 2023] by Ahrefs
What's new at Ahrefs [end of 2023]What's new at Ahrefs [end of 2023]
What's new at Ahrefs [end of 2023]
Ahrefs51 views

Featured

ChatGPT and the Future of Work - Clark Boyd by
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
20.3K views69 slides
Getting into the tech field. what next by
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
5K views22 slides
Google's Just Not That Into You: Understanding Core Updates & Search Intent by
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
5.8K views99 slides
How to have difficult conversations by
How to have difficult conversations How to have difficult conversations
How to have difficult conversations Rajiv Jayarajah, MAppComm, ACC
4.3K views19 slides
Introduction to Data Science by
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data ScienceChristy Abraham Joy
82.1K views51 slides
Time Management & Productivity - Best Practices by
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
169.6K views42 slides

Featured(20)

ChatGPT and the Future of Work - Clark Boyd by Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd20.3K views
Getting into the tech field. what next by Tessa Mero
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero5K views
Google's Just Not That Into You: Understanding Core Updates & Search Intent by Lily Ray
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray5.8K views
Time Management & Productivity - Best Practices by Vit Horky
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky169.6K views
The six step guide to practical project management by MindGenius
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius36.6K views
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright... by RachelPearson36
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson3612.6K views
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present... by Applitools
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools55.4K views
12 Ways to Increase Your Influence at Work by GetSmarter
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter401.6K views
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G... by DevGAMM Conference
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
DevGAMM Conference3.6K views
Barbie - Brand Strategy Presentation by Erica Santiago
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
Erica Santiago25.1K views
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well by Saba Software
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software25.2K views
Introduction to C Programming Language by Simplilearn
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn8.4K views
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr... by Palo Alto Software
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
Palo Alto Software88.3K views
9 Tips for a Work-free Vacation by Weekdone.com
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation
Weekdone.com7.2K views
How to Map Your Future by SlideShop.com
How to Map Your FutureHow to Map Your Future
How to Map Your Future
SlideShop.com275.1K views

Max Prin - SMX West 2018 - JavaScript & PWAs - What SEOs Need To Know

  • 1. #SMX #23A @maxxeight What SEOs Need To Know JavaScript & Progressive Web Apps (PWAs)
  • 4. #SMX #23A @maxxeight Traditional Page Lifecycle Web Application Lifecycle What’s a Web App? Initial GET request POST request HTML HTML Initial GET request AJAX call HTML (App shell) JSON, HTML, etc.
  • 5. #SMX #23A @maxxeight What’s a Progressive Web App? NativeApps Web Apps
  • 6. #SMX #23A @maxxeight Reliable & Fast App shell cached locally (on 1st load) • Fast loading when offline or with slow connection (on subsequent loads) Mobile-friendly (responsive) Secure (HTTPS) What’s a Progressive Web App? Engaging Bookmark (icon) on device’s homepage Push notifications
  • 7. #SMX #23A @maxxeight What’s a Progressive Web App?
  • 8. #SMX #23A @maxxeight WHAT ABOUT ACCESSIBILITY FOR SEARCH ENGINE BOTS?
  • 9. #SMX #23A @maxxeight What’s a Progressive Web App? NativeApps Web Apps
  • 10. #SMX #23A @maxxeight How Search Engines Typically Work Render
  • 11. #SMX #23A @maxxeight Rendering On Google Search Googlebot uses a web rendering service (WRS) that is based on Chrome 41 (M41). However:  Some features and APIs, such as IndexedDB or Service Workers, are disabled. Google doesn’t install or use Service Workers when crawling PWAs #SMXInsights
  • 12. #SMX #23A @maxxeight Issues for all crawlers  Potentially a unique URL (or non-crawlable URLs)  A unique HTML document (the “app shell”) – Same <head> section (title, meta and link tags, etc.) Issues for crawlers other than Google (and Baidu)  Client-side rendering of content (HTML source code vs. DOM) Web Apps (SPAs, PWAs)
  • 13. #SMX #23A @maxxeight  Crawling – 1 unique “clean” URL per piece of content (and vice-versa) Making Sure Search Engines Can Understand Your Pages
  • 14. #SMX #23A @maxxeight Crawling: Provide “Clean”/Crawlable URLs Fragment Identifier: example.com/#url – Not supported. Ignored. URL = example.com Hashbang: example.com/#!url (pretty URL) – Google and Bing will request: example.com/?_escaped_fragment_=url (ugly URL) – The escaped_fragment URL should return an HTML snapshot Clean URL: example.com/url – Leveraging the pushState function from the History API – Must return a 200 status code when loaded directly
  • 15. #SMX #23A @maxxeight  Crawling – 1 unique “clean” URL per piece of content (and vice-versa) – onclick + window.location ≠ <a href=”link.html”> Making Sure Search Engines Can Understand Your Pages
  • 16. #SMX #23A @maxxeight  Crawling – 1 unique “clean” URL per piece of content (and vice-versa) – onclick + window.location ≠ <a href=”link.html”>  Rendering – Don’t block JavaScript resources via robots.txt Making Sure Search Engines Can Understand Your Pages
  • 17. #SMX #23A @maxxeight Rendering: Don’t Block Resources
  • 18. #SMX #23A @maxxeight  Crawling – 1 unique “clean” URL per piece of content (and vice-versa) – onclick + window.location ≠ <a href=”link.html”>  Rendering – Don’t block JavaScript resources via robots.txt – Load content automatically, not based on user interaction (click, mouseover, scroll) Making Sure Search Engines Can Understand Your Pages
  • 19. #SMX #23A @maxxeight Rendering: Load Content Automatically
  • 20. #SMX #23A @maxxeight  Crawling – 1 unique “clean” URL per piece of content (and vice-versa) – onclick + window.location ≠ <a href=”link.html”>  Rendering – Don’t block JavaScript resources via robots.txt – Load content automatically, not based on user interaction (click, mouseover, scroll) – For Bing and other crawlers: HTML snapshots Making Sure Search Engines Can Understand Your Pages
  • 21. #SMX #23A @maxxeight  Crawling – 1 unique “clean” URL per piece of content (and vice-versa) – onclick + window.location ≠ <a href=”link.html”>  Rendering – Don’t block JavaScript resources via robots.txt – Load content automatically, not based on user interaction (click, mouseover, scroll) – For Bing and other crawlers: HTML snapshots  Indexing – Avoid duplicate <head> section elements (title, meta description, etc.) Making Sure Search Engines Can Understand Your Pages
  • 22. #SMX #23A @maxxeight Main content gets rendered here Same title, description, canonical tag, etc. for every URL
  • 23. #SMX #23A @maxxeight Share these #SMXInsights on your social channels! #SMXInsights  SEO Best Practices For JavaScript Sites – Crawling: use clean URLs and proper <a href> elements – Rendering: avoid blocking resources and loading content upon user interaction – Indexing: make sure meta data in <head> is not duplicated across pages
  • 28. #SMX #23A @maxxeight Share these #SMXInsights on your social channels! #SMXInsights  The Rich Results Testing Tool is the only Google- provided tool showing the rendered code (DOM)
  • 31. #SMX #23A @maxxeight LEARN MORE: UPCOMING @SMX EVENTS THANK YOU! SEE YOU AT THE NEXT #SMX

Editor's Notes

  1. In computing, a web application or web app is a client–server computer program in which the client (including the user interface and client-side logic) runs in a web browser. Common web applications include webmail, online retail sales, online auctions, wikis, instant messaging services and many other functions. https://en.wikipedia.org/wiki/Web_application Any website can be a web app. But in general, a web app provides some type of functionality/interactive experience such as ordering something online. “In general” sites with static content such as corporate websites and news publishers are not web apps. This changed with the rise of PWAs.
  2. Single-Page Applications (SPAs) are Web apps that load a single HTML page and dynamically update that page as the user interacts with the app. SPAs use AJAX and HTML5 to create fluid and responsive Web apps, without constant page reloads. However, this means much of the work happens on the client side, in JavaScript. https://msdn.microsoft.com/en-us/magazine/dn463786.aspx
  3. Why is the reach of web apps higher? Search engines (vs. app stores).
  4. No need to be indexed
  5. “rendering” is the keyword. Google is, since a few years now, rendering web pages, after crawling and before indexing, in order to understand them better.
  6. https://developers.google.com/search/docs/guides/rendering
  7. Fragment identifier: this URL structure is already a concept in the web and relates to deep linking into content on a particular page (“jump links”). Can’t be accessed/crawled/indexed. Hashbang: Used with the “old” AJAX crawling scheme. Not recommended, more complex to implement. Clean URL using History API’s pushState function. AJAX-crawling scheme Google has deprecated this recommendation in October 2015 Won’t be supported by ~Q2 2018
  8. Mega menu – mouseover + ajax Tabs/accordeons – click + ajax Load more/infinite scroll - click/scroll + ajax
  9. But it’s still a better source of info than the cache. It fetches pages from a Google IP (it makes a difference sometimes for websites blocking “Googlebot” user-agent if not coming from a known Google IP) It leverages Googlebot’s JavaScript rendering engine which is likely to be more advanced than PhantomJS.
  10. But it’s still a better source of info than the cache. It fetches pages from a Google IP (it makes a difference sometimes for websites blocking “Googlebot” user-agent if not coming from a known Google IP) It leverages Googlebot’s JavaScript rendering engine which is likely to be more advanced than PhantomJS.
  11. Botify ScreamingFrog Sitebulb