A lot of things are being said about HTML5 ranging from bad to good to fanatical. From Apple, to Microsoft, to Adobe themselves, all of the big players have put their weight behind the standard. It is clear that HTML is here to stay, but what does that mean for today's developers? As consultants we need to determine the best use of technology today and in the future to deliver the best value to our clients. In this session Matt will give an overview of the technologies in and around what is being called HTML5 and whether they are useful today and going forward.
37. Practical
Offline / Storage - Local Storage
// use localStorage for persistent storage
// use sessionStorage for per tab storage
window.localStorage.setItem('value', area.value);
window.sessionStorage.setItem('timestamp', (new Date()).getTime());
var val = window.localStorage.getItem('value');
window.localStorage.removeItem('value');
window.localStorage.clear();
38. Practical
Offline / Storage - Local Storage
Source: http://caniuse.com
39. Practical
Offline / Storage - Web SQL Database
var db = openDatabase('exampleDB', '1.0', 'example database', 5 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "bar")');
tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
var len = results.rows.length, i;
for (i = 0; i < len; i++) {
alert(results.rows.item(i).text);
}
});
});
59. Practical
Hardware Access - Device Orientation
window.addEventListener('deviceorientation', function(event) {
var a = event.alpha;
var b = event.beta;
var g = event.gamma;
}, false);
In the interest of evaluating HTML5 from a completely practical standpoint, we first need to consider the most important factors.\n
Which platforms do you need to support?\nDesktop Computers, Smart Phones, Tablets\n
Which platforms do you need to support?\nDesktop Computers, Smart Phones, Tablets\n
Which platforms do you need to support?\nDesktop Computers, Smart Phones, Tablets\n
Which platforms do you need to support?\nDesktop Computers, Smart Phones, Tablets\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
Which browsers do you need to support?\nInternet Explorer, Firefox, Safari, Chrome, iOS Safari, Android, and others\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
What features do you need?\nOffline/Storage, Communication, Hardware Access, Semantics, Multimedia, CSS 3, 3D Effects, Performance\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
Beware of the &#x201C;coolness factor&#x201D; influencing your decisions. Don&#x2019;t be a hipster.\nNOT PRACTICAL!\n
What really is HTML5? Many things considered to be part of HTML5 aren&#x2019;t in the actual specification. HTML5 has become a buzzword.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of updates to HTML markup, CSS styling, and Javascript API.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
HTML 5 is a combination of many disparate features. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
Online/Offline detection and data storage.\n
- Very simple key-value pair storage\n- jquery-jstore - jQuery based library implemented over local storage\n- 5MB limit with no API to increase quote - at the users&#x2019; mercy!\n- Used to be part of the HTML5 spec, but was removed\n
\n
- this is an implementation of SQLite in javascript\n- W3C deprecated specification on 11/18/2010 which means you shouldn&#x2019;t use it :-(\n
Firefox has stated it will never add support for Web SQL. Coupled with IE&#x2019;s lack of interest, the W3C deprecated the specification.\n
- Indexed Database API, aka IndexedDB, formerly known as WebSimpleDB\n- this is an object store, not a relational database, storing Javascript Objects\n- Asynchronous and Transactional only\n- You can create indexes against your stored objects\n
- The best example I could find online did not work and was out of date.\n- Firefox requires &#x201C;moz&#x201D; prefix pre v16.\n- Chrome requires &#x201C;webkit&#x201D; prefix currently, but removed in v24.\n- IMO, this technology shows great promise, but is not ready for prime time.\n
- Note that onLine won&#x2019;t tell you if your site is down or not responding - only whether the browser has network connectivity.\n- IE and Firefox have &#x201C;Work Offline&#x201D; menu options, but WebKit browsers don&#x2019;t.\n
- CACHE MANIFEST section includes all resources loaded into cache\n- NETWORK section includes all resources not cached\n- FALLBACK section includes page to fall back to when offline and referencing a page that is not included in the cache\n
- The cache manifest document is referenced in whatever page you want to automatically load all resources into the local application cache.\n- This is brittle - a problem with loading any resource will cause the entire process to fail, and the error notifications are very limited.\n
- Each browser has a different default size for the cache&#x2019;s quota, with no API for checking the quota size or increasing it defined in the specification!\n- Again, at the users&#x2019; mercy for cache size.\n- For a funny, and informative, article about AppCache difficulties, search for &#x201C;AppCache is a douchebag&#x201D;\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
Communication\n
WebSocket API provides bi-directional, full-duplex communication over a single TCP socket.\n
Note no support on Android. Partial support in Safari versions refers to an implementation using an older version of the protocol.\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
Hardware Access\n
\n
Lack of support in mobile browsers makes sense, really.\n
Of course, the google stuff in this example isn&#x2019;t cross browser ... just ignore that part ;-)\n
IE 9 is reported to have issues reporting correct latitude & longitude.\n
\n
\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Semantic markup elements, and other new markup elements.\n
Sorry for the small size - complete examples are difficult to fit onto a single slide. This shows most common new semantic elements. In the past, you would typically have a <div id=&#x201D;whatever&#x201D;> instead.\n
\n
The datalist is referenced as an auto-complete when user types into the input element.\n
\n
The summary value is shown with a glyph that can be clicked to expand and show the details, much like a tree-view control.\n
\n
The value inside the element is shown when the browser doesn&#x2019;t support the element. The actual control displayed depends on the browser and operating system.\n
Partial support in Firefox 6+ and IE10 refers to supporting the progress element, but not the meter element.\n
The color input pops up a color selector based on the browser / OS.\nNote that number, email, and tel elements change the type of keyboard (SIP) in mobile browsers.\n
Most browsers only have partial support because this shows the support of ALL of the new form elements. Sorry, I&#x2019;m lazy, I didn&#x2019;t want to copy a chart for each element.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
Video and audio are what most people think of when they hear the buzzword HTML5.\n
You would typically put a flash or silverlight audio object inside the audio tag to gracefully fallback on browsers that don&#x2019;t support it.\n
\n
Note that no single encoding works for all browsers -- you WILL end up referencing multiple encodings.\n
You would typical put a flash video object inside the video tag for graceful fallback for devices that don&#x2019;t support the video tag.\n
\n
Note that no single encoding works for all browsers.\n
\n
Note that Opera Mini&#x2019;s partial support - it will display the canvas but is unable to play animations or complex operations.\n
A simple circle with a gratuitous gradient fill and pops up an alert when you click on it.\n
Note that Opera Mini&#x2019;s partial support - it will display the canvas but is unable to play animations or complex operations.\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
CSS 3 includes many new ways of styling and animating elements that make old methods obsolete (like Flash).\nBrowsers have lots of specific tricks, but I&#x2019;m sticking to the non-prefixed features.\n\n
Frankly, I just use jQuery for this\n
I&#x2019;ll be the first to admit that I&#x2019;m no CSS guru. I&#x2019;m going through these CSS features exactly as they appear in http://slides.html5rocks.com/#css-selectors\n
Again, I&#x2019;d use jQuery for this\n
Again, I&#x2019;d use jQuery for this\n
Again, I&#x2019;d use jQuery for this\n
\n
\n
This is based on a great interactive demo at http://slides.html5rocks.com/#rounded-corners\n
\n
Rather than showing http://caniuse.com support statistics for each CSS3 feature, I used their combined browser support chart.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
3D effects have been included in the specification for a while, but browsers are only recently beginning to support the specifications.\n
I took a screenshot of the rendered result of this markup, but it doesn&#x2019;t show the entire animation. For the real version, see http://slides.html5rocks.com/#canvas-3d which is, in turn, based on http://mobile.freecode.com/projects/sanogles\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Performance is about threading, commonly known as web workers.\n
Web Workers have no access to the DOM or the calling page; the only communication allowed is through messages.\n
\n
If you feel like you really must use these newfangled features, but can&#x2019;t depend on client support, you can always use feature detection and create graceful fallbacks; or even duplicate features using polyfill or shim libraries.\n
If you feel like you really must use these newfangled features, but can&#x2019;t depend on client support, you can always use feature detection and create graceful fallbacks; or even duplicate features using polyfill or shim libraries.\n
If you feel like you really must use these newfangled features, but can&#x2019;t depend on client support, you can always use feature detection and create graceful fallbacks; or even duplicate features using polyfill or shim libraries.\n
If you feel like you really must use these newfangled features, but can&#x2019;t depend on client support, you can always use feature detection and create graceful fallbacks; or even duplicate features using polyfill or shim libraries.\n
Just remember what&#x2019;s important: delivering what your customer needs.\n
Support your customer&#x2019;s platforms and browsers.\n
Support your customer&#x2019;s platforms and browsers.\n