L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfices ?

1#seocamp
Demystifying JavaScript & SEO
2#seocamp
Demystifying JavaScript & SEO
Shedding light on common misconceptions in the JavaScript for SEO space
Robin Eisenberg
Engineering Manager @botify.com
- Full-Stack Developer, Architect - Web and Mobile solutions
- Currently Manager of the Botify Engineering Team
Dimitri Brunel
Search Data Strategist @botify.com
- SEO managers in Marketing Agencies & Pure Players (previously)
- Currently part of BOTIFY Search Data Strategist team
3#seocamp
▪ What is JavaScript? Why is it used?
▪ Why is JavaScript important for SEO?
▪ How does JavaScript affect the website ?
▪ What type of takeaways ?
Conference Agenda
4#seocamp
What is JavaScript?
Why is there a need for JavaScript in the first place ?
● Tells the browser what to display
● Tree of nodes, described by tags
● Nodes can contain:
○ Text
○ Metadata
○ Links
○ (Assets) - not relevant
○ (Style) - not relevant
● Uses HTML to tell the browser what to display
● Allows a developer to dictate (‘Script’) a browser’s
behaviour after receiving a Web Page
● Can make extra requests
● Can react to user interaction (clicks, mouse movement,
keyboard, etc…)
● Can store information on the user’s computer
● Can modify the HTML
HTML is the browser’s display language JavaScript is the browser’s behaviour language
5#seocamp
JavaScript as seen by Browsers
How do browsers handle JavaScript?
1) Browser asks Server what it should do
2) Server responds with HTML + JavaScript
(“display this, and do that”)
3) Browser reads and displays HTML
4) Browser executes the JavaScript
• Multiple browser/server communication
• Browser modifies what it displays through JavaScript
• User-interaction can be handled by the browser, without
server communication
6#seocamp
JS Rendering #1: product shelves
How does JavaScript fetch and render affect this page ?
7#seocamp
Result #1: product tiles now rendered with JS
How does JavaScript fetch and render affect this page ?
Product Tiles now rendered
1. In-page contents are now accessible
2. New internal Outlinks are now crawlable
8#seocamp
JS Rendering #2: product page contents
How does JavaScript fetch and render affect this page ?
9#seocamp
Result #2: contents are now inserted with JS
How does JavaScript fetch and render affect this page ?
Contents are now rendered
1. FULL in-page contents are now accessible
2. A few new internal Outlinks are now crawlable
10#seocamp
History of JavaScript
How has JavaScript’s use on Web evolved?
Way back in time:
■ First we used JS just for tracking (such as web analytics)
■ Then we used JS for dynamic content, and now we use JS for all content
Back in time for the SEOs: we all had a long and hard relationship with JS and Google...
■ For some SEOs, JS was almost .onclick functions, whereas async functions with JS are now everywhere.
■ We also knew the AJAX fragments, and !Escape_fragment before it was deprecated by Google
■ We also knew the HTML5 history featured and .pushState() method, compliant for googlebot.
Back to mid-2016:
● We now know that legacy JavaScript VS modern JavaScript make differences
● We now know that JavaScript Language Features make huge differences for Googlebot
Now:
● The JavaScript Language (ECMAScript) is more normalized and less derivative
● Google communicates more on what works and what doesn’t
11#seocamp
Why is JavaScript inevitable?
Why is the web moving towards more and more JavaScript on websites?
● JavaScript allows for client-side interactions
● JavaScript allows for client-side processing
● JavaScript offloads processing costs to clients
● JavaScript allows websites to access native browser features (localization, notification, media, etc…)
● PO/PMs prefer JavaScript because it delivers the most interactive product
● Developers prefer JavaScript because it is much easier to use than HTML for complex websites
● Infrastructure prefers JavaScript because it offloads processing to the client’s computers
● Finance prefers JavaScript because it is cheaper
12#seocamp
How is JavaScript used on the Web?
“Some JavaScript” websites:
■ Serve a pre-filled HTML page
■ Augment the page using JavaScript
■ Examples:
○ Comments
○ Personalized content
○ Recommendation systems
○ Nav. such as Faceted Navigations
○ Filtering such as Asc./Desc. sortings
“Full JavaScript” websites:
● Smart blacklisting
● Serve an empty HTML page
● Solely use JavaScript to insert HTML elements
● Examples:
○ Single-Page-Apps
○ PWAs
○ AngularJS, ReactJS, Ember, VueJS, Polymer
JavaScript in the wild
13#seocamp
Is JavaScript a problem for my SEO?
“My Dev team wants to use React, what do I do ?”
Absolutely not.
● Bots currently execute JavaScript on pages
● JavaScript can be written to make sure it is crawlable
● Most JavaScript non-compliance can be automatically fixed!
If your development team still produces non-compliant JavaScript:
● Explain that they can fix non-compliance automatically
● All JavaScript frameworks offer a SSR fallback
● If all else fails, pre-rendering can be used (but expensive)
14#seocamp
SEO managers are always worried about JS frameworks (= seo-pocalypse).
This problem is easily solved with good JS code hygiene.
A JS Checklist could be:
■ JavaScript for SEO compliance ⇔ JS is Crawl-compliant
■ Fetch and Render via GSC ⇔ rendering seems OK or
KO ?
■ A test URL should be indexed ⇔ (site:)
■ A test CONTENT should be indexed ⇔ (site:) “search you unique
sentence”
■ A test LINKS should be found ⇔ (search your secret children
inlink)
■ A */react/test/* should be crawled ⇔ (dig into LOG files!)
Is it enough? No. You need to check standard SEO indicators and make sure
Frameworks: crawling & indexing experiments
For any JS framework, make experiments to understand what Googlebot is able to fetch > render > index
15#seocamp
What is JavaScript crawling ?
How do Bots see your JavaScript website ?
16#seocamp
Crawling: JavaScript as seen by Crawlers
How do crawlers handle JavaScript?
1) Crawler asks Server what it should do (pretending it’s a
browser)
2) Server responds with HTML + JavaScript (“display this, and
do that”)
3) Crawler launches Browser, feeds HTML and JavaScript
4) Browser executes the JavaScript
5) JavaScript modifies the HTML
6) Browser sends modified HTML back to Crawler
7) Crawler reads and analyzes HTML
8) Crawler finds links
9) Crawler goes back to (1) for every link found
In step (5) and (6), the JavaScript can make requests, setup user interaction triggers,
and modify the page.
This results in modified HTML that has been ‘augmented’ by the execution of the page’s
JavaScript. The modified HTML is what is fed back to the crawler for analysis.
17#seocamp
● Crawlers can and do crawl JavaScript (execute JavaScript on pages)
● JavaScript crawling is a very expensive operation - optimize your render budget
○ optimize render time
○ optimize fetch time
○ smart resource blacklists in robots.txt
■ Gotcha: Some websites may have their JS scripts in their robots.txt (for historical reasons)
■ The same SEO techniques apply:
○ Crawl budgets apply
○ Internals / External Linking
○ Content & Perceived Quality
○ Page similarity & Uniqueness studies apply
Crawling: Key Takeaways
18#seocamp
JS Rendering: compare without JS / with JS
How does JavaScript fetch and render affect a scope of page ? Impact on pages inventory and linking
Without JS
With JS
19#seocamp
JS Rendering: full JavaScript website
How does JavaScript fetch and render affect this page ?
JavaScript enabled
JavaScript disabled
20#seocamp
Your JavaScript (best practices)
How to handle your site’s JavaScript SEO
What your Dev Team needs to know:
● Target Chromium 41 or earlier
● Transpile ES6 to ES5
● Provide Polyfills
● Optimize fetch time
● Optimize render time
If they can’t provide these points, turn to Server-
Side-Rendering (SSR).
If they can’t provide SSR, turn to Pre-Rendering.
Cost should come out of Tech budget.
What your SEO Tools need to do:
■ Smart blacklisting
■ Blacklist specific resources
■ Cache resources (for at-scale crawls)
■ Analyze fetch time (avg. nb of resources)
■ Analyze render time (delay to render)
■ Detail resources (allowed, failed, from
cache)
21#seocamp
How should you analyze your
JavaScript website ?
How to level-up your JavaScript SEO assessment ?
22#seocamp
JS Rendering #1: faceted navigation
How does JavaScript fetch and render affect this page ?
23#seocamp
Result #1: faceted nav links now rendered with JS
How does JavaScript fetch and render affect this page ?
Faceted navigation links
now rendered
1. new Links available (faceted navigation)
2. new HTML blocks (recommendation system)
24#seocamp
JS Rendering #2: ongoing news publishing
How does JavaScript fetch and render affect this page ?
25#seocamp
Result #2: infinite scroll now inserted with JS
How does JavaScript fetch and render affect this page ?
Lazy Loading now rendered
● infinite scrolling
● async article displaying
1. Many new links
2. Many new contents
3. that is new page states (from 1~n articles)
27#seocamp
▪ The Contents can be cached, but not indexed
▪ (De)Activating JS will display different results ⇔ not 100%
reliable
▪ GSC fetch and render has no debug mode ⇔ it explains
nothing
From these current takeaways
▪ Google cache & Google index could be separated ⇔ unclear
▪ Commitment on crawling / indexing stay unclear ⇔ smthg is missing
▪ People approach is weak (checking cache index) ⇔ rather than JS code
In fact a crucial clue was still missing to understand GoogleBot - their
Remaining problem are: GG cache vs GG Index
You may see more or less differences… and this is not the right thing to assess !
28#seocamp
▪ Do not trust JS frameworks ⇔ build your own tests and do transpilling
▪ Do not trust GSC ⇔ choose a SEO tool with fetch &
render tool
▪ Do not trust Google Cache ⇔ not 100% reliable for the moment
Your existing SEO analysis techniques still apply.
Some must be modified to account for JavaScript:
- Fetch and Render time
- Resource optimization
- Page and resources sizes
So keep in mind all of these guidelines
What you (seo manager) have to tell to your dev team
29#seocamp
Full-JS website
Focus on all aspects of load time (initial HTML + JS rendering)
30#seocamp
Full-JS website
Understanding the JS load time (initial HTML + JS rendering + number of executed resources)
31#seocamp
Compare without JS / with JS:
Understanding the Impact on Content, on Internal Linking, etc.
Without JS
Avg. number of words (with the templates) Avg. number of words (excluding the templates)
Avg. number of words (with the templates) Avg. number of words (excluding the templates)
▪ Focus on the important (top tail) pages: those that generate most traffic on the website.
▪ Further analysis: does additional content enhance content uniqueness in pages?
▪ Further analysis: does additional links improve crawl ratio on priority pages?
With JS
34#seocamp
■ Javascript assessment on websites has become mandatory - there is no ignoring it.
■ It is new territory for SEO managers.
■ You need the right tools to analyze the JavaScript indicators in your website.
Conclusion: Key Takeaways
● Javascript is perfectly crawlable in the right circumstances.
● It is not an indicator of bad SEO.
● It does not change key SEO factors used during ranking.
■ JavaScript SEO analysis requires working closely with the website's technical team.
■ Most -if not all- compliance issues can be fixed easily and automatically.
■ It will soon be an important differentiator for rankings.
1.
3.
2.
35#seocamp
● Rendering on Google Search ⇔ https://developers.google.com/search/docs/guides/rendering
● Ilya Grigorik / Engineer @google - https://twitter.com/igrigorik
Web performance engineer, co-chair of W3C Webperf WG
● Eric Bidelman / Engineer @google - https://twitter.com/ebidel
Working on headless Chrome, Lighthouse, dev tools.
● Sam Li / Engineer @googlechrome @polymer - https://twitter.com/samdotli
● Great Polyfillers ⇔ already vetted set of polyfills that you can trust, such as those provided by ES5-Shim and ES6-Shim.
● Great Transpilers ⇔ Babel (formerly 6to5): Transpiles ES6+ into ES5 // Traceur: Transpiles ES6, ES7, and beyond into ES5
● Can I Use… / @caniuse - https://twitter.com/caniuse
Compatibility tables for features in HTML5, CSS3, SVG and other upcoming web technologies
● Bartoz Garalewicz / Head of SEO @ Elephate - https://twitter.com/bart_goralewicz
Tomek Rudzki / R&D Specialist @ Elephate - https://twitter.com/TomekRudzki
Very warm thanks and People to follow
Take time to read their articles
36#seocamp
Thank you
for your attention Get in touch! hello@botify.com
37#seocamp
Question Mug
● Technical questions?
● SEO questions?
● Google questions?
38#seocamp
Addendum: Special note for your JS developers
Script to detect the HTML/CSS/JS features used by a site and x-reference them w/ the features supported by Google Search bot
https://twitter.com/ebidel/status/9733064
63081738240
39#seocamp
Addendum: Special note from Ilya Grigorik
Once you will understand what ECMAScript is meaning, everything will start to become step by step crystal clear, to talk with you dev team !
Supported by Chrome 41
Features are functions that
regular browsers can use.
If a ES5 Features is working with
Chrome 41, it should also work
for Googlebot.
CanIUSe.com assess which
functions is fully compliant with
Chrome version 41 (googlebot)
Unsupported Chrome 41
Chrome 41 has a debug mode
1/ Click on INSPECT
2/ Click on CONSOLE
3/ if you JS errors, go to see
your Front-End JS dev/
Extra Browser fallback
A polyfill is a browser fallback,
made in JavaScript, that allows
functionality you expect to work
in modern browsers to work in
older browsers, e.g., to support
canvas (an HTML5 feature) in
older browsers.
1 of 36

Recommended

Make your website load really really fast - seo campus 2017 by
Make your website load really really fast  - seo campus 2017Make your website load really really fast  - seo campus 2017
Make your website load really really fast - seo campus 2017SEO Camp Association
3.5K views70 slides
Javascript & SEO introduction by
Javascript & SEO introductionJavascript & SEO introduction
Javascript & SEO introductionEdd Wilson
506 views55 slides
Using Page Builders For Fun And Profit by
Using Page Builders For Fun And ProfitUsing Page Builders For Fun And Profit
Using Page Builders For Fun And ProfitRicky Blacker
72 views52 slides
Page Speed by
Page SpeedPage Speed
Page SpeedJon Henshaw
4.8K views48 slides
WordPress 網上直播工作坊:如何從沒有編程知識直到建立一個網店 (廣東話) by
WordPress 網上直播工作坊:如何從沒有編程知識直到建立一個網店 (廣東話)WordPress 網上直播工作坊:如何從沒有編程知識直到建立一個網店 (廣東話)
WordPress 網上直播工作坊:如何從沒有編程知識直到建立一個網店 (廣東話)ivan so
270 views61 slides
A Gentle Introduction to Drupal's Views API by
A Gentle Introduction to Drupal's Views APIA Gentle Introduction to Drupal's Views API
A Gentle Introduction to Drupal's Views APIDan Muzyka
7.5K views52 slides

More Related Content

What's hot

SEO para WordPress - 12 años de experiencias | Daniel Peris by
SEO para WordPress - 12 años de experiencias | Daniel PerisSEO para WordPress - 12 años de experiencias | Daniel Peris
SEO para WordPress - 12 años de experiencias | Daniel PerisSiteGround España
75 views54 slides
How Data Science can boost your SEO ? by
How Data Science can boost your SEO ?How Data Science can boost your SEO ?
How Data Science can boost your SEO ?Vincent Terrasi
3.6K views59 slides
Rendering SEO (explained by Google's Martin Splitt) by
Rendering SEO (explained by Google's Martin Splitt)Rendering SEO (explained by Google's Martin Splitt)
Rendering SEO (explained by Google's Martin Splitt)Anton Shulke
649 views15 slides
SEO et ecommerce sur Magento: retour d’expérience by
SEO et ecommerce sur Magento: retour d’expérienceSEO et ecommerce sur Magento: retour d’expérience
SEO et ecommerce sur Magento: retour d’expérienceAurélien Lavorel
10.2K views22 slides
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ... by
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...Caelum
2.8K views69 slides
Les canaux d'aquisition web by
Les canaux d'aquisition webLes canaux d'aquisition web
Les canaux d'aquisition webJonathan Maurin
17.5K views19 slides

What's hot(19)

SEO para WordPress - 12 años de experiencias | Daniel Peris by SiteGround España
SEO para WordPress - 12 años de experiencias | Daniel PerisSEO para WordPress - 12 años de experiencias | Daniel Peris
SEO para WordPress - 12 años de experiencias | Daniel Peris
How Data Science can boost your SEO ? by Vincent Terrasi
How Data Science can boost your SEO ?How Data Science can boost your SEO ?
How Data Science can boost your SEO ?
Vincent Terrasi3.6K views
Rendering SEO (explained by Google's Martin Splitt) by Anton Shulke
Rendering SEO (explained by Google's Martin Splitt)Rendering SEO (explained by Google's Martin Splitt)
Rendering SEO (explained by Google's Martin Splitt)
Anton Shulke649 views
SEO et ecommerce sur Magento: retour d’expérience by Aurélien Lavorel
SEO et ecommerce sur Magento: retour d’expérienceSEO et ecommerce sur Magento: retour d’expérience
SEO et ecommerce sur Magento: retour d’expérience
Aurélien Lavorel10.2K views
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ... by Caelum
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
Caelum2.8K views
Les canaux d'aquisition web by Jonathan Maurin
Les canaux d'aquisition webLes canaux d'aquisition web
Les canaux d'aquisition web
Jonathan Maurin17.5K views
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites by Caelum
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
Caelum173.3K views
Fundamental Progressive Enhancement [Web Design World Boston 2008] by Aaron Gustafson
Fundamental Progressive Enhancement [Web Design World Boston 2008]Fundamental Progressive Enhancement [Web Design World Boston 2008]
Fundamental Progressive Enhancement [Web Design World Boston 2008]
Aaron Gustafson839 views
Web vitals are vitals - Aymen Loukil by Aymen Loukil
Web vitals are vitals  - Aymen LoukilWeb vitals are vitals  - Aymen Loukil
Web vitals are vitals - Aymen Loukil
Aymen Loukil1.8K views
SEO for Large/Enterprise Websites - Data & Tech Side by Dominic Woodman
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech Side
Dominic Woodman3.2K views
Sabine Langmann - Brighton SEO 2018 - How to expand to different markets by Sabine Langmann
Sabine Langmann - Brighton SEO 2018 - How to expand to different marketsSabine Langmann - Brighton SEO 2018 - How to expand to different markets
Sabine Langmann - Brighton SEO 2018 - How to expand to different markets
Sabine Langmann2K views
Accelerated Mobile - Beyond AMP by Jono Alderson
Accelerated Mobile - Beyond AMPAccelerated Mobile - Beyond AMP
Accelerated Mobile - Beyond AMP
Jono Alderson988 views
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going... by Branded3
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
Branded31.6K views
Camille chaudet measure camp-tagguing_mobile_apps_june15_v1.0 by measurecampparis
Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0 Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0
Camille chaudet measure camp-tagguing_mobile_apps_june15_v1.0
measurecampparis713 views
UXPA Norfolk - Working with Developers by ryanlward
UXPA Norfolk - Working with DevelopersUXPA Norfolk - Working with Developers
UXPA Norfolk - Working with Developers
ryanlward466 views
Camille chaudet measure camp-analyzing_mobile_apps_june15_v1.0 by measurecampparis
Camille chaudet  measure camp-analyzing_mobile_apps_june15_v1.0Camille chaudet  measure camp-analyzing_mobile_apps_june15_v1.0
Camille chaudet measure camp-analyzing_mobile_apps_june15_v1.0
measurecampparis594 views
How SiteGround Service Compares to Other Hosts by SiteGround.com
How SiteGround Service Compares to Other HostsHow SiteGround Service Compares to Other Hosts
How SiteGround Service Compares to Other Hosts
SiteGround.com6.7K views

Similar to L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfices ?

Demystifying JavaScript & SEO by
Demystifying JavaScript & SEODemystifying JavaScript & SEO
Demystifying JavaScript & SEOBotify
877 views39 slides
SEARCH Y : Benjamin Bussière - Javascript and seo misconceptions, misunders... by
SEARCH Y :  Benjamin Bussière - Javascript and seo  misconceptions, misunders...SEARCH Y :  Benjamin Bussière - Javascript and seo  misconceptions, misunders...
SEARCH Y : Benjamin Bussière - Javascript and seo misconceptions, misunders...SEARCH Y - Philippe Yonnet Evénements
612 views52 slides
SMX_DevTools_Monaco_2.pdf by
SMX_DevTools_Monaco_2.pdfSMX_DevTools_Monaco_2.pdf
SMX_DevTools_Monaco_2.pdfSara Moccand-Sayegh
173 views90 slides
Modern JavaScript and SEO by
Modern JavaScript and SEOModern JavaScript and SEO
Modern JavaScript and SEOOIKIO Digital Performance Agency
398 views34 slides
JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S... by
JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S...JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S...
JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S...Leigh Hanney
530 views49 slides
Javascript SEO Devs and SEOs playing nicely by
Javascript SEO Devs and SEOs playing nicelyJavascript SEO Devs and SEOs playing nicely
Javascript SEO Devs and SEOs playing nicelyPeter Mead
89 views59 slides

Similar to L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfices ?(20)

Demystifying JavaScript & SEO by Botify
Demystifying JavaScript & SEODemystifying JavaScript & SEO
Demystifying JavaScript & SEO
Botify877 views
JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S... by Leigh Hanney
JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S...JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S...
JavaScript SEO: Testing and Debugging for Non-Developers - Search Marketing S...
Leigh Hanney530 views
Javascript SEO Devs and SEOs playing nicely by Peter Mead
Javascript SEO Devs and SEOs playing nicelyJavascript SEO Devs and SEOs playing nicely
Javascript SEO Devs and SEOs playing nicely
Peter Mead89 views
Javascript & SEO 2019 by Edd Wilson
Javascript & SEO 2019Javascript & SEO 2019
Javascript & SEO 2019
Edd Wilson136 views
Understand the impact of Javascript on SEO by Botify
Understand the impact of Javascript on SEOUnderstand the impact of Javascript on SEO
Understand the impact of Javascript on SEO
Botify1K views
BrightonSEO 2019 - Crawl Budget is dead, please welcome Rendering Budget by Botify
BrightonSEO 2019 - Crawl Budget is dead, please welcome Rendering BudgetBrightonSEO 2019 - Crawl Budget is dead, please welcome Rendering Budget
BrightonSEO 2019 - Crawl Budget is dead, please welcome Rendering Budget
Botify24.7K views
Javascript SEO - Leicester Digital May 2018 by Kieran Headley
Javascript SEO - Leicester Digital May 2018Javascript SEO - Leicester Digital May 2018
Javascript SEO - Leicester Digital May 2018
Kieran Headley308 views
Deep crawl the chaotic landscape of JavaScript by Onely
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript
Onely11.7K views
Is AngularJS Right for Your Enterprise? by seoClarity
Is AngularJS Right for Your Enterprise?Is AngularJS Right for Your Enterprise?
Is AngularJS Right for Your Enterprise?
seoClarity1.8K views
Web Components at Scale, HTML5DevConf 2014-10-21 by Chris Danford
Web Components at Scale, HTML5DevConf 2014-10-21Web Components at Scale, HTML5DevConf 2014-10-21
Web Components at Scale, HTML5DevConf 2014-10-21
Chris Danford1K views
WordPress Loves Google: Marrying Great Design and SEO with WordPress by Webspec Design
WordPress Loves Google: Marrying Great Design and SEO with WordPressWordPress Loves Google: Marrying Great Design and SEO with WordPress
WordPress Loves Google: Marrying Great Design and SEO with WordPress
Webspec Design323 views
How to make React Applications SEO-friendly by Fibonalabs
How to make React Applications SEO-friendlyHow to make React Applications SEO-friendly
How to make React Applications SEO-friendly
Fibonalabs24 views
How to make JavaScript websites successful in Google | iJS 2019 by Onely
 How to make JavaScript websites successful in Google | iJS 2019 How to make JavaScript websites successful in Google | iJS 2019
How to make JavaScript websites successful in Google | iJS 2019
Onely128 views

More from SEO Camp Association

Didier Sampaolo - SEO EN 2019 : GAGNEZ DU TEMPS ! by
Didier Sampaolo - SEO EN 2019 : GAGNEZ DU TEMPS !Didier Sampaolo - SEO EN 2019 : GAGNEZ DU TEMPS !
Didier Sampaolo - SEO EN 2019 : GAGNEZ DU TEMPS !SEO Camp Association
152 views39 slides
Sebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affaires by
Sebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affairesSebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affaires
Sebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affairesSEO Camp Association
84 views44 slides
Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi ! by
Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi !Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi !
Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi !SEO Camp Association
90 views59 slides
Julien Ringard & Benjamin Thiers - Cannibalisation SEO by
Julien Ringard & Benjamin Thiers - Cannibalisation SEO Julien Ringard & Benjamin Thiers - Cannibalisation SEO
Julien Ringard & Benjamin Thiers - Cannibalisation SEO SEO Camp Association
73 views40 slides
Guillaume Eouzan - 10 Clés pour optimiser les conversions de votre site by
Guillaume Eouzan - 10 Clés pour optimiser les conversions de votre siteGuillaume Eouzan - 10 Clés pour optimiser les conversions de votre site
Guillaume Eouzan - 10 Clés pour optimiser les conversions de votre siteSEO Camp Association
79 views75 slides
Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce by
Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce
Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce SEO Camp Association
104 views35 slides

More from SEO Camp Association(20)

Sebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affaires by SEO Camp Association
Sebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affairesSebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affaires
Sebestien Thibert - 10 tips qui aident à augmenter le chiffre d'affaires
Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi ! by SEO Camp Association
Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi !Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi !
Julien Anouilh - Faire décoller votre business avec Instagram, mode d'emploi !
Julien Ringard & Benjamin Thiers - Cannibalisation SEO by SEO Camp Association
Julien Ringard & Benjamin Thiers - Cannibalisation SEO Julien Ringard & Benjamin Thiers - Cannibalisation SEO
Julien Ringard & Benjamin Thiers - Cannibalisation SEO
Guillaume Eouzan - 10 Clés pour optimiser les conversions de votre site by SEO Camp Association
Guillaume Eouzan - 10 Clés pour optimiser les conversions de votre siteGuillaume Eouzan - 10 Clés pour optimiser les conversions de votre site
Guillaume Eouzan - 10 Clés pour optimiser les conversions de votre site
Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce by SEO Camp Association
Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce
Nicolas J. Chevalier - Nouveaux Schémas de croissance e-commerce
Comment définir une stratégie pour atteindre ses objectifs SEO ? by SEO Camp Association
Comment définir une stratégie pour atteindre ses objectifs SEO ?Comment définir une stratégie pour atteindre ses objectifs SEO ?
Comment définir une stratégie pour atteindre ses objectifs SEO ?
Référencement universel : 10 ans après toujours d actualité ? by SEO Camp Association
Référencement universel : 10 ans après toujours d actualité ?Référencement universel : 10 ans après toujours d actualité ?
Référencement universel : 10 ans après toujours d actualité ?
Rédaction web intelligence artificielle et semantique seo by SEO Camp Association
Rédaction web intelligence artificielle et semantique seoRédaction web intelligence artificielle et semantique seo
Rédaction web intelligence artificielle et semantique seo
Performance Web : vers la speed update, un pas après l'autre by SEO Camp Association
Performance Web : vers la speed update, un pas après l'autrePerformance Web : vers la speed update, un pas après l'autre
Performance Web : vers la speed update, un pas après l'autre
La nouvelle Search Console : session exemples et feedback by SEO Camp Association
La nouvelle Search Console : session exemples et feedbackLa nouvelle Search Console : session exemples et feedback
La nouvelle Search Console : session exemples et feedback
Inbound marketing : comment attirer des visiteurs et les transformer en clien... by SEO Camp Association
Inbound marketing : comment attirer des visiteurs et les transformer en clien...Inbound marketing : comment attirer des visiteurs et les transformer en clien...
Inbound marketing : comment attirer des visiteurs et les transformer en clien...
Grandes attentes, financement inadéquat: les défis auxquels fait face le SEO ... by SEO Camp Association
Grandes attentes, financement inadéquat: les défis auxquels fait face le SEO ...Grandes attentes, financement inadéquat: les défis auxquels fait face le SEO ...
Grandes attentes, financement inadéquat: les défis auxquels fait face le SEO ...

Recently uploaded

Opportunities for Youth in IG - Alena Muravska RIPE NCC.pdf by
Opportunities for Youth in IG - Alena Muravska RIPE NCC.pdfOpportunities for Youth in IG - Alena Muravska RIPE NCC.pdf
Opportunities for Youth in IG - Alena Muravska RIPE NCC.pdfRIPE NCC
9 views12 slides
UiPath Document Understanding_Day 2.pptx by
UiPath Document Understanding_Day 2.pptxUiPath Document Understanding_Day 2.pptx
UiPath Document Understanding_Day 2.pptxRohitRadhakrishnan8
282 views21 slides
information by
informationinformation
informationkhelgishekhar
7 views4 slides
Sustainable Marketing by
Sustainable MarketingSustainable Marketing
Sustainable MarketingTheo van der Zee
9 views50 slides
Building trust in our information ecosystem: who do we trust in an emergency by
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergencyTina Purnat
85 views18 slides
google forms survey (1).pptx by
google forms survey (1).pptxgoogle forms survey (1).pptx
google forms survey (1).pptxMollyBrown86
14 views10 slides

Recently uploaded(20)

Opportunities for Youth in IG - Alena Muravska RIPE NCC.pdf by RIPE NCC
Opportunities for Youth in IG - Alena Muravska RIPE NCC.pdfOpportunities for Youth in IG - Alena Muravska RIPE NCC.pdf
Opportunities for Youth in IG - Alena Muravska RIPE NCC.pdf
RIPE NCC9 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat85 views
google forms survey (1).pptx by MollyBrown86
google forms survey (1).pptxgoogle forms survey (1).pptx
google forms survey (1).pptx
MollyBrown8614 views
AI Powered event-driven translation bot by Jimmy Dahlqvist
AI Powered event-driven translation botAI Powered event-driven translation bot
AI Powered event-driven translation bot
Jimmy Dahlqvist16 views
UiPath Document Understanding_Day 3.pptx by UiPathCommunity
UiPath Document Understanding_Day 3.pptxUiPath Document Understanding_Day 3.pptx
UiPath Document Understanding_Day 3.pptx
UiPathCommunity95 views
We see everywhere that many people are talking about technology.docx by ssuserc5935b
We see everywhere that many people are talking about technology.docxWe see everywhere that many people are talking about technology.docx
We see everywhere that many people are talking about technology.docx
ssuserc5935b6 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC124 views
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 by Infosec train
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
Infosec train7 views
PORTFOLIO 1 (Bret Michael Pepito).pdf by brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04107 views
Existing documentaries (1).docx by MollyBrown86
Existing documentaries (1).docxExisting documentaries (1).docx
Existing documentaries (1).docx
MollyBrown8613 views

L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfices ?

  • 2. 2#seocamp Demystifying JavaScript & SEO Shedding light on common misconceptions in the JavaScript for SEO space Robin Eisenberg Engineering Manager @botify.com - Full-Stack Developer, Architect - Web and Mobile solutions - Currently Manager of the Botify Engineering Team Dimitri Brunel Search Data Strategist @botify.com - SEO managers in Marketing Agencies & Pure Players (previously) - Currently part of BOTIFY Search Data Strategist team
  • 3. 3#seocamp ▪ What is JavaScript? Why is it used? ▪ Why is JavaScript important for SEO? ▪ How does JavaScript affect the website ? ▪ What type of takeaways ? Conference Agenda
  • 4. 4#seocamp What is JavaScript? Why is there a need for JavaScript in the first place ? ● Tells the browser what to display ● Tree of nodes, described by tags ● Nodes can contain: ○ Text ○ Metadata ○ Links ○ (Assets) - not relevant ○ (Style) - not relevant ● Uses HTML to tell the browser what to display ● Allows a developer to dictate (‘Script’) a browser’s behaviour after receiving a Web Page ● Can make extra requests ● Can react to user interaction (clicks, mouse movement, keyboard, etc…) ● Can store information on the user’s computer ● Can modify the HTML HTML is the browser’s display language JavaScript is the browser’s behaviour language
  • 5. 5#seocamp JavaScript as seen by Browsers How do browsers handle JavaScript? 1) Browser asks Server what it should do 2) Server responds with HTML + JavaScript (“display this, and do that”) 3) Browser reads and displays HTML 4) Browser executes the JavaScript • Multiple browser/server communication • Browser modifies what it displays through JavaScript • User-interaction can be handled by the browser, without server communication
  • 6. 6#seocamp JS Rendering #1: product shelves How does JavaScript fetch and render affect this page ?
  • 7. 7#seocamp Result #1: product tiles now rendered with JS How does JavaScript fetch and render affect this page ? Product Tiles now rendered 1. In-page contents are now accessible 2. New internal Outlinks are now crawlable
  • 8. 8#seocamp JS Rendering #2: product page contents How does JavaScript fetch and render affect this page ?
  • 9. 9#seocamp Result #2: contents are now inserted with JS How does JavaScript fetch and render affect this page ? Contents are now rendered 1. FULL in-page contents are now accessible 2. A few new internal Outlinks are now crawlable
  • 10. 10#seocamp History of JavaScript How has JavaScript’s use on Web evolved? Way back in time: ■ First we used JS just for tracking (such as web analytics) ■ Then we used JS for dynamic content, and now we use JS for all content Back in time for the SEOs: we all had a long and hard relationship with JS and Google... ■ For some SEOs, JS was almost .onclick functions, whereas async functions with JS are now everywhere. ■ We also knew the AJAX fragments, and !Escape_fragment before it was deprecated by Google ■ We also knew the HTML5 history featured and .pushState() method, compliant for googlebot. Back to mid-2016: ● We now know that legacy JavaScript VS modern JavaScript make differences ● We now know that JavaScript Language Features make huge differences for Googlebot Now: ● The JavaScript Language (ECMAScript) is more normalized and less derivative ● Google communicates more on what works and what doesn’t
  • 11. 11#seocamp Why is JavaScript inevitable? Why is the web moving towards more and more JavaScript on websites? ● JavaScript allows for client-side interactions ● JavaScript allows for client-side processing ● JavaScript offloads processing costs to clients ● JavaScript allows websites to access native browser features (localization, notification, media, etc…) ● PO/PMs prefer JavaScript because it delivers the most interactive product ● Developers prefer JavaScript because it is much easier to use than HTML for complex websites ● Infrastructure prefers JavaScript because it offloads processing to the client’s computers ● Finance prefers JavaScript because it is cheaper
  • 12. 12#seocamp How is JavaScript used on the Web? “Some JavaScript” websites: ■ Serve a pre-filled HTML page ■ Augment the page using JavaScript ■ Examples: ○ Comments ○ Personalized content ○ Recommendation systems ○ Nav. such as Faceted Navigations ○ Filtering such as Asc./Desc. sortings “Full JavaScript” websites: ● Smart blacklisting ● Serve an empty HTML page ● Solely use JavaScript to insert HTML elements ● Examples: ○ Single-Page-Apps ○ PWAs ○ AngularJS, ReactJS, Ember, VueJS, Polymer JavaScript in the wild
  • 13. 13#seocamp Is JavaScript a problem for my SEO? “My Dev team wants to use React, what do I do ?” Absolutely not. ● Bots currently execute JavaScript on pages ● JavaScript can be written to make sure it is crawlable ● Most JavaScript non-compliance can be automatically fixed! If your development team still produces non-compliant JavaScript: ● Explain that they can fix non-compliance automatically ● All JavaScript frameworks offer a SSR fallback ● If all else fails, pre-rendering can be used (but expensive)
  • 14. 14#seocamp SEO managers are always worried about JS frameworks (= seo-pocalypse). This problem is easily solved with good JS code hygiene. A JS Checklist could be: ■ JavaScript for SEO compliance ⇔ JS is Crawl-compliant ■ Fetch and Render via GSC ⇔ rendering seems OK or KO ? ■ A test URL should be indexed ⇔ (site:) ■ A test CONTENT should be indexed ⇔ (site:) “search you unique sentence” ■ A test LINKS should be found ⇔ (search your secret children inlink) ■ A */react/test/* should be crawled ⇔ (dig into LOG files!) Is it enough? No. You need to check standard SEO indicators and make sure Frameworks: crawling & indexing experiments For any JS framework, make experiments to understand what Googlebot is able to fetch > render > index
  • 15. 15#seocamp What is JavaScript crawling ? How do Bots see your JavaScript website ?
  • 16. 16#seocamp Crawling: JavaScript as seen by Crawlers How do crawlers handle JavaScript? 1) Crawler asks Server what it should do (pretending it’s a browser) 2) Server responds with HTML + JavaScript (“display this, and do that”) 3) Crawler launches Browser, feeds HTML and JavaScript 4) Browser executes the JavaScript 5) JavaScript modifies the HTML 6) Browser sends modified HTML back to Crawler 7) Crawler reads and analyzes HTML 8) Crawler finds links 9) Crawler goes back to (1) for every link found In step (5) and (6), the JavaScript can make requests, setup user interaction triggers, and modify the page. This results in modified HTML that has been ‘augmented’ by the execution of the page’s JavaScript. The modified HTML is what is fed back to the crawler for analysis.
  • 17. 17#seocamp ● Crawlers can and do crawl JavaScript (execute JavaScript on pages) ● JavaScript crawling is a very expensive operation - optimize your render budget ○ optimize render time ○ optimize fetch time ○ smart resource blacklists in robots.txt ■ Gotcha: Some websites may have their JS scripts in their robots.txt (for historical reasons) ■ The same SEO techniques apply: ○ Crawl budgets apply ○ Internals / External Linking ○ Content & Perceived Quality ○ Page similarity & Uniqueness studies apply Crawling: Key Takeaways
  • 18. 18#seocamp JS Rendering: compare without JS / with JS How does JavaScript fetch and render affect a scope of page ? Impact on pages inventory and linking Without JS With JS
  • 19. 19#seocamp JS Rendering: full JavaScript website How does JavaScript fetch and render affect this page ? JavaScript enabled JavaScript disabled
  • 20. 20#seocamp Your JavaScript (best practices) How to handle your site’s JavaScript SEO What your Dev Team needs to know: ● Target Chromium 41 or earlier ● Transpile ES6 to ES5 ● Provide Polyfills ● Optimize fetch time ● Optimize render time If they can’t provide these points, turn to Server- Side-Rendering (SSR). If they can’t provide SSR, turn to Pre-Rendering. Cost should come out of Tech budget. What your SEO Tools need to do: ■ Smart blacklisting ■ Blacklist specific resources ■ Cache resources (for at-scale crawls) ■ Analyze fetch time (avg. nb of resources) ■ Analyze render time (delay to render) ■ Detail resources (allowed, failed, from cache)
  • 21. 21#seocamp How should you analyze your JavaScript website ? How to level-up your JavaScript SEO assessment ?
  • 22. 22#seocamp JS Rendering #1: faceted navigation How does JavaScript fetch and render affect this page ?
  • 23. 23#seocamp Result #1: faceted nav links now rendered with JS How does JavaScript fetch and render affect this page ? Faceted navigation links now rendered 1. new Links available (faceted navigation) 2. new HTML blocks (recommendation system)
  • 24. 24#seocamp JS Rendering #2: ongoing news publishing How does JavaScript fetch and render affect this page ?
  • 25. 25#seocamp Result #2: infinite scroll now inserted with JS How does JavaScript fetch and render affect this page ? Lazy Loading now rendered ● infinite scrolling ● async article displaying 1. Many new links 2. Many new contents 3. that is new page states (from 1~n articles)
  • 26. 27#seocamp ▪ The Contents can be cached, but not indexed ▪ (De)Activating JS will display different results ⇔ not 100% reliable ▪ GSC fetch and render has no debug mode ⇔ it explains nothing From these current takeaways ▪ Google cache & Google index could be separated ⇔ unclear ▪ Commitment on crawling / indexing stay unclear ⇔ smthg is missing ▪ People approach is weak (checking cache index) ⇔ rather than JS code In fact a crucial clue was still missing to understand GoogleBot - their Remaining problem are: GG cache vs GG Index You may see more or less differences… and this is not the right thing to assess !
  • 27. 28#seocamp ▪ Do not trust JS frameworks ⇔ build your own tests and do transpilling ▪ Do not trust GSC ⇔ choose a SEO tool with fetch & render tool ▪ Do not trust Google Cache ⇔ not 100% reliable for the moment Your existing SEO analysis techniques still apply. Some must be modified to account for JavaScript: - Fetch and Render time - Resource optimization - Page and resources sizes So keep in mind all of these guidelines What you (seo manager) have to tell to your dev team
  • 28. 29#seocamp Full-JS website Focus on all aspects of load time (initial HTML + JS rendering)
  • 29. 30#seocamp Full-JS website Understanding the JS load time (initial HTML + JS rendering + number of executed resources)
  • 30. 31#seocamp Compare without JS / with JS: Understanding the Impact on Content, on Internal Linking, etc. Without JS Avg. number of words (with the templates) Avg. number of words (excluding the templates) Avg. number of words (with the templates) Avg. number of words (excluding the templates) ▪ Focus on the important (top tail) pages: those that generate most traffic on the website. ▪ Further analysis: does additional content enhance content uniqueness in pages? ▪ Further analysis: does additional links improve crawl ratio on priority pages? With JS
  • 31. 34#seocamp ■ Javascript assessment on websites has become mandatory - there is no ignoring it. ■ It is new territory for SEO managers. ■ You need the right tools to analyze the JavaScript indicators in your website. Conclusion: Key Takeaways ● Javascript is perfectly crawlable in the right circumstances. ● It is not an indicator of bad SEO. ● It does not change key SEO factors used during ranking. ■ JavaScript SEO analysis requires working closely with the website's technical team. ■ Most -if not all- compliance issues can be fixed easily and automatically. ■ It will soon be an important differentiator for rankings. 1. 3. 2.
  • 32. 35#seocamp ● Rendering on Google Search ⇔ https://developers.google.com/search/docs/guides/rendering ● Ilya Grigorik / Engineer @google - https://twitter.com/igrigorik Web performance engineer, co-chair of W3C Webperf WG ● Eric Bidelman / Engineer @google - https://twitter.com/ebidel Working on headless Chrome, Lighthouse, dev tools. ● Sam Li / Engineer @googlechrome @polymer - https://twitter.com/samdotli ● Great Polyfillers ⇔ already vetted set of polyfills that you can trust, such as those provided by ES5-Shim and ES6-Shim. ● Great Transpilers ⇔ Babel (formerly 6to5): Transpiles ES6+ into ES5 // Traceur: Transpiles ES6, ES7, and beyond into ES5 ● Can I Use… / @caniuse - https://twitter.com/caniuse Compatibility tables for features in HTML5, CSS3, SVG and other upcoming web technologies ● Bartoz Garalewicz / Head of SEO @ Elephate - https://twitter.com/bart_goralewicz Tomek Rudzki / R&D Specialist @ Elephate - https://twitter.com/TomekRudzki Very warm thanks and People to follow Take time to read their articles
  • 33. 36#seocamp Thank you for your attention Get in touch! hello@botify.com
  • 34. 37#seocamp Question Mug ● Technical questions? ● SEO questions? ● Google questions?
  • 35. 38#seocamp Addendum: Special note for your JS developers Script to detect the HTML/CSS/JS features used by a site and x-reference them w/ the features supported by Google Search bot https://twitter.com/ebidel/status/9733064 63081738240
  • 36. 39#seocamp Addendum: Special note from Ilya Grigorik Once you will understand what ECMAScript is meaning, everything will start to become step by step crystal clear, to talk with you dev team ! Supported by Chrome 41 Features are functions that regular browsers can use. If a ES5 Features is working with Chrome 41, it should also work for Googlebot. CanIUSe.com assess which functions is fully compliant with Chrome version 41 (googlebot) Unsupported Chrome 41 Chrome 41 has a debug mode 1/ Click on INSPECT 2/ Click on CONSOLE 3/ if you JS errors, go to see your Front-End JS dev/ Extra Browser fallback A polyfill is a browser fallback, made in JavaScript, that allows functionality you expect to work in modern browsers to work in older browsers, e.g., to support canvas (an HTML5 feature) in older browsers.