{"id":13395189,"url":"https://github.com/andrew--r/frontend-case-studies","last_synced_at":"2025-05-13T00:34:07.288Z","repository":{"id":37431331,"uuid":"122842179","full_name":"andrew--r/frontend-case-studies","owner":"andrew--r","description":"💼 A curated list of talks and articles about real world frontend development","archived":false,"fork":false,"pushed_at":"2025-04-20T21:35:49.000Z","size":734,"stargazers_count":7389,"open_issues_count":14,"forks_count":426,"subscribers_count":215,"default_branch":"master","last_synced_at":"2025-05-09T09:51:47.633Z","etag":null,"topics":["awesome-list","case-study","css","enterprise","frontend","html","javascript","react","real-world","typescript"],"latest_commit_sha":null,"homepage":"https://frontendcs.com","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrew--r.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-02-25T14:15:12.000Z","updated_at":"2025-05-08T05:33:57.000Z","dependencies_parsed_at":"2024-04-08T22:01:58.324Z","dependency_job_id":"a1c3a7da-f956-487f-993c-62408d213040","html_url":"https://github.com/andrew--r/frontend-case-studies","commit_stats":{"total_commits":451,"total_committers":16,"mean_commits":28.1875,"dds":"0.49889135254988914","last_synced_commit":"81c5655077e56b8965843a305a2ae35161ad593d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew--r%2Ffrontend-case-studies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew--r%2Ffrontend-case-studies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew--r%2Ffrontend-case-studies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew--r%2Ffrontend-case-studies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrew--r","download_url":"https://codeload.github.com/andrew--r/frontend-case-studies/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253850294,"owners_count":21973661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome-list","case-study","css","enterprise","frontend","html","javascript","react","real-world","typescript"],"created_at":"2024-07-30T17:01:45.612Z","updated_at":"2025-05-13T00:34:07.261Z","avatar_url":"https://github.com/andrew--r.png","language":"Astro","funding_links":["https://www.paypal.com"],"categories":["Others","Index","Technical","Astro","Web Development","\u003e 3k ★","Other Lists","🌐 Web Development - Frontend"],"sub_categories":["TeX Lists"],"readme":"![Frontend case studies logo](assets/logo.png)\n\nArticles like “Building a simple todo list with [framework or technology name]” won’t teach you how that framework or technology solves real-world problems and works at a large scale. This document is a curated list of technical talks and articles about real-world enterprise frontend development.\n\n\u003e [!IMPORTANT]\n\u003e As of January 2025, we've launched [a website](https://frontendcs.com) where you can browse case studies with a better UX! Please use the website for the latest updates. Entries in this README will no longer be updated and will eventually be removed completely.\n\n## Table of contents\n\n- [English](#english)\n  - [AdRoll](#adroll)\n  - [Aha!](#aha)\n  - [Airbnb](#airbnb)\n  - [ALDO](#aldo)\n  - [Algolia](#algolia)\n  - [Allegro](#allegro)\n  - [Amazon](#amazon)\n  - [Artsy](#artsy)\n  - [Atlassian](#atlassian)\n  - [Australian Broadcasting Corporation](#australian-broadcasting-corporation)\n  - [Badoo](#badoo)\n  - [BBC](#bbc)\n  - [Betty Crocker](#betty-crocker)\n  - [Bitmovin](#bitmovin)\n  - [blogfoster](#blogfoster)\n  - [Bloomberg](#bloomberg)\n  - [BuzzFeed](#buzzfeed)\n  - [Campaign Monitor](#campaign-monitor)\n  - [Carbon Five](#carbon-five)\n  - [Carousell](#carousell)\n  - [cars.com](#carscom)\n  - [Checkbot](#checkbot)\n  - [Clearleft](#clearleft)\n  - [Cloudflare](#cloudflare)\n  - [Cloud Four](#cloud-four)\n  - [CodeSandbox](#codesandbox)\n  - [Condé Nast](#condé-nast)\n  - [Conductor](#conductor)\n  - [Datadog](#datadog)\n  - [DAZN](#dazn)\n  - [De Voorhoede](#de-voorhoede)\n  - [DEV](#dev)\n  - [Discord](#discord)\n  - [\u0026lt;div\u0026gt;RIOTS](#divriots)\n  - [DoorDash](#doordash)\n  - [Dropbox](#dropbox)\n  - [eBay](#ebay)\n  - [EdgeDB](#edgedb)\n  - [Electronic Arts](#electronic-arts)\n  - [Ele.me](#eleme)\n  - [Etsy](#etsy)\n  - [Evil Martians](#evil-martians)\n  - [Expedia Group](#expedia-group)\n  - [ezCater](#ezcater)\n  - [Facebook](#facebook)\n  - [FARFETCH](#farfetch)\n  - [fastq.bio](#fastqbio)\n  - [Figma](#figma)\n  - [Financial Times](#financial-times)\n  - [Flickr](#flickr)\n  - [Flipboard](#flipboard)\n  - [Flipkart](#flipkart)\n  - [Flocktory](#flocktory)\n  - [Futurice](#futurice)\n  - [Garbarino](#garbarino)\n  - [GitHub](#github)\n  - [GitLab](#gitlab)\n  - [Goibibo](#goibibo)\n  - [Google](#google)\n  - [GOV.UK](#govuk)\n  - [grammarly](#grammarly)\n  - [Gusto](#gusto)\n  - [HealthCare.gov](#healthcaregov)\n  - [Heap](#heap)\n  - [in der Apotheke](#in-der-apotheke)\n  - [Infinite Red](#infinite-red)\n  - [Insider Inc.](#insider-inc)\n  - [Instagram](#instagram)\n  - [Internet Archive](#internet-archive)\n  - [Intuit](#intuit)\n  - [InVision](#invision)\n  - [Khan Academy](#khan-academy)\n  - [Kickstarter](#kickstarter)\n  - [Klarna](#klarna)\n  - [Line](#line)\n  - [LinkedIn](#linkedin)\n  - [Lucidchart](#lucidchart)\n  - [Lyft](#lyft)\n  - [Mail.ru](#mailru)\n  - [Mailchimp](#mailchimp)\n  - [MDN](#mdn)\n  - [Medium](#medium)\n  - [MemSQL](#memsql)\n  - [Mercado Libre](#mercado-libre)\n  - [Microsoft Bing](#microsoft-bing)\n  - [Microsoft To-Do](#microsoft-to-do)\n  - [Mixmax](#mixmax)\n  - [Mixpanel](#mixpanel)\n  - [Monzo](#monzo)\n  - [Mozilla](#mozilla)\n  - [Mud](#mud)\n  - [Myntra](#myntra)\n  - [Netflix](#netflix)\n  - [New Relic](#new-relic)\n  - [Notion](#notion)\n  - [npm](#npm)\n  - [OK GROW!](#ok-grow)\n  - [OYO](#oyo)\n  - [Oyster](#oyster)\n  - [Palantir](#palantir)\n  - [PayPal](#paypal)\n  - [Pinafore](#pinafore)\n  - [Pinterest](#pinterest)\n  - [Pivotal Tracker](#pivotal-tracker)\n  - [Plaid](#plaid)\n  - [Plotly](#plotly)\n  - [Product Hunt](#product-hunt)\n  - [Proton](#proton)\n  - [Quizlet](#quizlet)\n  - [Quora](#quora)\n  - [REA Group](#rea-group)\n  - [Reaktor](#reaktor)\n  - [Reddit](#reddit)\n  - [Redmart](#redmart)\n  - [repl.it](#replit)\n  - [Revolut](#revolut)\n  - [Roompact](#roompact)\n  - [Safety Culture](#safety-culture)\n  - [Scratch](#scratch)\n  - [Sentry](#sentry)\n  - [Shopify](#shopify)\n  - [Skillshare](#skillshare)\n  - [Slack](#slack)\n  - [Snipcart](#snipcart)\n  - [SoundCloud](#soundcloud)\n  - [Spectrum](#spectrum)\n  - [Spotify](#spotify)\n  - [Stack Overflow](#stack-overflow)\n  - [stripe](#stripe)\n  - [SumUp](#sumup)\n  - [Superhuman](#superhuman)\n  - [TakeShape](#takeshape)\n  - [The Guardian](#the-guardian)\n  - [The Knot Worldwide](#the-knot-worldwide)\n  - [The New York Times](#the-new-york-times)\n  - [The Telegraph](#the-telegraph)\n  - [The Times \u0026 The Sunday Times](#the-times--the-sunday-times)\n  - [The U.S. Digital Service](#the-us-digital-service)\n  - [The Wall Street Journal](#the-wall-street-journal)\n  - [This Also](#this-also)\n  - [ThomasNet](#thomasnet)\n  - [Thread](#thread)\n  - [Tinder](#tinder)\n  - [Tines](#tines)\n  - [TinyMCE](#tinymce)\n  - [Tokopedia](#tokopedia)\n  - [Treebo](#treebo)\n  - [Trivago](#trivago)\n  - [Tumblr](#tumblr)\n  - [Twitch](#twitch)\n  - [Twitter](#twitter)\n  - [Uber](#uber)\n  - [Udacity](#udacity)\n  - [Unity](#unity)\n  - [Unsplash](#unsplash)\n  - [Vercel](#vercel)\n  - [Verve](#verve)\n  - [Walmart Labs](#walmart-labs)\n  - [Wikimedia](#wikimedia)\n  - [Wingify](#wingify)\n  - [Wix](#wix)\n  - [Yelp](#yelp)\n  - [YNAB](#ynab)\n  - [YouTube](#youtube)\n  - [Zajno](#zajno)\n  - [Zynga](#zynga)\n  - [18F](#18f)\n  - [1Password](#1password)\n  - [Miscellaneous](#miscellaneous)\n- [Russian](#russian)\n  - [Amplifr](#amplifr)\n  - [Aviasales](#aviasales)\n  - [Avito](#avito)\n  - [auto.ru](#autoru)\n  - [Badoo](#badoo-1)\n  - [Delivery Club](#delivery-club)\n  - [DIRECTUM](#directum)\n  - [Flocktory](#flocktory-1)\n  - [GitLab](#gitlab-1)\n  - [HeadHunter](#headhunter)\n  - [ISPsystem](#ispsystem)\n  - [Joom](#joom)\n  - [Mail.Ru](#mailru-1)\n  - [Microsoft To-Do](#microsoft-to-do-1)\n  - [Miro](#miro)\n  - [Netcracker](#netcracker)\n  - [OneTwoTrip](#onetwotrip)\n  - [Rambler Group](#rambler-group)\n  - [Setka](#setka)\n  - [Skyeng](#skyeng)\n  - [Sports.ru](#sportsru)\n  - [Tinkoff](#tinkoff)\n  - [Wrike](#wrike)\n  - [Альфа-Банк](#Альфа-Банк)\n  - [Бюро Горбунова](#Бюро-Горбунова)\n  - [ВКонтакте](#ВКонтакте)\n  - [Додо Пицца](#Додо-Пицца)\n  - [Леруа Мерлен](#леруа-мерлен)\n  - [Медуза](#Медуза)\n  - [Одноклассники](#Одноклассники)\n  - [Сбербанк](#Сбербанк)\n  - [Ситимобил](#Ситимобил)\n  - [Спортмастер](#Спортмастер)\n  - [Учи.ру](#учиру)\n  - [Хабр](#хабр)\n  - [ЦИАН](#циан)\n  - [ЮMoney (Яндекс.Деньги)](#юmoney-яндексденьги)\n  - [Яндекс](#Яндекс)\n  - [2ГИС](#2ГИС)\n  - [Прочее](#прочее)\n- [License](#license)\n\n## English\n\n### [AdRoll](https://www.adroll.com)\n\n- [Lazy loading Backbone collections with Promises](http://tech.adroll.com/blog/web/2013/11/12/lazyloading-backbone-collection-with-promises.html) (November 12, 2013)\n- [Rollup: Shared UI components at AdRoll](http://tech.adroll.com/blog/frontend/2015/11/05/rollup-shared-ui-components.html) (November 05, 2015)\n- [Rollup: How we use React.js and npm to share UI code at AdRoll](http://tech.adroll.com/blog/frontend/2015/11/12/rollup-react-and-npm-at-adroll.html) (November 12, 2015)\n- [Rollup: What we have learned from sharing UI code at AdRoll](http://tech.adroll.com/blog/frontend/2015/11/19/rollup-major-learnings.html) (November 19, 2015)\n- [gulp-react-docs: From propTypes to Markdown in 3 seconds](http://tech.adroll.com/blog/frontend/2015/12/21/gulp-react-docs.html) (December 21, 2015)\n- [How to Create a Style Guide: Start with a UI Framework](http://tech.adroll.com/blog/product/2016/07/29/how-to-create-a-style-guide.html) (July 29, 2016)\n- [How to Run a Front-End Infrastructure Team](http://tech.adroll.com/blog/frontend/2017/08/29/how-to-run-a-front-end-infrastructure-team.html) (August 29, 2017)\n\n### [Aha!](https://www.aha.io)\n\n- [How I Convinced Our CTO to Switch From CoffeeScript to ES6](https://blog.aha.io/coffescript-to-es6) (September 7, 2017)\n\n### [Airbnb](https://www.airbnb.com)\n\n- [Turbocharged JavaScript Refactoring with Codemods](https://medium.com/airbnb-engineering/turbocharged-javascript-refactoring-with-codemods-b0cae8b326b9) (April 27, 2016)\n- [Rearchitecting Airbnb’s Frontend](https://medium.com/airbnb-engineering/rearchitecting-airbnbs-frontend-5e213efc24d2) (May 15, 2017)\n- [Migrating from Mocha to Jest](https://medium.com/airbnb-engineering/unlocking-test-performance-migrating-from-mocha-to-jest-2796c508ec50) (June 15, 2017)\n- [React Performance Fixes on Airbnb Listing Pages](https://medium.com/airbnb-engineering/recent-web-performance-fixes-on-airbnb-listing-pages-6cd8d93df6f4) (December 5, 2017)\n- [Server Rendering, Code Splitting, and Lazy Loading with React Router v4](https://medium.com/airbnb-engineering/server-rendering-code-splitting-and-lazy-loading-with-react-router-v4-bfe596a6af70) (January 10, 2018)\n- [React Native at Airbnb](https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c) (June 19, 2018): [The Technology](https://medium.com/airbnb-engineering/react-native-at-airbnb-the-technology-dafd0b43838), [Building a Cross-Platform Mobile Team](https://medium.com/airbnb-engineering/building-a-cross-platform-mobile-team-3e1837b40a88), [Sunsetting React Native](https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a), [What’s Next for Mobile at Airbnb](https://medium.com/airbnb-engineering/whats-next-for-mobile-at-airbnb-5e71618576ab)\n- [Operationalizing Node.js for Server Side Rendering](https://medium.com/airbnb-engineering/operationalizing-node-js-for-server-side-rendering-c5ba718acfc9) (July 18, 2018)\n- [How Airbnb is Moving 10x Faster at Scale with GraphQL and Apollo](https://medium.com/airbnb-engineering/how-airbnb-is-moving-10x-faster-at-scale-with-graphql-and-apollo-aa4ec92d69e2) (December 5, 2018)\n- [Building (And Re-Building) the Airbnb Design System](https://youtu.be/fHQ1WSx41CA) (October 30, 2019)\n- [ts-migrate: A Tool for Migrating to TypeScript at Scale](https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc) (August 18, 2020)\n- [Building a Faster Web Experience with the postTask Scheduler](https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91) (May 20, 2021)\n- [A Deep Dive into Airbnb’s Server-Driven UI System](https://medium.com/airbnb-engineering/a-deep-dive-into-airbnbs-server-driven-ui-system-842244c5f5) (June 29, 2021)\n- [Measuring Web Performance at Airbnb](https://medium.com/airbnb-engineering/measuring-web-performance-at-airbnb-122da8d3ea3f) (December 7, 2021)\n- [Faster JavaScript Builds with Metro](https://medium.com/airbnb-engineering/faster-javascript-builds-with-metro-cfc46d617a1f) (May 24, 2022)\n- [Airbnb’s Trip to Linaria](https://medium.com/airbnb-engineering/airbnbs-trip-to-linaria-dc169230bd12) (June 16, 2022)\n- [Improving Performance with HTTP Streaming](https://medium.com/airbnb-engineering/improving-performance-with-http-streaming-ba9e72c66408) (May 17, 2023)\n- [Rethinking Text Resizing on Web](https://medium.com/airbnb-engineering/rethinking-text-resizing-on-web-1047b12d2881) (May 16, 2024)\n- [How Airbnb Smoothly Upgrades React](https://medium.com/airbnb-engineering/how-airbnb-smoothly-upgrades-react-b1d772a565fd) (July 23, 2024)\n- [Adopting Bazel for Web at Scale](https://medium.com/airbnb-engineering/adopting-bazel-for-web-at-scale-a784b2dbe325) (Nov 12, 2024)\n\n### [ALDO](https://www.aldogroup.com)\n\n- [The Impact of Web Performance](https://simplified.dev/performance/impact-of-web-performance) (February 6, 2020)\n\n### [Algolia](https://www.algolia.com)\n\n- [Improving Web Performance to Mirror Engine Speed](https://blog.algolia.com/improving-web-performance-to-mirror-engine-speed) (July 26, 2017)\n- [Using NetInfo API to Improve Algolia’s JavaScript Client](https://blog.algolia.com/netinfo-api-algolia-javascript-client/) (July 30, 2019)\n\n### [Allegro](https://allegro.pl)\n\n- [Managing Frontend in the Microservices Architecture](https://blog.allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html) (March 12, 2016)\n- [Why Allegro Ads chose TypeScript](https://blog.allegro.tech/2019/04/why-allegro-ads-chose-typescript.html) (April 9, 2019)\n- [Page visibility and performance metrics](https://blog.allegro.tech/2019/09/page-visibility-and-performance-metrics.html) (September 2, 2019)\n- [Performance of JavaScript optional chaining](https://blog.allegro.tech/2019/11/performance-of-javascript-optional-chaining.html) (November 8, 2019)\n- [Using ESLint to improve your app’s performance](https://blog.allegro.tech/2020/08/using-eslint.html) (August 11, 2020)\n- [Measuring Web Performance](https://blog.allegro.tech/2021/06/measuring-web-performance.html) (June 8, 2021)\n- [Making API calls a seamless user experience](https://blog.allegro.tech/2021/07/making-api-calls-seamless-ux.html) (July 21, 2021)\n- [CSS Architecture and Performance in Micro Frontends](https://blog.allegro.tech/2021/07/css-architecture-and-performance-of-micro-frontends.html) (July 29, 2021)\n- [How to turn on TypeScript strict mode in specific files](https://blog.allegro.tech/2021/09/How-to-turn-on-TypeScript-strict-mode-in-specific-files.html) (September 6, 2021)\n- [Evolution of web performance culture](https://blog.allegro.tech/2021/09/evolution-of-web-performance-culture.html) (September 23, 2021)\n- [How we refactored the search form UI component](https://blog.allegro.tech/2021/10/refactoring-opbox-search.html) (October 26, 2021)\n\n### [Amazon](https://www.amazon.com)\n\n- [How we halved the publish size of modular AWS SDK for JavaScript clients](https://aws.amazon.com/blogs/developer/how-we-halved-the-publish-size-of-modular-aws-sdk-for-javascript-clients/) (October 14, 2021)\n- [How Prime Video updates its app for more than 8,000 device types: the switch to WebAssembly increases stability, speed](https://www.amazon.science/blog/how-prime-video-updates-its-app-for-more-than-8-000-device-types) (January 27, 2022)\n\n### [Artsy](https://www.artsy.net/)\n\n- [Rendering on the Server and Client in Node.js](http://artsy.github.io/blog/2013/11/30/rendering-on-the-server-and-client-in-node-dot-js/) (November 30, 2013)\n- [The Tech Behind Live Auction Integration](http://artsy.github.io/blog/2016/08/09/the-tech-behind-live-auction-integration/) (August 9, 2016)\n- [React Native at Artsy](http://artsy.github.io/blog/2016/08/15/React-Native-at-Artsy/) (August 15, 2016)\n- [Making Artsy Editorial Accessible](http://artsy.github.io/blog/2017/08/29/Making-Artsy-Editorial-Accessible/) (August 29, 2017)\n- [Helping the Web Towards OSS by Default](http://artsy.github.io/blog/2016/09/06/Milestone-on-OSS-by-Default/) (September 6, 2016)\n- [JSON Web Tokens: Artsy's Journey](http://artsy.github.io/blog/2016/10/26/jwt-artsy-journey/) (October 26, 2016)\n- [Exploration: Front-end JavaScript at Artsy in 2017](http://artsy.github.io/blog/2017/02/05/Front-end-JavaScript-at-Artsy-2017/) (February 5, 2017)\n- [Modernizing Force](http://artsy.github.io/blog/2017/09/05/Modernizing-Force/) (September 5, 2017)\n- [React Native, 2 years later](http://artsy.github.io/blog/2018/03/17/two-years-of-react-native/) (March 17, 2018)\n- [Keeping Artsy's dependencies up to date](http://artsy.github.io/blog/2018/11/26/keeping-dependencies-updated/) (November 26, 2018)\n- [Switch from Capybara Webkit to Chrome](http://artsy.github.io/blog/2018/11/27/switch-from-capybara-webkit-to-chrome/) (November 27, 2018)\n- [GraphQL Stitching 101](http://artsy.github.io/blog/2018/12/11/GraphQL-Stitching/) (December 11, 2018)\n- [GraphQL: Union vs. Interface](http://artsy.github.io/blog/2019/01/14/graphql-union-vs-interface/) (January 14, 2019)\n- [From TSLint to ESLint, or How I Learned to Lint GraphQL Code](http://artsy.github.io/blog/2019/01/29/from-tslint-to-eslint/) (January 29, 2019)\n\n### [Atlassian](https://www.atlassian.com/)\n\n- [Trellisheets: How we spin up CSS for Trello sites with ease](https://www.atlassian.com/engineering/trellisheets-how-we-spin-up-css-for-trello-sites-with-ease) (March 1, 2016)\n- [A look at Trello: adopting GraphQL and Apollo in a legacy application](https://www.atlassian.com/engineering/a-look-at-trello-adopting-graphql-and-apollo-in-a-legacy-application) (August 28, 2019)\n- [Using an event-driven architecture to improve Jira Software responsiveness](https://www.atlassian.com/engineering/using-an-event-driven-architecture-to-improve-jira-software-responsiveness) (November 05, 2019)\n- [Scaling React server-side rendering in Jira Cloud](https://www.atlassian.com/engineering/scaling-react-server-side-rendering-in-jira-cloud) (February 04, 2020)\n- [Improving performance through better architecture](https://www.atlassian.com/engineering/react-resource-router-deep-dive) (June 23, 2020)\n- [Performance in Jira front-end: the story of a single line of code](https://www.atlassian.com/engineering/performance-in-jira-front-end) (November 16, 2020)\n- [Performance in Jira front-end: using modern bundles to improve load time](https://www.atlassian.com/engineering/performance-in-jira-front-end-modern-bundles) (December 5, 2020)\n- [Performance in Jira front-end: solving bundle duplicates with Webpack and yarn](https://www.atlassian.com/engineering/performance-in-jira-front-end-solving-bundle-duplicates-with-webpack-and-yarn) (December 22, 2020)\n\n### [Australian Broadcasting Corporation](http://abc.net.au/)\n\n- [Composing Components](https://developers.digital.abc.net.au/2018/09/28/composing-components/) (September 28, 2018)\n- [From data to DOM: Building a text rendering pipeline for React](https://developers.digital.abc.net.au/2019/10/23/from-data-to-dom-building-a-text-rendering-pipeline-for-react/) (October 23, 2019)\n- [Migrating the platform that powers ABC sites to TypeScript](https://developers.digital.abc.net.au/2021/09/30/migrating-the-platform-that-powers-abc-sites-to-typescript/) (September 30, 2021)\n\n### [Badoo](https://badoo.com)\n\n- [How to teach a web app to speak 100 languages: the specifics of localisation](https://badootech.badoo.com/how-to-teach-a-web-app-to-speak-100-languages-the-specifics-of-localisation-514f13ed235c) (March 8, 2017)\n- [The painless way to collect statistics from a web-site](https://badootech.badoo.com/the-painless-way-to-collect-statistics-from-a-web-site-cadc6aa67688) (May 18, 2017)\n- [Translating interfaces into almost fifty languages: Sketch](https://badootech.badoo.com/translating-interfaces-into-almost-fifty-languages-sketch-dc196cf23ee5) (October 17, 2017)\n- Hot localisations update: [part 1](https://badootech.badoo.com/hot-localisations-update-part-1-86fc013d6327), [part 2](https://badootech.badoo.com/part2-hot-localisations-update-12272511df0c) (November 2017)\n- From zero to Cosmos: [part 1](https://badootech.badoo.com/from-zero-to-cosmos-part-1-2d080fe35bf2), [part 2](https://badootech.badoo.com/from-zero-to-cosmos-part-2-97929e13f839), [part 3](https://badootech.badoo.com/from-zero-to-cosmos-part-3-95e2c98c45a6) (February 2018)\n- [Translating Dust templates to JSX](https://badootech.badoo.com/translating-dust-templates-to-jsx-bed273ef41de) (May 16, 2018)\n- [How to manage your Design Tokens with Style Dictionary](https://medium.com/@didoo/how-to-manage-your-design-tokens-with-style-dictionary-98c795b938aa) (September 27, 2018)\n- Optical alignment for frontend developers: [why is it not the same as it is for designers](https://badootech.badoo.com/optical-alignment-for-frontend-developers-part-i-why-it-is-not-the-same-as-for-designers-a082ffca1d3b) and [how can the process be automated](https://badootech.badoo.com/optical-alignment-for-frontend-developers-part-ii-how-can-the-process-be-automated-e41d8de2b18f) (November 22, 2018)\n- Generating multi-brand multi-platform icons with Sketch and a Node.js script: [from the idea to the assets Sketch files](https://badootech.badoo.com/generating-multi-brand-multi-platform-icons-with-sketch-and-a-node-js-script-part1-82f438c7e16c) and [the build script and the generation of the assets](https://badootech.badoo.com/generating-multi-brand-multi-platform-icons-with-sketch-and-a-node-js-script-part2-8d02e8bb915a) (December 2018)\n- [Covering A/B tests with UI tests: how to avoid getting tangled up in your own code](https://badootech.badoo.com/covering-ab-tests-with-ui-testing-1df5401ff0e1) (February 22 2019)\n- [Design Tokens beyond colors, typography, and spacing](https://badootech.badoo.com/design-tokens-beyond-colors-typography-and-spacing-ad7c98f4f228) (November 12, 2019)\n\n### [BBC](http://www.bbc.com)\n\n- [Redefining the BBC News core experience](https://wildlyinaccurate.com/redefining-the-bcc-news-core-experience/) (July 22, 2016)\n- [HTTP/2 is easy, just turn it on…](https://medium.com/bbc-design-engineering/http-2-is-easy-just-turn-it-on-34baad2d1fb1) (November 7, 2017)\n- [How BBC Interactive Content Works Across AMP, Apps, And The Web](https://www.smashingmagazine.com/2018/03/bbc-interactive-content-amp-apps-web/) (March 15, 2018)\n\n### [Betty Crocker](https://www.bettycrocker.com)\n\n- [Wake Lock API case study: 300% increase in purchase intent indicators on BettyCrocker.com](https://web.dev/betty-crocker/) (May 19, 2020)\n\n### [Bitmovin](https://bitmovin.com)\n\n- [How Bitmovin Used React/Redux to Develop Its New Dashboard](https://bitmovin.com/bitmovin-used-reactredux-to-develop-new-dashboard/) (September 7, 2017)\n- [To Play, or Not to Play – New AutoPlay Policies for Safari 11 and Chrome 64](https://bitmovin.com/play-not-play-new-autoplay-policies-safari-11-chrome-64/) (September 28, 2017)\n- [To Play, or Not to Play #2 – Firefox blocks audible autoplay by default!](https://bitmovin.com/firefox-blocks-audible-autoplay/) (February 20, 2019)\n\n### [blogfoster](http://www.blogfoster.com/)\n\n- [Jumpstart to React+Redux Development](http://engineering.blogfoster.com/jumpstart-to-react-redux-development/)\n- [Centralized ESLint Configuration](http://engineering.blogfoster.com/centralized-eslint-configuration/)\n- [Redux For Better in-App Analytics](http://engineering.blogfoster.com/redux-for-better-in-app-analytics/)\n- [Managing Complexity in Redux: Higher-Order Reducers and Async State](http://engineering.blogfoster.com/managing-complexity-in-redux-higher-order-reducers-and-async-state/)\n- [How We Simplified our Tooling Setup for Node.js Projects](http://engineering.blogfoster.com/how-we-simplified-our-tooling-setup-for-node-js-projects/)\n- [How to Use the Power of Jest’s Snapshot Testing Without Using Jest](http://engineering.blogfoster.com/how-to-use-the-power-of-jests-snapshot-testing-without-using-jest/)\n\n### [Bloomberg](https://www.bloomberg.com/)\n\n- [How Bloomberg Used React Native to Develop its new Consumer App](https://www.techatbloomberg.com/blog/bloomberg-used-react-native-develop-new-consumer-app/) (December 15, 2016)\n- [wsk: A Straightforward and Maintainable Build System from the Bloomberg Graphics Team](https://www.techatbloomberg.com/blog/wsk-straightforward-maintainable-build-system-bloomberg-graphics-team/) (December 12, 2017)\n- [10 Insights from Adopting TypeScript at Scale](https://www.techatbloomberg.com/blog/10-insights-adopting-typescript-at-scale/) (November 9, 2020)\n\n### [BuzzFeed](https://www.buzzfeed.com)\n\n- [Micro Frontends at BuzzFeed](https://tech.buzzfeed.com/micro-frontends-at-buzzfeed-b8754b31d178) (September 17, 2019)\n- [Accessible BuzzFeed](https://tech.buzzfeed.com/accessible-buzzfeed-2e1f3f94f352) (August 27, 2020)\n- [CLS at BuzzFeed — Part 1: Raising The Floor](https://tech.buzzfeed.com/improving-cumulative-layout-shift-at-buzzfeed-part-1-8b7ead2381dd) (November 6, 2021)\n- [CLS at BuzzFeed — Part 2: Getting Help From Real Users](https://tech.buzzfeed.com/improving-cumulative-layout-shift-at-buzzfeed-part-2-2a846adeb097) (November 6, 2021)\n- [CLS at BuzzFeed — Part 3: Dealing with the unpredictable](https://tech.buzzfeed.com/improving-cumulative-layout-shift-at-buzzfeed-part-3-3a36240861e4) (November 6, 2021)\n\n### [Campaign Monitor](https://www.campaignmonitor.com/)\n\n- [Fixing bugs with Outlook specific CSS](https://cm.engineering/fixing-bugs-with-outlook-specific-css-f4b8ae5be4f4) (November 9, 2016)\n- [Better video previews for email](https://cm.engineering/better-video-previews-for-email-12432ce71846) (December 20, 2016)\n- [How to test accessibility of emails](https://cm.engineering/how-to-test-accessibility-of-emails-b68fed03f5f4) (June 5, 2018)\n\n### [Carousell](https://carousell.com)\n\n- [How we made Carousell’s mobile web experience 3x faster](https://medium.com/carousell-insider/how-we-made-carousells-mobile-web-experience-3x-faster-bbb3be93e006) (October 31, 2018)\n- Building a Dynamic UI System at Carousell (Feb/Mar 2019): [part 1](https://medium.com/carousell-insider/building-a-dynamic-ui-system-at-carousell-part-1-849c30ceacb9), [part 2](https://medium.com/carousell-insider/building-a-dynamic-ui-system-at-carousell-part-2-d46bba8facaa) and [part 3](https://medium.com/carousell-insider/building-a-dynamic-ui-system-at-carousell-part-3-18a317ac37a1)\n- [An Experiment with JSON Schema](https://medium.com/carousell-insider/an-experiment-with-json-schema-133344ebbf82) (April 18, 2019)\n\n### [cars.com](https://www.cars.com)\n\n- [How Cars.com Developer Mac Heller-Ogden Convinced His Bosses to Adopt Node.js](https://modernweb.com/cars-nodejs) (July 17, 2017)\n\n### [Checkbot](https://www.checkbot.io/)\n\n- [Scalable \u0026 lightweight web screenshots with SVG](https://www.checkbot.io/article/web-page-screenshots-with-svg/) (November 30, 2018)\n\n### [Clearleft](https://clearleft.com)\n\n- [How to use variable fonts in the real world](https://clearleft.com/posts/how-to-use-variable-fonts-in-the-real-world) (January 26, 2018)\n- [A framework for web performance](https://clearleft.com/posts/a-framework-for-web-performance) (September 20, 2018)\n\n### [Cloudflare](https://www.cloudflare.com/)\n\n- [How we built Origin CA: Web Crypto](https://blog.cloudflare.com/how-we-built-origin-ca-web-crypto/) (May 10, 2016)\n- [Open Sourcing CloudFlare’s UI Framework](https://blog.cloudflare.com/cf-ui/) (June 8, 2016)\n- [Going Global - a Localization Case Study at Cloudflare](https://blog.cloudflare.com/going-global-a-localization-case-study-at-cloudflare/) (August 23, 2017)\n- [How we made our page-load optimisations even faster](https://blog.cloudflare.com/making-page-load-even-faster/) (February 2, 2018)\n- [Real URLs for AMP Cached Content Using Cloudflare Workers](https://blog.cloudflare.com/real-urls-for-amp-cached-content-using-cloudflare-workers/) (November 13, 2018)\n- [Fast Google Fonts with Cloudflare Workers](https://blog.cloudflare.com/fast-google-fonts-with-cloudflare-workers/) (November 22, 2018)\n- [Migrating to React land: Gatsby](https://blog.cloudflare.com/migrating-to-react-land-gatsby/) (March 26, 2020)\n- [Moving from reCAPTCHA to hCaptcha](https://blog.cloudflare.com/moving-from-recaptcha-to-hcaptcha/) (April 8, 2020)\n- [Dark Mode for the Cloudflare Dashboard](https://blog.cloudflare.com/dark-mode/) (September 29, 2021)\n\n### [Cloud Four](https://cloudfour.com/)\n\n- [All Mixed Up: Isomorphic Sorting Gone Wrong](https://cloudfour.com/thinks/all-mixed-up-isomorphic-sorting-gone-wrong/) (October 17, 2019)\n\n### [CodeSandbox](https://codesandbox.io/)\n\n- [Lessons learned refactoring Codesandbox.io from Redux to Cerebral](https://medium.com/p/40e9a5646281) (February 7, 2018)\n\n### [Condé Nast](http://www.condenast.com)\n\n- [The Why and How of Google AMP at Condé Nast](https://technology.condenast.com/story/the-why-and-how-of-google-amp-at-conde-nast) (August 29, 2017)\n\n### [Conductor](https://www.conductor.com/)\n\n- [Painless Migration From Backbone to React/Redux](https://www.youtube.com/watch?v=d8oBIzIgVMA) (February 16, 2018)\n\n### [Datadog](https://www.datadoghq.com)\n\n- [Redux-Doghouse – Creating Reusable React-Redux Components Through Scoping](https://www.datadoghq.com/blog/engineering/redux-doghouse-reusable-react-redux-components-through-scoping/) (November 14, 2016)\n- [How Datadog uses Datadog to gain visibility into the Datadog user experience](https://www.datadoghq.com/blog/engineering/how-datadog-uses-datadog-to-gain-visibility-into-the-datadog-user-experience/) (February 22, 2022)\n- [DRUIDS, the Design System that Powers Datadog](https://www.datadoghq.com/blog/engineering/druids-the-design-system-that-powers-datadog/) (September 29, 2022)\n- [Making Fetch Happen - Building a General-purpose Query \u0026 Render Scheduler](https://www.datadoghq.com/blog/engineering/making-fetch-happen-building-a-general-purpose-query-and-render-scheduler/) (April 17, 2023)\n- [How We Migrated Our Acceptance Tests to Use Synthetic Monitoring](https://www.datadoghq.com/blog/engineering/migrating-acceptance-tests-to-synthetic-monitoring/) (June 30, 2023)\n\n### [DAZN](https://dazn.com/)\n\n- [Testing MobX State Tree](https://medium.com/dazn-tech/testing-mobx-state-tree-c588f4bfc430) (December 7, 2018)\n- [Handling complexity in lambda functions](https://medium.com/dazn-tech/handling-complexity-in-lambda-functions-e7acfbeb920a) (February 8, 2019)\n- [Micro-frontends, the future of Frontend architectures](https://medium.com/dazn-tech/micro-frontends-the-future-of-frontend-architectures-5867ceded39a) (April 2, 2019)\n- [Adopting a Micro-frontends architecture](https://medium.com/dazn-tech/adopting-a-micro-frontends-architecture-e283e6a3c4f3) (April 8, 2019)\n- [Orchestrating micro-frontends](https://medium.com/dazn-tech/orchestrating-micro-frontends-a5d2674cbf33) (April 12, 2019)\n- [Jest: Our journey into performant unit tests](https://medium.com/dazn-tech/jest-our-journey-into-performant-unit-tests-a6efcb4bd9b) (April 15, 2019)\n- [Identifying micro-frontends in our applications](https://medium.com/dazn-tech/identifying-micro-frontends-in-our-applications-4b4995f39257) (May 21, 2019)\n\n### [De Voorhoede](https://www.voorhoede.nl)\n\n- [Why our website is faster than yours](https://www.voorhoede.nl/en/blog/why-our-website-is-faster-than-yours) (July 16, 2016)\n\n### [DEV](https://dev.to)\n\n- [App shell UX with service workers and streams](https://github.com/GoogleChrome/web.dev/blob/a64d870f59c25431bbedf0ef06aa635072c43a2e/src/site/content/en/reliable/app-shell-ux-with-service-workers/index.md) (June 23, 2020)\n\n### [Discord](https://discordapp.com/)\n\n- [Using React Native: One Year Later](https://blog.discordapp.com/using-react-native-one-year-later-91fd5e949933) (June 7, 2016)\n- [Lessons from migrating a large codebase to React 16](https://blog.discordapp.com/lessons-from-migrating-a-large-codebase-to-react-16-e60e49102aa6) (October 5, 2017)\n- [Why Discord is Sticking with React Native](https://blog.discordapp.com/why-discord-is-sticking-with-react-native-ccc34be0d427) (July 26, 2018)\n- [How Discord Maintains Performance While Adding Features](https://blog.discordapp.com/how-discord-maintains-performance-while-adding-features-28ddaf044333) (August 2, 2018)\n- [How Discord Handles Two and Half Million Concurrent Voice Users using WebRTC](https://blog.discordapp.com/how-discord-handles-two-and-half-million-concurrent-voice-users-using-webrtc-ce01c3187429) (September 10, 2018)\n- [Investigating Discord’s React Memory Leak](https://blog.discordapp.com/discord-react-memory-leak-565c89763e8) (August 8, 2019)\n- [How Discord achieves native iOS performance with React Native](https://blog.discordapp.com/how-discord-achieves-native-ios-performance-with-react-native-390c84dcd502) (November 7, 2019)\n- [How Discord Implemented App-Wide Keyboard Navigation](https://blog.discord.com/how-discord-implemented-app-wide-keyboard-navigation-abf073fd71de) (December 17, 2020)\n\n### [\u0026lt;div\u0026gt;RIOTS](https://divriots.com)\n\n- [A story of how we migrated to pnpm](https://divriots.com/blog/switching-to-pnpm) (January 18, 2022)\n\n### [DoorDash](https://www.doordash.com)\n\n- [Things to Keep in Mind When Integrating a Map Feature to a Web App](https://doordash.engineering/2020/09/11/integrating-a-map-feature-to-a-web-app/) (Septermber 11, 2020)\n- [Building the Caviar Web Experience Using Reusable React Components on the DoorDash Platform](https://doordash.engineering/2020/09/29/caviar-web-experience-react-components/) (September 29, 2020)\n- [Implementing Theming in DoorDash’s Design Language System](https://doordash.engineering/2020/12/17/design-language-system-theming/) (December 17, 2020)\n- [Serving Multiple Websites and Business Logic From a Single Platform](https://doordash.engineering/2021/02/09/serving-multiple-websites-and-business-logic-from-a-single-platform/) (February 9, 2021)\n- [Managing React State on DoorDash’s Item Modal Using the Class Pattern](https://doordash.engineering/2021/04/21/managing-react-state-using-the-class-pattern/) (April 21, 2021)\n- [Building a Marketing Engineering Platform using Next.js, Cloudflare, and Contentful](https://doordash.engineering/2022/02/22/building-a-marketing-engineering-platform-using-next-js-cloudflare-and-contentful/) (February 22, 2022)\n- [Improving Web Page Performance at DoorDash Through Server-Side Rendering with Next.JS](https://doordash.engineering/2022/03/29/improving-web-page-performance-at-doordash-throughserver-side-rendering-with-next-js/) (March 29, 2022)\n- [Building a Common Web Library for Fast Implementations of Risk Frictions](https://doordash.engineering/2022/03/31/building-a-common-web-library-for-fast-implementations-of-risk-frictions/) (March 31, 2022)\n- [DoorDash’s Lessons on Improving Performance on High-Traffic Web Pages](https://doordash.engineering/2022/08/30/doordashs-lessons-on-improving-performance-on-high-traffic-web-pages/) (August 30, 2022)\n\n### [Dropbox](https://www.dropbox.com)\n\n- [Translating Dropbox](https://blogs.dropbox.com/tech/2011/04/hello-world/) (April 18, 2011)\n- [Some love for JavaScript applications](https://blogs.dropbox.com/tech/2012/08/some-love-for-javascript-applications-2/) (August 31, 2012)\n- [Dropbox dives into CoffeeScript](https://blogs.dropbox.com/tech/2012/09/dropbox-dives-into-coffeescript/) (September 13, 2012)\n- Content Security Policy at Dropbox (September 2015): [On Reporting and Filtering](https://blogs.dropbox.com/tech/2015/09/on-csp-reporting-and-filtering/), [Unsafe-inline and nonce deployment](https://blogs.dropbox.com/tech/2015/09/unsafe-inline-and-nonce-deployment/), [The Unexpected Eval](https://blogs.dropbox.com/tech/2015/09/csp-the-unexpected-eval/), [Third Party Integrations and Privilege Separation](https://blogs.dropbox.com/tech/2015/09/csp-third-party-integrations-and-privilege-separation/)\n- [Enabling HTTP/2 for Dropbox web services: experiences and observations](https://blogs.dropbox.com/tech/2016/05/enabling-http2-for-dropbox-web-services-experiences-and-observations/) (May 11, 2016)\n- [Annotations on Document Previews](https://blogs.dropbox.com/tech/2016/11/annotations-on-document-previews/) (November 30, 2016)\n- [Preventing cross-site attacks using same-site cookies](https://blogs.dropbox.com/tech/2017/03/preventing-cross-site-attacks-using-same-site-cookies/) (March 16, 2017)\n- [Deploying Brotli for static content](https://blogs.dropbox.com/tech/2017/04/deploying-brotli-for-static-content/) (April 6, 2017)\n- [Dropbox Paper: Emojis and Exformation](https://blogs.dropbox.com/tech/2017/11/dropbox-paper-emojis-and-exformation/) (November 15, 2017)\n- [Improving Document Preview Performance](https://blogs.dropbox.com/tech/2017/12/improving-document-preview-performance/) (December 1, 2017)\n- [Migrating from Underscore to Lodash](https://blogs.dropbox.com/tech/2018/09/migrating-from-underscore-to-lodash/) (September 5, 2018)\n- [Redux with Code-Splitting and Type Checking](https://blogs.dropbox.com/tech/2019/07/redux-with-code-splitting-and-type-checking/) (July 16, 2019)\n- [Design Tooling at Scale](https://dropbox.design/article/design-tooling-at-scale) (October 12, 2019)\n- [The Great CoffeeScript to Typescript Migration of 2017](https://dropbox.tech/frontend/the-great-coffeescript-to-typescript-migration-of-2017) (May 13, 2020)\n- [JQuery to React: How we rewrote the HelloSign Editor](https://dropbox.tech/application/jquery-to-react--how-we-rewrote-the-hellosign-editor) (September 30, 2020)\n\n### [eBay](https://www.ebay.com)\n\n- [Data URI Sprites](https://tech.ebayinc.com/engineering/data-uri-sprites/) (July 12, 2011)\n- [The New eBay Motors Homepage is 2X Faster](https://tech.ebayinc.com/engineering/the-new-ebay-motors-homepage-is-2x-faster/) (October 14, 2011)\n- [Five JavaScript Tips for a Sleek User Experience](https://tech.ebayinc.com/engineering/five-javascript-tips-for-a-sleek-user-experience/) (April 16, 2012)\n- [Page Loading and Rendering Optimizations](https://tech.ebayinc.com/engineering/page-loading-and-rendering-optimizations/) (June 22, 2012)\n- [Bandwidth-based Experience](https://tech.ebayinc.com/engineering/bandwidth-based-experience/) (October 10, 2012)\n- [Early Detection of Frontend Single Points of Failure](https://tech.ebayinc.com/engineering/early-detection-of-frontend-single-points-of-failure/) (January 22, 2013)\n- [Front-end Renaissance at eBay](https://tech.ebayinc.com/engineering/front-end-renaissance-at-ebay/) (January 13, 2014)\n- [Yet Another Responsive vs. Adaptive Story](https://tech.ebayinc.com/engineering/yet-another-responsive-vs-adaptive-story/) (March 5, 2014)\n- [Don't Build Pages, Build Modules](https://tech.ebayinc.com/engineering/dont-build-pages-build-modules/) (October 2, 2014)\n- [Async Fragments: Rediscovering Progressive HTML Rendering with Marko](https://tech.ebayinc.com/engineering/async-fragments-rediscovering-progressive-html-rendering-with-marko/) (December 8, 2014)\n- [The Power of Perceived Performance](https://tech.ebayinc.com/engineering/the-power-of-perceived-performance/) (January 5, 2015)\n- [Mobile First - A Retrospective](https://www.ebayinc.com/stories/blogs/tech/mobile-first-a-retrospective/) (May 13, 2015)\n- [How Our CSS Framework Helps Enforce Accessibility](https://www.ebayinc.com/stories/blogs/tech/how-our-css-framework-helps-enforce-accessibility/) (November 4, 2015)\n- [Packaging for Performance](https://tech.ebayinc.com/engineering/packaging-for-performance/) (January 4, 2016)\n- [The Path to JavaScript Next](https://www.ebayinc.com/stories/blogs/tech/the-path-to-javascript-next/) (March 15, 2016)\n- [Browse eBay with Style and Speed](https://tech.ebayinc.com/engineering/browse-ebay-with-style-and-speed/) (June 30, 2016)\n- [Experience the Lightning Bolt](https://tech.ebayinc.com/engineering/experience-the-lightning-bolt/) (September 21, 2016)\n- [Effective Front-End Code Review](https://tech.ebayinc.com/engineering/effective-front-end-code-review/) (March 2, 2017)\n- [Building a UI Component in 2017 and Beyond](https://www.ebayinc.com/stories/blogs/tech/building-a-ui-component-in-2017-and-beyond) (May 3, 2017)\n- [eBay’s Font Loading Strategy](https://www.ebayinc.com/stories/blogs/tech/ebays-font-loading-strategy) (September 21, 2017)\n- [The Future of Marko](https://www.ebayinc.com/stories/blogs/tech/the-future-of-marko/) (October 26, 2017)\n- [Beyond HTTPS](https://www.ebayinc.com/stories/blogs/tech/beyond-https/) (December 13, 2017)\n- [Integration Testing with React and Enzyme](https://tech.ebayinc.com/engineering/integration-testing-with-react-and-enzyme/) (June 26, 2018)\n- [WebAssembly at eBay: A Real-World Use Case](https://www.ebayinc.com/stories/blogs/tech/webassembly-at-ebay-a-real-world-use-case/) (May 22, 2019)\n- [Autofill on Browsers: A Deep Dive](https://tech.ebayinc.com/engineering/autofill-deep-dive/) (December 3, 2019)\n- [Speed By A Thousand Cuts](https://tech.ebayinc.com/engineering/speed-by-a-thousand-cuts/) (January 23, 2020)\n- [Front End Debugging — Tips on Resolving Issues Quickly so You Can Move on to Better Things](https://tech.ebayinc.com/engineering/front-end-debugging-tips-on-resolving-issues-quickly-so-you-can-move-on-to-better-things/) (April 7, 2020)\n- [Auto Effect Pattern with Redux and React Hooks](https://tech.ebayinc.com/engineering/auto-effect-pattern-with-redux-and-react-hooks/) (April 15, 2020)\n\n### [EdgeDB](https://www.edgedb.com)\n\n- [An approach to optimizing TypeScript type checking performance](https://www.edgedb.com/blog/an-approach-to-optimizing-typescript-type-checking-performance#the-next-generation-of-performance-tools) (August 8, 2024)\n\n### [Electronic Arts](https://www.ea.com)\n\n- [Building UI at Enterprise Scale with Web Components](https://youtu.be/FJ2KEvzlyo4) (August 22, 2017)\n\n### [Ele.me](https://www.ele.me)\n\n- [Upgrading Ele.me to Progressive Web App](https://medium.com/elemefe/upgrading-ele-me-to-progressive-web-app-2a446832e509) (May 6, 2017)\n\n### [Etsy](https://www.etsy.com)\n\n- [Localizing Logically for a Global Marketplace](https://codeascraft.com/2011/10/21/localizing-logically-for-a-global-marketplace/) (October 21, 2011)\n- [Multilingual User Generated Content and SEO](https://codeascraft.com/2011/12/02/multilingual-user-generated-content-and-seo/) (December 2, 2011)\n- [Measuring Front-end Performance With Real Users](https://codeascraft.com/2012/11/29/measuring-front-end-performance-with-real-users/) (November 29, 2012)\n- [Responsive emails that really work](https://codeascraft.com/2014/03/13/responsive-emails-that-really-work/) (March 13, 2014)\n- [Transitioning to SCSS at Scale](https://codeascraft.com/2015/02/02/transitioning-to-scss-at-scale/) (February 2, 2015)\n- [Rebuilding the Foundation of Etsy’s Seller Tools](https://codeascraft.com/2015/02/05/rebuilding-the-foundation-of-etsy-seller-tools/) (February 5, 2015)\n- [How Etsy Formats Currency](https://codeascraft.com/2016/04/19/how-etsy-formats-currency/) (April 19, 2016)\n- [SEO Title Tag Optimization at Etsy: Experimental Design and Causal Inference](https://codeascraft.com/2016/10/25/seo-title-tag-optimization/) (October 25, 2016)\n- [Optimizing Meta Descriptions, H1s and Title Tags: Lessons from Multivariate SEO Testing at Etsy](https://codeascraft.com/2017/01/25/optimizing-meta-descriptions-h1s-and-title-tags-lessons-from-multivariate-seo-testing-at-etsy/) (January 25, 2017)\n- [Reducing Image File Size at Etsy](https://codeascraft.com/2017/05/30/reducing-image-file-size-at-etsy/) (May 30, 2017)\n- [How Etsy Localizes Addresses](https://codeascraft.com/2018/09/26/how-etsy-localizes-addresses/) (September 26, 2018)\n- [Developing in a Monorepo While Still Using Webpack](https://codeascraft.com/2020/04/06/developing-in-a-monorepo-while-still-using-webpack/) (April 6, 2020)\n- [The journey to fast production asset builds with Webpack](https://codeascraft.com/2020/02/03/production-webpack-builds/) (February 3, 2020)\n- [Etsy’s Journey to TypeScript](https://codeascraft.com/2021/11/08/etsys-journey-to-typescript) (November 8, 2021)\n\n### [Evil Martians](https://evilmartians.com/)\n\n- [Is React Native podium-ready?](https://evilmartians.com/chronicles/is-react-native-podium-ready) (May 14, 2018)\n\n### [Expedia Group](https://www.expediagroup.com)\n\n- [Scoping A/B Test Code in React](https://medium.com/expedia-group-tech/a-b-testing-and-the-cloak-of-invisibility-a-better-way-to-scope-variant-code-in-your-react-app-902a68a0c2c3) (September 4, 2018)\n- [Profiling React Server-Side Rendering to Free the Node.js Event Loop](https://medium.com/expedia-group-tech/profiling-react-server-side-rendering-to-free-the-node-js-event-loop-7f0fe455a901) (February 18, 2019)\n- [Creating Your Own Apollo Cache for Perf and Profit](https://medium.com/expedia-group-tech/creating-your-own-apollo-cache-for-perf-and-profit-8f786849e5f6) (February 7, 2019)\n- [Optimizing a Page: Resource Hints, Critical CSS, and Webpack](https://medium.com/expedia-group-tech/optimize-a-page-resource-hint-critical-css-webpack-c8cc7319fb87) (March 20, 2019)\n- [Contextual and Consistent Analytic Events in React](https://medium.com/expedia-group-tech/contextual-and-consistent-analytic-event-triggering-in-react-40b48b15739e) (April 22, 2019)\n- [Minimizing DOM Nodes for Performance](https://medium.com/expedia-group-tech/minimizing-dom-nodes-for-performance-57f347df4c72) (September 24, 2019)\n- [Web Performance vs. User Engagement](https://medium.com/expedia-group-tech/web-performance-vs-user-engagement-7eda84f6436b) (October 31, 2019)\n- [Migrating to WKWebView](https://medium.com/expedia-group-tech/migrating-to-wkwebview-d5b6d0e52c4f) (December 11, 2019)\n- [A (Small) Case for Function-Based React Components](https://medium.com/expedia-group-tech/a-small-case-for-function-based-react-components-2939cd8df975) (December 10, 2019)\n- [Measuring Interaction Performance with FPS Data](https://medium.com/expedia-group-tech/measuring-interaction-performance-with-fps-data-b0eee1d102c4) (December 16, 2019)\n- [File Upload with GraphQL, Apollo Server, Hapi 18+, and React](https://medium.com/expedia-group-tech/file-upload-with-graphql-apollo-server-hapi-18-and-react-2390e297619d) (January 16, 2020)\n- [Web Applications: Analyzing Client-Side Performance](https://medium.com/expedia-group-tech/web-applications-analyzing-client-side-performance-37e9cc4ad86b) (January 7, 2020)\n- [Schema Driven UIs](https://medium.com/expedia-group-tech/schema-driven-uis-dd8fdb516120) (January 23, 2020)\n- [Responsive Accessibility Guidelines at Expedia.com](https://medium.com/expedia-group-tech/responsive-accessibility-guidelines-at-expedia-com-cc1184c4f271) (February 27, 2020)\n- [12 Tips to Improve Client Side Page Performance](https://medium.com/expedia-group-tech/12-tips-to-improve-client-side-page-performance-88c7bec27933) (April 28, 2020)\n- [Using Webpack Module Federation to Create an App Shell](https://medium.com/expedia-group-tech/using-webpack-module-federation-to-share-an-app-shell-7d23633510e) (June 10, 2020)\n- [CSS-in-JS: An Investigation](https://medium.com/expedia-group-tech/css-in-js-an-investigation-39338a1057db) (July 7, 2020)\n- [Multi-Variate Web Optimisation Using Linear Contextual Bandits](https://medium.com/expedia-group-tech/multi-variate-web-optimisation-using-linear-contextual-bandits-567f563cb59) (September 1, 2020)\n- [How Expedia.com Uses Accessibility Automation](https://medium.com/expedia-group-tech/how-expedia-com-uses-accessibility-automation-d3de3e3ff775) (October 1, 2020)\n- [Sizing Android WebView iframes with JavaScript](https://medium.com/expedia-group-tech/sizing-android-webview-iframes-with-javascript-abae73fe6602) (April 27, 2021)\n\n### [ezCater](https://www.ezcater.com/)\n\n- [The case against React snapshot testing](https://engineering.ezcater.com/the-case-against-react-snapshot-testing) (June 27, 2019)\n- [Saying goodbye to emotion](https://engineering.ezcater.com/saying-goodbye-to-emotion) (June 1, 2021)\n\n### [Facebook](https://facebook.com)\n\n- [Building the F8 App with React Native](http://makeitopen.com)\n- [BigPipe: Pipelining web pages for high performance](https://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919/) (June 4, 2010)\n- [Facebook has 30,000 react components. How do you manage large project directories with many components?](https://www.reddit.com/r/reactjs/comments/6al7h2/facebook_has_30000_react_components_how_do_you/dhgruqh/) (December 31, 2013)\n- [The technology behind preview photos](https://code.facebook.com/posts/991252547593574/the-technology-behind-preview-photos/) (August 6, 2015)\n- [Improving CSS quality at Facebook and beyond](https://code.fb.com/open-source/improving-css-quality-at-facebook-and-beyond/) (June 13, 2016)\n- [This browser tweak saved 60% of requests to Facebook](https://code.facebook.com/posts/557147474482256) (January 26, 2017)\n- [Building High-Quality JavaScript Tools](https://youtu.be/PvabBs_utr8) (June 2, 2017)\n- [React 16: A look inside an API-compatible rewrite of our frontend UI library](https://code.facebook.com/posts/1716776591680069) (September 26, 2017)\n- [Design Systems \u0026 Tools at Facebook](https://vimeo.com/242899818) (November 15, 2017)\n- [Behind the Scenes: Improving the React Repository Infrastructure](https://reactjs.org/blog/2017/12/15/improving-the-repository-infrastructure.html) (December 15, 2017)\n- [Faster input events with Facebook’s first browser API contribution](https://code.fb.com/developer-tools/isinputpending-api/) (April 22, 2019)\n- [Building the New facebook.com with React, GraphQL and Relay](https://developers.facebook.com/videos/2019/building-the-new-facebookcom-with-react-graphql-and-relay/) (April 30, 2019)\n- [Rebuilding our tech stack for the new Facebook.com](https://engineering.fb.com/web/facebook-redesign/) (May 8, 2020)\n- [Making Facebook.com accessible to as many people as possible](https://engineering.fb.com/web/facebook-com-accessibility/) (July 30, 2020)\n\n### [FARFETCH](https://www.farfetch.com)\n\n- [The need for speed — 1: measuring today’s web performance](https://www.linkedin.com/pulse/need-speed-1-measuring-todays-web-performance-manuel-garcia/) (February 19, 2019)\n- [The need for speed — 2: call for metrics](https://www.linkedin.com/pulse/need-speed-2-call-metrics-manuel-garcia/) (February 19, 2019)\n- [How to build a performance culture at scale](https://www.linkedin.com/pulse/how-build-performance-culture-scale-manuel-garcia/) (September 11, 2019)\n- [One less second for the page, one giant leap for the business](https://www.linkedin.com/pulse/one-less-second-page-giant-leap-business-manuel-garcia) (July 2, 2020)\n- [GraphQL sessions: powering farfetch.com](https://farfetchtech.medium.com/graphql-sessions-powering-farfetch-com-305e7c0901e7) (May 6, 2022)\n\n### [fastq.bio](http://www.fastq.bio/)\n\n- [How We Used WebAssembly To Speed Up Our Web App By 20X](https://www.smashingmagazine.com/2019/04/webassembly-speed-web-app/) (April 5, 2019)\n\n### [Figma](https://www.figma.com)\n\n- [Building a professional design tool on the web](https://www.figma.com/blog/building-a-professional-design-tool-on-the-web/) (December 7, 2015)\n- [Debugging Data Corruption with Emscripten](https://www.figma.com/blog/debugging-data-corruption-with-emscripten/) (November 7, 2016)\n- [WebAssembly cut Figma’s load time by 3x](https://blog.figma.com/webassembly-cut-figmas-load-time-by-3x-76f3f2395164) (June 8, 2017)\n- [Introducing BrowserView for Electron](https://www.figma.com/blog/introducing-browserview-for-electron/) (June 29, 2017)\n- [Introducing: Figma to React](https://www.figma.com/blog/introducing-figma-to-react/) (April 26, 2018)\n- [Figma, faster 🏎](https://www.figma.com/blog/figma-faster/) (August 13, 2018)\n- [How to build a plugin system on the web and also sleep well at night](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/) (August 22, 2019)\n- [React at 60fps: improving scrolling comments in Figma](https://www.figma.com/blog/improving-scrolling-comments-in-figma/) (August 19, 2020)\n- [Inside Figma: a case study on strict null checks](https://www.figma.com/blog/inside-figma-a-case-study-on-strict-null-checks/#what-are-strict-null-checks) (December 17, 2020)\n- [Illuminating dark mode](https://www.figma.com/blog/illuminating-dark-mode) (July 21, 2022)\n- [The evolution of Figma’s mobile engine: Compiling away our custom programming language](https://www.figma.com/blog/figmas-journey-to-typescript-compiling-away-our-custom-programming-language/) (May 1, 2024)\n\n### [Financial Times](https://www.ft.com)\n\n- [Building The New Financial Times Web App](https://www.smashingmagazine.com/2013/05/building-the-new-financial-times-web-app-a-case-study) (May 23, 2013)\n- [Free-market software development](http://matt.chadburn.co.uk/notes/teams-as-services.html) (August 21, 2015)\n- [SVG icons are easy but the fallbacks aren't](https://www.maketea.co.uk/2015/12/14/svg-icons-are-easy-but-the-fallbacks-arent.html) (December 1, 2015)\n- [A faster FT.com](https://medium.com/ft-product-technology/a-faster-ft-com-10e7c077dc1c) (April 4, 2016)\n- [YES, your site too can (and should) be accessible](https://www.youtube.com/watch?v=H4FzW9oFObs) (May 23, 2017)\n- [Improving the cache performance of The Polyfill Service](https://jakechampion.name/posts/2017-06-09-improving-the-cache-performance-of-the-polyfill-service/) (June 9, 2017)\n- [Can't You Just Make It More like Bootstrap?](https://vimeo.com/226575101) (July 22, 2017)\n- [Speeding up without slowing down](https://ldnwebperf.org/sessions/speeding-up-without-slowing-down/) (November 7, 2017)\n- [What happens when you visit ft.com?](https://medium.com/ft-product-technology/making-a-request-to-the-financial-times-b2119a2f422d) (November 24, 2017)\n- [Tips for in-house teams in a free market software culture](https://medium.com/ft-product-technology/tips-for-in-house-teams-in-a-free-market-software-culture-d18ba80c8c4) (January 30, 2018)\n- [An outbreak of Accessibility anti-patterns](https://medium.com/ft-product-technology/an-outbreak-of-accessibility-anti-patterns-e73577242ee8) (May 18, 2018)\n- [This one line of Javascript made FT.com 10 times slower](https://medium.com/ft-product-technology/this-one-line-of-javascript-made-ft-com-10-times-slower-5afb02bfd93f) (July 16, 2018)\n- [Improving the cache performance of The Polyfill Service even more](https://jakechampion.name/posts/improving-the-cache-performance-of-the-polyfill-service-even-more/) (January 21, 2019)\n- [Designing a sustainable front-end toolset for FT.com](https://medium.com/ft-product-technology/designing-a-sustainable-front-end-toolset-for-ft-com-f37c59d27eeb) (April 27, 2020)\n- [Animating list reordering with React Hooks](https://medium.com/ft-product-technology/animating-list-reordering-with-react-hooks-1aa0d78a24dc) (August 26, 2020)\n- [Taming Webpackʼs content hashes](https://www.matthinchliffe.dev/2020/06/03/taming-webpacks-content-hashes.html) (June 3, 2020)\n\n### [Flickr](https://www.flickr.com/)\n\n- [Lessons Learned from the Flickr Touch Lightbox](http://code.flickr.net/2011/07/20/lessons-learned-from-the-flickr-touch-lightbox/) (July 20, 2011)\n- [Creating an interface for geofences](http://code.flickr.net/2011/09/06/creating-an-interface-for-geofences/) (September 6, 2011)\n- [Raising the bar on web uploads](http://code.flickr.net/2012/04/25/raising-the-bar-on-web-uploads/) (April 25, 2012)\n- [Building an HTML5 Photo Editor](http://code.flickr.net/2012/04/18/building-an-html5-photo-editor/) (April 18, 2012)\n- [Building The Flickr Web Uploadr: The Grid](http://code.flickr.net/2012/05/11/building-the-flickr-web-uploadr-the-grid/) (May 11, 2012)\n- [Parsing Exif client-side using JavaScript](http://code.flickr.net/2012/06/01/parsing-exif-client-side-using-javascript-2/) (June 1, 2012)\n- [Adventures in Jank Busting: Parallax, performance, and the new Flickr Home Page](http://code.flickr.net/2013/06/04/adventures-in-jank-busting-parallax-performance-and-the-new-flickr-home-page/) (June 4, 2013)\n- [Building Flickr’s new Hybrid Signed-Out Homepage](http://code.flickr.net/2014/04/23/building-flickrs-new-hybrid-signed-out-homepage/) (April 23, 2014)\n- [Perceptual Image Compression at Flickr](http://code.flickr.net/2015/09/25/perceptual-image-compression-at-flickr/) (September 25, 2015)\n- [Introducing yakbak: Record and playback HTTP interactions in NodeJS](http://code.flickr.net/2016/04/25/introducing-yakbak-record-and-playback-http-interactions-in-nodejs/) (April 25, 2016)\n\n### [Flipboard](https://flipboard.com)\n\n- [Layout in Flipboard for Web and Windows](https://engineering.flipboard.com/2014/03/web-layouts) (March 24, 2014)\n- [60 FPS on the mobile web](https://engineering.flipboard.com/2015/02/mobile-web) (February 10, 2015)\n\n### [Flipkart](https://www.flipkart.com)\n\n- [Building Flipkart Lite: A Progressive Web App](https://medium.com/progressive-web-apps/building-flipkart-lite-a-progressive-web-app-2c211e641883) (November 11, 2015)\n\n### [Flocktory](https://www.flocktory.com)\n\n- [Third party libraries](http://slonoed.net/third-party-js) (May 22, 2017)\n\n### [Futurice](https://futurice.com)\n\n- [How Elm made our work better](https://futurice.com/blog/elm-in-the-real-world) (November 1, 2016)\n\n### [Garbarino](https://www.garbarino.com/)\n\n- [Building a PWA in Argentina](https://medium.com/@leopittelli/building-a-pwa-in-argentina-3ac669eabbeb) (July 24, 2017)\n\n### [GitHub](https://github.com)\n\n- [GitHub's CSS](https://markdotto.com/blog/githubs-css/) (July 23, 2014)\n- [How GitHub is using Web Components in production](https://www.webcomponents.org/community/articles/interview-with-joshua-peek) (September 30, 2014)\n- [Browser Monitoring for GitHub.com](https://githubengineering.com/browser-monitoring-for-github-com/) (May 19, 2015)\n- [GitHub's CSP journey](https://githubengineering.com/githubs-csp-journey/) (April 12, 2016)\n- [GitHub's post-CSP journey](https://githubengineering.com/githubs-post-csp-journey/) (January 19, 2017)\n- [Shipping system fonts to GitHub.com](https://markdotto.com/blog/github-system-fonts/) (February 7, 2018)\n- [Design Systems at GitHub](https://medium.com/@broccolini/design-systems-at-github-c8e5378d2542) (July 6, 2018)\n- [Removing jQuery from GitHub.com frontend](https://githubengineering.com/removing-jquery-from-github-frontend/) (September 6, 2018)\n- [From 48k lines of code to 10—the story of GitHub’s JavaScript SDK](https://github.blog/2020-04-09-from-48k-lines-of-code-to-10-the-story-of-githubs-javascript-sdk) (April 9, 2020)\n- [How we built the GitHub globe](https://github.blog/2020-12-21-how-we-built-the-github-globe/) (December 21, 2020)\n- [How GitHub Actions renders large-scale logs](https://github.blog/2021-03-25-how-github-actions-renders-large-scale-logs/) (March 25, 2021)\n\n### [GitLab](https://gitlab.com)\n\n- [Why We Chose Vue.js](https://youtu.be/ioogrvs2Ejc) (December 1, 2016)\n- [Our big Frontend plan revealed](https://about.gitlab.com/2017/02/06/vue-big-plan/) (February 6, 2017): long term plan to make GitLab as fast and performant as possible with Vue and webpack\n- [How we do Vue: one year later](https://about.gitlab.com/2017/11/09/gitlab-vue-one-year-later/) (November 9, 2017)\n- [How GitLab switched to Headless Chrome for testing](https://about.gitlab.com/2017/12/19/moving-to-headless-chrome) (December 19, 2017)\n- [Our journey in switching to native Unicode emoji](https://about.gitlab.com/blog/2018/05/30/journey-in-native-unicode-emoji/) (May 30, 2018)\n- [How we iterated and improved our frontend team culture](https://about.gitlab.com/2018/06/26/iterating-improving-frontend-culture/) (June 26, 2018)\n- [Why we chose ECharts for data visualizations](https://about.gitlab.com/2019/09/30/why-we-chose-echarts/) (September 30, 2019)\n- [How GitLab Pages made our Sketch design handoffs easier and faster](https://about.gitlab.com/blog/2019/11/07/how-gitlab-pages-made-our-sketch-design-handoffs-easier-and-faster/) (November 7, 2019)\n- [How we created a dark UI for GitLab's Web IDE](https://about.gitlab.com/blog/2020/05/20/creating-a-dark-ui-for-gitlabs-web-ide/) (May 20, 2020)\n\n### [Goibibo](https://www.goibibo.com)\n\n- [How Goibibo's PWA improved conversions by 60%](https://web.dev/goibibo/) (September 29, 2020)\n\n### [Google](https://google.com)\n\n- [Designing very large (JavaScript) applications](https://medium.com/@cramforce/designing-very-large-javascript-applications-6e013a3291a3) (April 15, 2018)\n- [Building the Google Photos Web UI](https://medium.com/google-design/google-photos-45b714dfbed1) (July 10, 2018)\n- [TypeScript at Google](http://neugierig.org/software/blog/2018/09/typescript-at-google.html) (September 1, 2018)\n- [The Chrome Dev Summit site: case study](https://dev.to/chromiumdev/the-chrome-dev-summit-site-case-study-15ng) (March 12,2019)\n- [The new AdWords UI uses Dart — we asked why](https://news.dartlang.org/2016/03/the-new-adwords-ui-uses-dart-we-asked.html) (March 31, 2016)\n- [A Recipe for Designing Animations — Without Sacrificing Performance](https://medium.com/google-design/a-streamlined-workflow-for-performative-animations-be0a6ff3df7a) (June 4, 2019)\n- [Bringing service workers to Google Search](https://web.dev/google-search-sw/) (June 20, 2019)\n- [How we built the Chrome DevTools WebAuthn tab](https://developer.chrome.com/blog/webauthn-tab/) (October 22, 2020)\n- [Migrating Puppeteer to TypeScript](https://developers.google.com/web/updates/2021/01/puppeteer-typescript) (January 21, 2021)\n- [DevTools architecture refresh: migrating DevTools to TypeScript](https://developer.chrome.com/blog/migrating-to-typescript/) (April 8, 2021)\n- [Implementing CSP and Trusted Types debugging in Chrome DevTools](https://developer.chrome.com/en/blog/csp-issues/) (November 1, 2021)\n- [Why Google Sheets ported its calculation worker from JavaScript to WasmGC](https://web.dev/case-studies/google-sheets-wasmgc) (June 26, 2024)\n\n### [GOV.UK](https://www.gov.uk)\n\n- [Accessibility for developers: building a frontend that everyone can use](https://frontendne.co.uk/talks/accessibility-for-developers-building-a-frontend-that-everyone-can-use) (October 6, 2016)\n- [Patterns for accessible webchats](https://accessibility.blog.gov.uk/2016/12/09/patterns-for-accessible-webchats) (December 9, 2016)\n- [How to create content that works well with screen readers](https://accessibility.blog.gov.uk/2017/02/08/advice-for-creating-content-that-works-well-with-screen-readers) (February 8, 2017)\n- [How we’ve made GOV.UK Elements even more accessible](https://accessibility.blog.gov.uk/2018/02/28/how-weve-made-gov-uk-elements-even-more-accessible) (February 28, 2018)\n- [What we learned from getting our autocomplete tested for accessibility](https://accessibility.blog.gov.uk/2018/05/15/what-we-learned-from-getting-our-autocomplete-tested-for-accessibility) (May 15, 2018)\n- [Accessibility lessons: dealing with a large amount of form inputs](https://accessibility.blog.gov.uk/2019/04/08/accessibility-lessons-dealing-with-a-large-amount-of-form-inputs) (April 8, 2019)\n- [Why the GOV.UK Design System team changed the input type for numbers](https://technology.blog.gov.uk/2020/02/24/why-the-gov-uk-design-system-team-changed-the-input-type-for-numbers/) (February 24, 2020)\n- [Why videos on GOV.UK use the YouTube video player](https://accessibility.blog.gov.uk/2020/03/16/why-videos-on-gov-uk-use-the-youtube-video-player/) (March 16, 2020)\n- [How we reduced CSS size and improved performance across GOV.UK](https://gds.blog.gov.uk/2023/12/15/how-we-reduced-css-size-and-improved-performance-across-gov-uk/) (December 15, 2023)\n\n### [grammarly](https://www.grammarly.com)\n\n- [Building Browser Extensions At Scale](https://web.archive.org/web/20190304201001/https://tech.grammarly.com/blog/building-browser-extensions-at-scale) (October 6, 2017)\n- [Introducing Embrace: A Framework for Building Declarative UIs](https://www.grammarly.com/blog/engineering/introducing-embrace/) (September 3, 2021)\n- Under the Hood of the Grammarly Editor: [Real-Time Collaborative Text Editing](https://www.grammarly.com/blog/engineering/real-time-collaborative-text-editing/) and [How Suggestions Work](https://www.grammarly.com/blog/engineering/how-suggestions-work-grammarly-editor/) (April 22, 2022)\n- [Making Grammarly Feel Native On Every Website](https://www.grammarly.com/blog/engineering/making-grammarly-feel-native-on-every-website/) (March 7, 2022)\n- How Grammarly Tackles Hidden Complexity in Front-End Applications: [part 1](https://www.grammarly.com/blog/engineering/part-1-how-grammarly-tackles-hidden-complexity-in-front-end-applications/) and [part 2](https://www.grammarly.com/blog/engineering/part-2-how-grammarly-tackles-hidden-complexity-in-front-end-applications/) (March 7, 2022)\n- [Signals With @grammarly/focal](https://www.grammarly.com/blog/engineering/signals-with-focal-library/) (August 21, 2023)\n\n### [Gusto](https://gusto.com/)\n\n- [Scaling Front-end Architecture](https://engineering.gusto.com/gusto-tech-talk-scaling-front-end-architecture/) (June 10, 2016)\n- [Evolving JavaScript Part 1: Goodbye Backbone](https://engineering.gusto.com/evolving-javascript-part-1-goodbye-backbone/) (July 12, 2016)\n- [Evolving JavaScript Part 2: Hello React](https://engineering.gusto.com/evolving-javascript-part-2-hello-react/) (July 12, 2016)\n- [Evolving JavaScript Part 3: Building a React Application](https://engineering.gusto.com/evolving-javascript-part-3-building-a-react-application/) (July 12, 2016)\n- [Taking off with Apollo](https://engineering.gusto.com/taking-off-with-apollo/) (September 12, 2018)\n- [How I fell out of love with HOCs](https://engineering.gusto.com/how-i-fell-out-of-love-with-hocs/) (December 9, 2018)\n\n### [HealthCare.gov](https://www.healthcare.gov/)\n\n- [Building a design system for HealthCare.gov](https://blog.navapbc.com/building-a-design-system-for-healthcare-gov-20dc1a833ab3) (August 29, 2017)\n\n### [Heap](https://heap.io)\n\n- [Goodbye CoffeeScript, Hello TypeScript](https://heap.io/blog/engineering/goodbye-coffeescript-hello-typescript) (October 7, 2015)\n- [Migrating To React + MobX While Shipping New Features](https://heap.io/blog/engineering/migrating-react-mobx-while-shipping-new-features) (August 16, 2017)\n- [How We Write Front-end Code](https://heap.io/blog/engineering/how-we-write-front-end-code) (February 20, 2018)\n- [Redesigning Heap Without a Feature Branch](https://heap.io/blog/engineering/redesigning-heap-without-a-feature-branch) (April 10, 2019)\n- [How we failed, then succeeded, at migrating to TypeScript](https://heap.io/blog/engineering/migrating-to-typescript) (October 10, 2019)\n- [How we leveraged ASTs and Babel to capture everything on React Native apps](https://heap.io/blog/engineering/how-we-leveraged-asts-and-babel-to-capture-everything-on-react-native-apps) (June 23, 2020)\n\n### [in der Apotheke](https://www.inderapotheke.de/)\n\n- [Farewell, Google Maps](https://www.inderapotheke.de/blog/farewell-google-maps) (July 18, 2018)\n\n### [Infinite Red](https://infinite.red/)\n\n- [Switching from Ava to Jest for TypeScript](https://shift.infinite.red/switching-from-ava-to-jest-for-typescript-a6dac7d1712f) (November 6, 2017)\n- [Using TypeScript to upgrade Ignite without losing my mind](https://shift.infinite.red/using-typescript-to-upgrade-ignite-without-losing-my-mind-352d8076d331) (March 20, 2019)\n- [Yarn 1 vs Yarn 2 vs NPM](https://shift.infinite.red/yarn-1-vs-yarn-2-vs-npm-a69ccf0229cd) (February 6, 2020)\n- [Why Infinite Red uses MobX-State-Tree instead of Redux](https://shift.infinite.red/why-infinite-red-uses-mobx-state-tree-instead-of-redux-d6c1407dead) (June 16, 2020)\n\n### [Insider Inc.](https://www.insider-inc.com/)\n\n- [How to style different sites with one CSS collection](https://medium.com/insider-inc-engineering/how-to-style-different-sites-with-one-css-collection-6f33126d4cdb) (December 17, 2018)\n- [Why we got rid of all our front-end and back-end engineers](https://medium.com/insider-inc-engineering/why-we-got-rid-of-all-our-front-end-and-back-end-engineers-f9c06034548) (February 13, 2019)\n- [Delightful ways to write reusable CSS using subclasses](https://medium.com/insider-inc-engineering/delightful-ways-to-write-reusable-css-using-subclasses-903e90c9cf87) (March 1 , 2019)\n\n### [Instagram](https://www.instagram.com/)\n\n- [React Native at Instagram](https://instagram-engineering.com/react-native-at-instagram-dd828a9a90c7) (February 7, 2017)\n- Making Instagram.com faster: [part 1](https://instagram-engineering.com/making-instagram-com-faster-part-1-62cc0c327538) (August 1, 2019), [part 2](https://instagram-engineering.com/making-instagram-com-faster-part-2-f350c8fba0d4) (September 6, 2019), [part 3](https://instagram-engineering.com/making-instagram-com-faster-part-3-cache-first-6f3f130b9669) (October 11, 2019), [part 4](https://instagram-engineering.com/making-instagram-com-faster-code-size-and-execution-optimizations-part-4-57668be796a8) (November 1, 2019)\n\n### [Internet Archive](https://archive.org/)\n\n- [Pixels vs. Ems: Users DO Change Font Size](https://medium.com/@vamptvo/pixels-vs-ems-users-do-change-font-size-5cfb20831773) (June 13, 2018)\n\n### [Intuit](https://www.intuit.com)\n\n- [Making Accessibility an Integral Part of the Creative Workflow](https://medium.com/blueprint-by-intuit/making-accessibility-an-integral-part-of-the-creative-workflow-ca78767dd05b) (April 15, 2018)\n- [TurboTax Live’s Approach to a Gender-Neutral Design System](https://medium.com/blueprint-by-intuit/turbotax-lives-approach-to-a-gender-neutral-design-system-bed0c45ece44) (February 21, 2019)\n- [Delivering Consistent Animations with a Design System Library](https://medium.com/blueprint-by-intuit/delivering-consistent-animations-with-a-design-system-library-323f29f5efc6) (April 25, 2019)\n- [GraphQL: Intuit’s Path to ONE API System](https://medium.com/blueprint-by-intuit/graphql-intuits-path-to-one-api-system-b8495e4dd281) (March 13, 2019)\n\n### [InVision](https://www.invisionapp.com)\n\n- [Sharing ESLint Across Teams](https://engineering.invisionapp.com/post/sharing-eslint-across-teams/) (April 5, 2016)\n- [Optimizing Webpack for Faster React Builds](https://engineering.invisionapp.com/post/optimizing-webpack/) (April 12, 2016)\n- [Persist Redux State by Using Sagas](https://engineering.invisionapp.com/post/persist-redux-state-by-using-sagas/) (April 26, 2016)\n- [Testing Our Shared ESLint Configs](https://engineering.invisionapp.com/post/testing-eslint/) (May 12, 2016)\n- [How ESLint Saved Our Soul](https://engineering.invisionapp.com/post/how-eslint-saved-our-soul/) (August 12, 2016)\n- [React Performance Tune-Up](https://engineering.invisionapp.com/post/react-performance-tune-up/) (September 23, 2016)\n- [Building the inspect measurement engine](https://engineering.invisionapp.com/post/building-the-inspect-measurement-engine) (July 17, 2019)\n\n### [Khan Academy](http://khanacademy.org/)\n\n- [Babel in Khan Academy's i18n Toolchain](http://engineering.khanacademy.org/posts/i18n-babel-plugin.htm) (June 22, 2015)\n- [Fun with slope fields, css and react](http://engineering.khanacademy.org/posts/fun-with-slopfields.htm) (August 5, 2015)\n- [Copy-pasting more than just text](http://engineering.khanacademy.org/posts/copy-pasting-more-than-just-text.htm) (August 31, 2015)\n- [i18nize-templates: Internationalization After the Fact](http://engineering.khanacademy.org/posts/i18nize-templates.htm) (September 28, 2015)\n- [Schrödinger's deploys no more: how we update translations](http://engineering.khanacademy.org/posts/translation-server.htm) (October 12, 2015)\n- [Forgo JS packaging? Not so fast](http://engineering.khanacademy.org/posts/js-packaging-http2.htm) (November 23, 2015)\n- [Inline CSS at Khan Academy: Aphrodite](http://engineering.khanacademy.org/posts/aphrodite-inline-css.htm) (March 29, 2016)\n- [Migrating to a Mobile Monorepo for React Native](http://engineering.khanacademy.org/posts/react-native-monorepo.htm) (May 29, 2017)\n- [Creating Query Components with Apollo](http://engineering.khanacademy.org/posts/creating-query-components-with-apollo.htm) (June 12, 2017)\n- [tota11y - an accessibility visualization toolkit](http://engineering.khanacademy.org/posts/tota11y.htm) (April 15, 2018)\n\n### [Kickstarter](https://www.kickstarter.com/)\n\n- [Namespacing Actions for Redux](https://kickstarter.engineering/namespacing-actions-for-redux-d9b55a88b1b1) (November 20, 2017)\n\n### [Klarna](https://www.klarna.com)\n\n- [Migrating from Rails’ asset pipeline to Node’s webpack](https://engineering.klarna.com/migrating-from-rails-asset-pipeline-to-node-s-webpack-684230e3a93a) (January 2, 2016)\n- [How removing caching improved mobile performance by 25%](https://engineering.klarna.com/how-removing-caching-improved-mobile-performance-by-25-52a17cc339a2) (January 10, 2017)\n- [Improving Communication and Confidence with Visual Snapshot Testing](https://engineering.klarna.com/improving-communication-and-confidence-with-visual-snapshot-testing-b04154c3aaf0) (March 14, 2017)\n- [6 Lessons learned from optimizing the performance of a Node.js service](https://engineering.klarna.com/6-lessons-learned-from-optimizing-the-performance-of-a-node-js-service-f163cac20473) (January 9, 2020)\n\n### [Line](https://line.me)\n\n- [LINE MANGA: Smooth page transition with Page Stack](https://engineering.linecorp.com/en/blog/detail/200) (January 18, 2018)\n- [Easy code-splitting with grow-loader](https://engineering.linecorp.com/en/blog/detail/235) (January 24, 2018)\n\n### [LinkedIn](https://www.linkedin.com)\n\n- [Bringing a Modern Javascript Build Pipeline to LinkedIn](https://engineering.linkedin.com/blog/2016/01/smashing-the-monolith) (January 20, 2016)\n- [Sleek and Fast: Speeding Up your Fat Web Client](https://engineering.linkedin.com/blog/2017/10/sleek-and-fast--speeding-up-your-fat-web-client) (October 19, 2017)\n- [The Glimmer Binary Experience](https://engineering.linkedin.com/blog/2017/12/the-glimmer-binary-experience) (December 7, 2017)\n- [Ember Timer Leaks: The Bad Apples in Your Test Infrastructure](https://engineering.linkedin.com/blog/2018/01/ember-timer-leaks) (January 3, 2018)\n- [Lighter than Lightweight: How We Built the Same App Twice with Preact and Glimmer.js](https://engineering.linkedin.com/blog/2018/03/how-we-built-the-same-app-twice-with-preact-and-glimmerjs) (March 12, 2018)\n- [LinkedIn’s approach to automated accessibility (A11y) testing](https://engineering.linkedin.com/blog/2020/automated-accessibility-testing) (May 21, 2020)\n\n### [Lucidchart](https://www.lucidchart.com/)\n\n- [IE10: How does it really stack up?](https://www.lucidchart.com/techblog/2012/11/14/ie10-how-does-it-really-stack-up/) (November 14, 2012)\n- [Atomic CSS as a tool set](https://www.lucidchart.com/techblog/2014/01/31/atomic-css-tool-set/) (January 31, 2014)\n- [The Definitive Guide to Copying and Pasting in JavaScript](https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/) (December 2, 2014)\n- [Big content in a little canvas](https://www.lucidchart.com/techblog/2015/05/19/big-content-in-a-little-canvas/) (May 19, 2015)\n- [Improving Angular 2 Load Times and a 29KB Hello World App](https://www.lucidchart.com/techblog/2016/09/26/improving-angular-2-load-times/) (September 26, 2016)\n- [Angular 2 and Observables: Data Sharing in a Multi-View Application](https://www.lucidchart.com/techblog/2016/11/08/angular-2-and-observables-data-sharing-in-a-multi-view-application/) (November 8, 2016)\n- [Using Angular 2 Components In a Non-Angular App](https://www.lucidchart.com/techblog/2017/04/10/using-angular-2-components-in-a-non-angular-app/) (April 10, 2017)\n- [Converting 600k lines to TypeScript in 72 hours](https://www.lucidchart.com/techblog/2017/11/16/converting-600k-lines-to-typescript-in-72-hours/) (November 16, 2017)\n- [How to handle folder uploads in Angular 2+](https://www.lucidchart.com/techblog/2018/01/03/folder-upload-in-an-angular-app/) (January 3, 2018)\n- [JavaScriptCore – The Holy Grail of Cross Platform](https://www.lucidchart.com/techblog/2018/02/14/javascriptcore-the-holy-grail-of-cross-platform/) (February 14, 2018)\n- [How to Actually Improve Type Safety with the TypeScript Strict Flags](https://www.lucidchart.com/techblog/2018/06/20/how-to-actually-improve-type-safety-with-the-typescript-strict-flags/) (June 20, 2018)\n- [ZoneTracker: Tracking JavaScript Performance with Zone.js](https://www.lucidchart.com/techblog/2018/11/09/tracking-javascript-performance-zone-js/) (November 9, 2018)\n- [JavaScriptCore—10 Months Later](https://www.lucidchart.com/techblog/2019/01/03/javascriptcore-10-months-later/) (January 3, 2019)\n\n### [Lyft](https://lyft.com)\n\n- [TypeScript at Lyft](https://eng.lyft.com/typescript-at-lyft-64f0702346ea) (September 27, 2017)\n- [Re-approaching Color](https://design.lyft.com/re-approaching-color-9e604ba22c88) (September 21, 2018)\n- [Changing Lanes: How Lyft is Migrating 100+ Frontend Microservices to Next.js](https://eng.lyft.com/changing-lanes-how-lyft-is-migrating-100-frontend-microservices-to-next-js-42199aaebd5f) (November 30, 2020)\n- [Frontend at Lyft: An Overview](https://eng.lyft.com/frontend-at-lyft-an-overview-f934c1524370) (March 9, 2021)\n\n### [Mail.ru](https://mail.ru)\n\n- [Improving Core Web Vitals on the Mail.ru home page resulted in an average 10% increase in conversion rates](https://web.dev/mailru-cwv/) (November 15, 2021)\n\n### [Mailchimp](https://mailchimp.com)\n\n- [Designing automated tests for React](https://increment.com/testing/designing-automated-tests-for-react/) (August 10, 2019)\n\n### [MDN](https://developer.mozilla.org)\n\n- [Refactoring MDN macros with async, await, and Object.freeze()](https://hacks.mozilla.org/2019/02/refactoring-mdn-macros-with-async-await-and-object-freeze/) (February 7, 2019)\n\n### [Medium](https://medium.com/)\n\n- [Why ContentEditable is Terrible](https://medium.engineering/why-contenteditable-is-terrible-122d8a40e480) (May 14, 2014)\n- [Wait, Don’t Touch That! Mutual Exclusion Locks \u0026 JavaScript](https://medium.engineering/wait-dont-touch-that-a211832adc3a) (January 17, 2015)\n- [The curious case of the disappearing Polish S](https://medium.engineering/the-curious-case-of-disappearing-polish-s-fa398313d4df) (February 2, 2015)\n- [Five Goofy Things Medium Did That Break Accessibility](https://medium.engineering/five-goofy-things-medium-did-that-break-accessibility-3bc804ae818d) (June 29, 2015)\n- [The Unluckiest Paragraphs: A Tale of CSS and Why Parts of Medium Sometimes Disappear](https://medium.engineering/the-unluckiest-paragraphs-751dd36d2d30) (December 5, 2015)\n- [Simple Style Sheets, Or How to Improve Your Sleep by Dropping the Cascade](https://medium.engineering/simple-style-sheets-c3b588867899) (September 28, 2016)\n- [2 Fast 2 Furious: migrating Medium’s codebase without slowing down](https://medium.engineering/2-fast-2-furious-migrating-mediums-codebase-without-slowing-down-84b1e33d81f4) (March 22, 2018)\n- [The case of the eternal blur: a bug hunt horror novella](https://medium.engineering/the-case-of-the-eternal-blur-ab350b9653ea) (May 2, 2018)\n- [GraphQL Server Design @ Medium](https://medium.engineering/graphql-server-design-medium-34862677b4b8) (November 2, 2018)\n\n### [MemSQL](https://www.memsql.com)\n\n- [Porting 30K lines of code from Flow to TypeScript](http://davidgom.es/porting-30k-lines-of-code-from-flow-to-typescript/) (January 13, 2019)\n\n### [Mercado Libre](http://www.mercadolibre.com)\n\n- [How Mercado Libre optimized for Web Vitals (TBT/FID)](https://web.dev/how-mercadolibre-optimized-web-vitals/) (September 21, 2020)\n\n### [Microsoft Bing](https://bing.com)\n\n- [Fast Front-End Performance for Microsoft Bing](https://blogs.bing.com/search-quality-insights/august-2022/Fast-Front-End-Performance-for-Microsoft-Bing) (August 25, 2022)\n\n### [Microsoft To-Do](https://to-do.microsoft.com/)\n\n- [How We React at Microsoft To-Do](https://youtu.be/CWxc3AYja1I) (January 5, 2018)\n\n### [Mixmax](https://mixmax.com/)\n\n- [Scaling Mixmax: Front-end performance](https://mixmax.com/blog/scaling-mixmax-front-end) (May 5, 2015)\n- [How we built ‘instant’ autocomplete for Mixmax](https://mixmax.com/blog/autocomplete-search-performance) (November 5, 2015)\n- [Yarn-ifying Mixmax: why and how we moved from npm to Yarn](https://mixmax.com/blog/yarn-ifying-mixmax) (April 24, 2017)\n- [Using CORS policies to implement CSRF protection](https://mixmax.com/blog/modern-csrf) (June 13, 2017)\n- [React without Redux: how we moved from Backbone to React without rewriting](https://mixmax.com/blog/backbone-to-react-without-rewriting) (July 26, 2017)\n- [Handling 3rd-party JavaScript with Rollup: how and when to leave JS out of the bundle](https://mixmax.com/blog/rollup-externals) (December 3, 2017)\n- [Precisely observing structural page changes](https://mixmax.com/blog/precisely-observing-structural-page-changes) (December 7, 2017)\n- [Choosing (and using) Javascript static typing: how Mixmax Engineering adopted Flow](https://mixmax.com/blog/flow-vs-typescript) (May 15, 2018)\n- [To Yarn and Back (to npm) Again](https://mixmax.com/blog/to-yarn-and-back-again-npm) (May 29, 2018)\n\n### [Mixpanel](https://mixpanel.com/)\n\n- [Straightening our Backbone: A lesson in event-driven UI development](https://engineering.mixpanel.com/2015/04/08/straightening-our-backbone-a-lesson-in-event-driven-ui-development/) (April 8, 2015)\n- [Making Web Components Work, or: How We Learned to Stop Worrying and Love the DOM](https://engineering.mixpanel.com/2018/06/12/making-web-components-work/) (June 12, 2018)\n\n### [Monzo](https://monzo.com)\n\n- [Building a Bank with Next.js: How We Use Next.js at Monzo](https://youtu.be/UXpY3-DlZ9c) (December 2, 2020)\n\n### [Mozilla](https://www.mozilla.org)\n\n- [The Art of UI Skeletons](http://farmdev.com/thoughts/108/the-art-of-ui-skeletons) (April 23, 2019)\n- [To Eleventy and Beyond](https://hacks.mozilla.org/2020/10/to-eleventy-and-beyond/) (October 1, 2020)\n\n### [Mud](https://ournameismud.co.uk)\n\n- [A Year of Utility Classes](https://css-irl.info/a-year-of-utility-classes/) (January 28, 2019)\n\n### [Myntra](https://www.myntra.com)\n\n- [Myntra’s Web UI Journey — AMP and PWA](https://medium.com/@nvkudva/myntras-web-ui-journey-amp-and-pwa-77b87523ee7d) (January 31, 2018)\n\n### [Netflix](https://netflix.com)\n\n- [HTML5 Video Playback UI](https://medium.com/netflix-techblog/html5-video-playback-ui-62cfdd9b5d19) (October 21, 2013)\n- [Improving the performance of our JavaScript inheritance model](https://medium.com/netflix-techblog/improving-the-performance-of-our-javascript-inheritance-model-af376d75665) (May 16, 2014)\n- [Node.js in Flames](https://medium.com/netflix-techblog/node-js-in-flames-ddd073803aa4) (November 19, 2014)\n- [JSON Graph: Reactive REST at Netflix](https://youtu.be/hOE6nVVr14c) (April 1, 2015)\n- [Localization Technologies at Netflix](https://medium.com/netflix-techblog/localization-technologies-at-netflix-d033e7b13cf) (June 4, 2015)\n- [Making Netflix.com Faster](https://medium.com/netflix-techblog/making-netflix-com-faster-f95d15f2e972) (August 5, 2015)\n- [Crafting a high-performance TV user interface using React](https://medium.com/netflix-techblog/crafting-a-high-performance-tv-user-interface-using-react-3350e5a6ad3b) (January 12, 2017)\n- [Netflix's approach to ES6 feature detection](https://gist.github.com/DaBs/89ccc2ffd1d435efdacff05248514f38) (January 20, 2017)\n- [Pass the Remote: User Input on TV Devices](https://medium.com/netflix-techblog/pass-the-remote-user-input-on-tv-devices-923f6920c9a8) (May 17, 2017)\n- [Shop Talk podcast #264: React with Netflix](https://shoptalkshow.com/episodes/264-react-netflix) (May 22, 2017)\n- [Performance Signup in React \u0026 Transactional Apps with Redux](https://youtu.be/V8oTJ8OZ5S0) (October 25, 2017)\n- [Implementing Japanese Subtitles on Netflix](https://medium.com/netflix-techblog/implementing-japanese-subtitles-on-netflix-c165fbe61989) (December 11, 2017)\n- [Integrating imperative APIs into a React application](https://medium.com/netflix-techblog/integrating-imperative-apis-into-a-react-application-1257e1b45ac6) (December 20, 2017)\n- [Pseudo Localization @ Netflix](https://medium.com/netflix-techblog/pseudo-localization-netflix-12fff76fbcbe) (August 6, 2018)\n- [A Netflix Web Performance Case Study](https://medium.com/dev-channel/a-netflix-web-performance-case-study-c0bcde26a9d9) (November 5, 2018)\n- [Delivering Meaning with Previews on Web](https://medium.com/netflix-techblog/delivering-meaning-with-previews-on-web-3cedc0341b9e) (November 12, 2018)\n- [Enhancing the Netflix UI Experience with HDR](https://medium.com/netflix-techblog/enhancing-the-netflix-ui-experience-with-hdr-1e7506ad3e8) (September 24, 2018)\n- [Our learnings from adopting GraphQL](https://medium.com/netflix-techblog/our-learnings-from-adopting-graphql-f099de39ae5f) (December 10, 2018)\n- [Modernizing the Web Playback UI](https://medium.com/netflix-techblog/modernizing-the-web-playback-ui-1ad2f184a5a0) (December 12, 2018)\n- [Architecting UI for Netflix Studio Technology](https://youtu.be/LtrXwX81CPE) (November 14, 2019)\n\n### [New Relic](https://newrelic.com/)\n\n- [Real-World JavaScript Performance Tips](https://blog.newrelic.com/engineering/javascript-perf-tips/) (November 14, 2014)\n- [How We Architected the New Relic Mobile Web UI in React](https://blog.newrelic.com/engineering/mobile-ui-react/) (January 3, 2018)\n\n### [Notion](https://www.notion.so)\n\n- [Migrating Notion's marketing site to Next.js](https://www.notion.so/blog/migrating-notion-marketing-to-next-js) (August 12, 2021)\n\n### [npm](https://www.npmjs.com)\n\n- [Re-inventing npmjs.com](http://blog.npmjs.org/post/172567815935/re-inventing-npmjscom) (April 3, 2018)\n- [JavaScript Usage by Industry](https://blog.npmjs.org/post/175311966445/javascript-usage-by-industry) (June 27, 2018)\n\n### [OK GROW!](https://www.okgrow.com/)\n\n- [Migrating from Iron Router to FlowRouter (with Blaze)](https://www.okgrow.com/posts/flow-router-migration-guide) (September 17, 2015)\n- [Where does Redux fit in Meteor?](https://www.okgrow.com/posts/where-does-redux-fit-in-meteor) (July 15, 2016)\n- [Real-world Unit Testing with Meteor and Jest](https://www.okgrow.com/posts/real-world-unit-testing-with-meteor-and-jest) (October 17, 2017)\n- [Optimizing a GraphQL app using Apollo Engine](https://www.okgrow.com/posts/optimizing-graphql-apollo-engine) (February 12, 2019)\n\n### [OYO](https://www.oyorooms.com)\n\n- [OYO on a User Experience Quest with AMP ⚡](https://medium.com/oyotech/oyo-on-a-user-experience-quest-with-amp-cff515cf849e) (January 11, 2018)\n- [Brotli vs Gzip Compression. How we improved our latency by 37%](https://medium.com/oyotech/how-brotli-compression-gave-us-37-latency-improvement-14d41e50fee4) (June 29, 2018)\n- [AMP for Email - Interactive and Dynamic Email Experiences at OYO](https://medium.com/oyotech/amp-for-email-making-interactive-and-dynamic-email-experiences-at-oyo-ed7a6d8754b3) (March 26, 2019)\n- [Shipping ES6 in browsers without Polyfill](https://medium.com/oyotech/shipping-es6-in-browsers-without-polyfill-90d1fb440a55) (April 17, 2019)\n- [Signed-Exchange: Solving the AMP URLs Display Problem](https://medium.com/oyotech/implementing-signed-exchange-for-better-amp-urls-38abd64c6766) (May 7, 2019)\n- [Building Chrome Extension with ReactJs: Beginner’s Guide](https://medium.com/oyotech/building-chrome-extension-with-reactjs-beginners-guide-ca44acdf9ffc) (May 13, 2019)\n- [A complete implementation guide to Trusted Web Activity(TWA)- OYO Lite](https://medium.com/oyotech/a-complete-guide-to-trusted-web-activity-twa-oyo-case-study-3dd327d7afc5) (November 7, 2019)\n- [Migrating to webpack 5 to improve build time and reduce chunk sizes](https://tech.oyorooms.com/migrating-to-webpack-5-to-improve-build-time-and-reduce-chunk-sizes-50486918d348) (June 30, 2021)\n\n### [Oyster](https://www.oyster.com/)\n\n- [Oyster Shots on the Front End](http://tech.oyster.com/oyster-shots-on-the-front-end/) (July 29, 2011)\n- [Using React and jQuery Together](http://tech.oyster.com/using-react-and-jquery-together/) (March 22, 2016)\n\n### [Palantir](https://www.palantir.com/)\n\n- [Scaling product design with Blueprint](https://medium.com/palantir/scaling-product-design-with-blueprint-25492827bb4a) (January 6, 2017)\n- [TSLint in 2019](https://medium.com/palantir/tslint-in-2019-1a144c2317a9) (February 19, 2019)\n\n### [PayPal](https://www.paypal.com)\n\n- [Sane, scalable Angular apps are tricky, but not impossible. Lessons learned from PayPal Checkout](https://medium.com/@bluepnume/sane-scalable-angular-apps-are-tricky-but-not-impossible-lessons-learned-from-paypal-checkout-c5320558d4ef) (September 26, 2015)\n- [Auto-shrink-wrapping in PayPal Checkout, and how it’s saved us more than once](https://medium.com/@bluepnume/how-we-manage-sane-tagging-releasing-and-shrink-wrapping-for-paypal-checkout-d1e37f20533a) (February 10, 2016)\n- [Dependency injection in Angular isn’t worth it. More lessons learned from scaling PayPal Checkout](https://medium.com/@bluepnume/dependency-injection-in-angular-isn-t-worth-it-more-lessons-learned-from-scaling-paypal-checkout-2189ec9c21a0) (April 3, 2016)\n- [Less is more: reducing thousands of PayPal buttons into a single iframe, using zoid](https://medium.com/@bluepnume/less-is-more-reducing-thousands-of-paypal-buttons-into-a-single-iframe-using-xcomponent-d902d71d8875) (March 17, 2017)\n- [Safari’s new third party tracking rules, and enabling cross-domain data storage](https://medium.com/@bluepnume/safaris-new-tracking-rules-and-enabling-cross-domain-data-storage-85241eea7483) (August 30, 2017 )\n- [Reinventing cross-origin requests, without CORS](https://medium.com/@bluepnume/reinventing-cross-origin-requests-without-cors-b9c4cb645376) (September 6, 2017)\n- [Introducing PayPal’s open-source cross-domain javascript suite](https://medium.com/@bluepnume/introducing-paypals-open-source-cross-domain-javascript-suite-95f991b2731d) (October 16, 2017)\n- [GraphQL: A success story for PayPal Checkout](https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53) (October 17, 2018)\n- [Why every new web app at PayPal starts with TypeScript](https://medium.com/paypal-engineering/why-every-new-web-app-at-paypal-starts-with-typescript-9d1acc07c839) (January 21, 2019)\n- [Scaling GraphQL at PayPal](https://medium.com/paypal-engineering/scaling-graphql-at-paypal-b5b5ac098810) (October 30, 2019)\n- [Sharing UI Components at an Enterprise Level](https://medium.com/paypal-tech/reusing-ui-components-at-enterprise-level-a7df1ea1f8dd) (June 2, 2020)\n- [How Micro Frontend Has Changed Our Team Dynamic](https://medium.com/paypal-engineering/how-micro-frontend-has-changed-our-team-dynamic-ba2f01597f48) (August 10, 2020)\n- [GraphQL at PayPal: An Adoption Story](https://medium.com/paypal-tech/graphql-at-paypal-an-adoption-story-b7e01175f2b7) (September 1, 2021)\n\n### [Pinafore](https://pinafore.social)\n\n- [Introducing Pinafore for Mastodon](https://nolanlawson.com/2018/04/09/introducing-pinafore-for-mastodon) (April 9, 2018)\n- [Scrolling the main document is better for performance, accessibility, and usability](https://nolanlawson.com/2018/11/18/scrolling-the-main-document-is-better-for-performance-accessibility-and-usability) (November 18, 2018)\n- [Building a modern carousel with CSS scroll snap, smooth scrolling, and pinch-zoom](https://nolanlawson.com/2019/02/10/building-a-modern-carousel-with-css-scroll-snap-smooth-scrolling-and-pinch-zoom) (February 10, 2019)\n- [One year of Pinafore](https://nolanlawson.com/2019/06/02/one-year-of-pinafore) (June 2, 2019)\n- [The joy and challenge of developing for KaiOS](https://nolanlawson.com/2019/09/22/the-joy-and-challenge-of-developing-for-kaios) (September 22, 2019)\n- [What I’ve learned about accessibility in SPAs](https://nolanlawson.com/2019/11/05/what-ive-learned-about-accessibility-in-spas) (November 5, 2019)\n\n### [Pinterest](https://pinterest.com)\n\n- [Gone In 60 Frames Per Second: A Pinterest Paint Performance Case Study](https://www.smashingmagazine.com/2013/06/pinterest-paint-performance-case-study/) (June 10, 2013)\n- [Demystifying SEO with experiments](https://medium.com/@Pinterest_Engineering/demystifying-seo-with-experiments-a183b325cf4c) (January 27, 2015)\n- [How we made JavaScript testing 15x faster](https://medium.com/@Pinterest_Engineering/how-we-made-javascript-testing-15x-faster-5ba35b5d3947) (February 3, 2015)\n- [Making Pinterest HTTPS](https://medium.com/@Pinterest_Engineering/making-pinterest-https-637ec925a8ad) (March 13, 2015)\n- [How we switched our template rendering engine to React](https://medium.com/@Pinterest_Engineering/how-we-switched-our-template-rendering-engine-to-react-a799a3d540b0) (November 18, 2016)\n- [Introducing Bonsai: an open source Webpack analyzer](https://medium.com/@Pinterest_Engineering/introducing-bonsai-an-open-source-webpack-analyzer-6bdfe22f8984) (June 2, 2017)\n- [Migrating Pinterest profiles to React](https://medium.com/@Pinterest_Engineering/migrating-pinterest-profiles-to-react-479f4f7306aa) (September 23, 2016) ([video](https://youtu.be/dx9ZlpUx59I)) (November 22, 2017)\n- [A Pinterest Progressive Web App Performance Case Study](https://medium.com/dev-channel/a-pinterest-progressive-web-app-performance-case-study-3bd6ed2e6154) (November 30, 2017)\n- [Supporting React Native at Pinterest](https://medium.com/@Pinterest_Engineering/supporting-react-native-at-pinterest-f8c2233f90e6) (May 10, 2018)\n- [A one year PWA retrospective](https://medium.com/@Pinterest_Engineering/a-one-year-pwa-retrospective-f4a2f4129e05) (July 20, 2018)\n\n### [Pivotal Tracker](https://www.pivotaltracker.com)\n\n- [Using Elm in Production at Pivotal Tracker](https://www.pivotaltracker.com/blog/Elm-pivotal-tracker/) (January 31, 2017)\n- [Improving Accessibility in Pivotal Tracker](https://www.pivotaltracker.com/blog/improving-accessibility-in-pivotal-tracker) (February 1, 2018)\n\n### [Plaid](https://plaid.com)\n\n- [Securing WebViews with Chrome Custom Tabs](https://blog.plaid.com/securing-webviews-with-chrome-custom-tabs) (April 9, 2020)\n\n### [Plotly](https://plot.ly/)\n\n- [Modularizing monolithic javascript projects in plotly.js](https://plot.ly/javascript/modularizing-monolithic-javascript-projects/) (January 28, 2016)\n\n### [Product Hunt](https://www.producthunt.com)\n\n- [React @ Product Hunt](https://youtu.be/F38nRMktS9Q) (May 30, 2017)\n- [GraphQL @ Product Hunt](https://www.youtube.com/watch?v=H0YCeHeHbr0) (November 2, 2017)\n\n### [Proton](https://proton.me)\n\n- [Deploying CSS Logical Properties On Web Apps](https://www.smashingmagazine.com/2022/12/deploying-css-logical-properties-on-web-apps/) (December 23, 2022)\n\n### [Quizlet](https://quizlet.com/)\n\n- [Smooth Game Animations in React](https://medium.com/tech-quizlet/smooth-game-animations-in-react-df43ece916c8) (February 18, 2016)\n- [Launching A Successful Redesign For 20 Million Students](https://medium.com/tech-quizlet/launching-a-successful-redesign-for-20-million-students-2f4c4b518b6e) (June 13, 2017)\n- [Cypress: The future of end-to-end testing for web applications](https://medium.com/tech-quizlet/cypress-the-future-of-end-to-end-testing-for-web-applications-8ee108c5b255) (February 8, 2018)\n- [Now or Never: Migrating 300k LOC from Flow to TypeScript at Quizlet](https://medium.com/tech-quizlet/now-or-never-migrating-300k-loc-from-flow-to-typescript-at-quizlet-d3bae5830a1) (June 18, 2019)\n\n### [Quora](https://www.quora.com/)\n\n- [Faster Paint Times](https://www.quora.com/q/quoraengineering/Faster-Paint-Times) (August 18, 2016)\n- [Choosing Quora’s GraphQL client](https://www.quora.com/q/quoraengineering/Choosing-Quora-s-GraphQL-client) (July 22, 2020)\n\n### [REA Group](https://www.rea-group.com/)\n\n- [ReactJS – Real World Examples of Higher-Order Components](https://www.rea-group.com/blog/reactjs-real-world-examples-of-higher-order-components/) (May 6, 2016)\n- [Singletons Suck (aka Flux to Redux)](https://www.rea-group.com/blog/singletons-suck-aka-flux-to-redux/) (August 17, 2016)\n- [ReactJS Performance Debugging (aka The Magic of Reselect Selectors)](https://www.rea-group.com/blog/reactjs-performance-debugging-aka-the-magic-of-reselect-selectors/) (September 9, 2016)\n- [My Journey in a UI Project (aka front-end is the new back-end)](https://www.rea-group.com/blog/my-journey-in-a-ui-project-aka-front-end-is-the-new-back-end/) (June 23, 2017)\n\n### [Reaktor](https://reaktor.com/)\n\n- [Refactoring 30000 lines of JS with types](https://www.reaktor.com/blog/refactoring-30000-lines-js-types/) (January 24, 2017)\n\n### [Reddit](https://about.reddit.com)\n\n- [How We Built r/Place](https://redditblog.com/2017/04/13/how-we-built-rplace/) (April 13, 2017)\n- [Why We Chose Typescript](https://redditblog.com/2017/06/30/why-we-chose-typescript/) (June 30, 2017)\n\n### [Redmart](https://redmart.com/)\n\n- [Angular The Hard Way #1 Organise and manage domain data](http://geeks.redmart.com/2015/04/22/angular-the-hard-way-1/) (April 22, 2015)\n- [RedMart's experience with PWA](http://geeks.redmart.com/2018/10/25/redmarts-experience-with-pwa/) (October 25, 2018)\n- [How we use Storybook for documentation and code reviews](http://geeks.redmart.com/2018/11/14/how-we-use-storybook-for-documentation-and-code-reviews/) (November 14, 2018)\n\n### [repl.it](https://repl.it)\n\n- [Infinite Loops](https://repl.it/site/blog/infinite-loops) (January 23, 2017)\n- [Modular, fast, small: how we built a server-rendered IDE](https://repl.it/site/blog/ide) (February 14, 2018)\n\n### [Revolut](https://www.revolut.com)\n\n- [How we learned to stop worrying and love GraphQL](https://medium.com/revolut/how-we-learned-to-stop-worrying-and-love-graphql-80a5f83f36d9) (August 8, 2019)\n- [The fundamentals of web development at Revolut](https://medium.com/revolut/the-fundamentals-of-web-development-at-revolut-bb5e2888e84f) (January 4, 2021)\n\n### [Roompact](https://roompact.com)\n\n- [Elm In Production: 25,000 Lines Later](https://charukiewi.cz/posts/elm/) (July 30, 2017)\n\n### [Safety Culture](https://safetyculture.com/)\n\n- [Why we moved our graphQL server from Node.js to Golang](https://medium.com/safetycultureengineering/why-we-moved-our-graphql-server-from-node-js-to-golang-645b00571535) (June 27, 2018)\n\n### [Scratch](https://scratch.mit.edu)\n\n- [Porting Scratch from Flash to JavaScript: Performance, Interoperability and Extensions](https://bocoup.com/blog/porting-scratch-from-flash-to-javascript-performance-interoperability-and-extensions) (February 28, 2019)\n\n### [Sentry](https://sentry.io)\n\n- [Building Sentry: Source maps and their problems](https://sentry.engineering/blog/building-sentry-source-maps-and-their-problems) (July 16, 2019)\n- [Slow and Steady: Converting Sentry’s Entire Frontend to TypeScript](https://sentry.engineering/blog/slow-and-steady-converting-sentrys-entire-frontend-to-typescript) (April 12, 2021)\n- [How we trimmed the Sentry JavaScript SDK file size by 20%](https://sentry.engineering/blog/js-browser-sdk-bundle-size-matters) (February 28, 2022)\n- [JavaScript SDK “Package Size is Massive” - So we reduced it by 29%](https://blog.sentry.io/2022/07/19/javascript-sdk-package-reduced) (July 19, 2022)\n- [Understanding the Performance Impact of Generated JavaScript](https://sentry.engineering/blog/understanding-the-performance-impact-of-generated-javascript) (July 22, 2022)\n- [How We Made JavaScript Stack Traces Awesome](https://sentry.engineering/blog/how-we-made-javascript-stack-traces-awesome) (November 30, 2022)\n- [Sentry’s Frontend Tests: Migrating from Enzyme to React Testing Library](https://sentry.engineering/blog/sentrys-frontend-tests-migrating-from-enzyme-to-react-testing-library) (February 23, 2023)\n- [How we reduced CI time by 35% with Nx Caching](https://sentry.engineering/blog/reduce-ci-time-with-nx-caching) (March 31, 2023)\n- [Measuring Session Replay Overhead](https://sentry.engineering/blog/measuring-session-replay-overhead) (July 5, 2023)\n- [How We Reduced Replay SDK Bundle Size by 35%](https://sentry.engineering/blog/session-replay-sdk-bundle-size-optimizations) (November 14, 2023)\n\n### [Shopify](https://shopify.com)\n\n- [How 17 lines of code improved shopify.com loading by 50%](https://shopify.engineering/how-17-lines-of-code-improved-shopify-com-loading-by-50) (May 24, 2017)\n- [Building Shopify mobile with native and web technology](https://shopify.engineering/building-shopify-mobile-with-native-and-web-technology) (September 29, 2017)\n- [Designing a GraphQL API](https://gist.github.com/swalkinshaw/3a33e2d292b60e68fcebe12b62bbb3e2) (June 18, 2018)\n- [Want to Improve UI Performance? Start by Understanding Your User](https://shopify.engineering/improve-ui-performance-understanding-your-user) (October 20, 2019)\n- [How We Built Hydrogen: A React Framework for Building Custom Storefronts](https://shopify.engineering/how-we-built-hydrogen) (June 22, 2022)\n\n### [Skillshare](https://skillshare.com/)\n\n- [How We Ditched Redux for MobX](https://medium.com/skillshare-team/how-we-ditched-redux-for-mobx-a05442279a2b) (July 2, 2018)\n\n### [Slack](https://slack.com)\n\n- [Reducing Slack’s memory footprint](https://slack.engineering/reducing-slacks-memory-footprint-4480fec7e8eb) (March 3, 2017)\n- [TypeScript at Slack](https://slack.engineering/typescript-at-slack-a81307fa288d) (April 11, 2017)\n- [Rebuilding Slack’s Emoji Picker in React](https://slack.engineering/rebuilding-slacks-emoji-picker-in-react-bfbd8ce6fbfe) (May","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrew--r%2Ffrontend-case-studies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrew--r%2Ffrontend-case-studies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrew--r%2Ffrontend-case-studies/lists"}