frontend-case-studies

Frontend case studies

A curated list of articles and talks about real-world enterprise frontend development

💼 A curated list of technical talks and articles about real world enterprise frontend development

GitHub

7k stars
223 watching
422 forks
last commit: 25 days ago
Linked from 1 awesome list

awesome-listcase-studyenterprisefrontendreal-world

English / AdRoll

Lazy loading Backbone collections with Promises (November 12, 2013)
Rollup: Shared UI components at AdRoll (November 05, 2015)
Rollup: How we use React.js and npm to share UI code at AdRoll (November 12, 2015)
Rollup: What we have learned from sharing UI code at AdRoll (November 19, 2015)
gulp-react-docs: From propTypes to Markdown in 3 seconds (December 21, 2015)
How to Create a Style Guide: Start with a UI Framework (July 29, 2016)
How to Run a Front-End Infrastructure Team (August 29, 2017)

English / Aha!

How I Convinced Our CTO to Switch From CoffeeScript to ES6 (September 7, 2017)

English / Airbnb

Turbocharged JavaScript Refactoring with Codemods (April 27, 2016)
Rearchitecting Airbnb’s Frontend (May 15, 2017)
Migrating from Mocha to Jest (June 15, 2017)
React Performance Fixes on Airbnb Listing Pages (December 5, 2017)
Server Rendering, Code Splitting, and Lazy Loading with React Router v4 (January 10, 2018)
React Native at Airbnb (June 19, 2018): , , ,
Operationalizing Node.js for Server Side Rendering (July 18, 2018)
How Airbnb is Moving 10x Faster at Scale with GraphQL and Apollo (December 5, 2018)
Building (And Re-Building) the Airbnb Design System (October 30, 2019)
ts-migrate: A Tool for Migrating to TypeScript at Scale (August 18, 2020)
Building a Faster Web Experience with the postTask Scheduler (May 20, 2021)
A Deep Dive into Airbnb’s Server-Driven UI System (June 29, 2021)
Measuring Web Performance at Airbnb (December 7, 2021)
Faster JavaScript Builds with Metro (May 24, 2022)
Airbnb’s Trip to Linaria (June 16, 2022)

English / ALDO

The Impact of Web Performance (February 6, 2020)

English / Algolia

Improving Web Performance to Mirror Engine Speed (July 26, 2017)
Using NetInfo API to Improve Algolia’s JavaScript Client (July 30, 2019)

English / Allegro

Managing Frontend in the Microservices Architecture (March 12, 2016)
Why Allegro Ads chose TypeScript (April 9, 2019)
Page visibility and performance metrics (September 2, 2019)
Performance of JavaScript optional chaining (November 8, 2019)
Using ESLint to improve your app’s performance (August 11, 2020)
Measuring Web Performance (June 8, 2021)
Making API calls a seamless user experience (July 21, 2021)
CSS Architecture and Performance in Micro Frontends (July 29, 2021)
How to turn on TypeScript strict mode in specific files (September 6, 2021)
Evolution of web performance culture (September 23, 2021)
How we refactored the search form UI component (October 26, 2021)

English / Amazon

How we halved the publish size of modular AWS SDK for JavaScript clients (October 14, 2021)
How Prime Video updates its app for more than 8,000 device types: the switch to WebAssembly increases stability, speed (January 27, 2022)

English / Artsy

Rendering on the Server and Client in Node.js (November 30, 2013)
The Tech Behind Live Auction Integration (August 9, 2016)
React Native at Artsy (August 15, 2016)
Making Artsy Editorial Accessible (August 29, 2017)
Helping the Web Towards OSS by Default (September 6, 2016)
JSON Web Tokens: Artsy's Journey (October 26, 2016)
Exploration: Front-end JavaScript at Artsy in 2017 (February 5, 2017)
Modernizing Force (September 5, 2017)
React Native, 2 years later (March 17, 2018)
Keeping Artsy's dependencies up to date (November 26, 2018)
Switch from Capybara Webkit to Chrome (November 27, 2018)
GraphQL Stitching 101 (December 11, 2018)
GraphQL: Union vs. Interface (January 14, 2019)
From TSLint to ESLint, or How I Learned to Lint GraphQL Code (January 29, 2019)

English / Atlassian

Trellisheets: How we spin up CSS for Trello sites with ease (March 1, 2016)
A look at Trello: adopting GraphQL and Apollo in a legacy application (August 28, 2019)
Using an event-driven architecture to improve Jira Software responsiveness (November 05, 2019)
Scaling React server-side rendering in Jira Cloud (February 04, 2020)
Improving performance through better architecture (June 23, 2020)
Performance in Jira front-end: the story of a single line of code (November 16, 2020)
Performance in Jira front-end: using modern bundles to improve load time (December 5, 2020)
Performance in Jira front-end: solving bundle duplicates with Webpack and yarn (December 22, 2020)

English / Australian Broadcasting Corporation

Composing Components (September 28, 2018)
From data to DOM: Building a text rendering pipeline for React (October 23, 2019)
Migrating the platform that powers ABC sites to TypeScript (September 30, 2021)

English / Badoo

How to teach a web app to speak 100 languages: the specifics of localisation (March 8, 2017)
The painless way to collect statistics from a web-site (May 18, 2017)
Translating interfaces into almost fifty languages: Sketch (October 17, 2017)
part 1 Hot localisations update: , (November 2017)
part 1 From zero to Cosmos: , , (February 2018)
Translating Dust templates to JSX (May 16, 2018)
How to manage your Design Tokens with Style Dictionary (September 27, 2018)
why is it not the same as it is for designers Optical alignment for frontend developers: and (November 22, 2018)
from the idea to the assets Sketch files Generating multi-brand multi-platform icons with Sketch and a Node.js script: and (December 2018)
Covering A/B tests with UI tests: how to avoid getting tangled up in your own code (February 22 2019)
Design Tokens beyond colors, typography, and spacing (November 12, 2019)

English / BBC

Redefining the BBC News core experience (July 22, 2016)
HTTP/2 is easy, just turn it on… (November 7, 2017)
How BBC Interactive Content Works Across AMP, Apps, And The Web (March 15, 2018)

English / Betty Crocker

Wake Lock API case study: 300% increase in purchase intent indicators on BettyCrocker.com (May 19, 2020)

English / Bitmovin

How Bitmovin Used React/Redux to Develop Its New Dashboard (September 7, 2017)
To Play, or Not to Play – New AutoPlay Policies for Safari 11 and Chrome 64 (September 28, 2017)
To Play, or Not to Play #2 – Firefox blocks audible autoplay by default! (February 20, 2019)

English / blogfoster

Jumpstart to React+Redux Development
Centralized ESLint Configuration
Redux For Better in-App Analytics
Managing Complexity in Redux: Higher-Order Reducers and Async State
How We Simplified our Tooling Setup for Node.js Projects
How to Use the Power of Jest’s Snapshot Testing Without Using Jest

English / Bloomberg

How Bloomberg Used React Native to Develop its new Consumer App (December 15, 2016)
wsk: A Straightforward and Maintainable Build System from the Bloomberg Graphics Team (December 12, 2017)
10 Insights from Adopting TypeScript at Scale (November 9, 2020)

English / BuzzFeed

Micro Frontends at BuzzFeed (September 17, 2019)
Accessible BuzzFeed (August 27, 2020)
CLS at BuzzFeed — Part 1: Raising The Floor (November 6, 2021)
CLS at BuzzFeed — Part 2: Getting Help From Real Users (November 6, 2021)
CLS at BuzzFeed — Part 3: Dealing with the unpredictable (November 6, 2021)

English / Campaign Monitor

Fixing bugs with Outlook specific CSS (November 9, 2016)
Better video previews for email (December 20, 2016)
How to test accessibility of emails (June 5, 2018)

English / Carbon Five

Cross-Domain Browser Window Messaging with HTML5 and Javascript (August 17, 2012)
Composing Synchronous and Asynchronous Functions in JavaScript (January 29, 2015)
An AJAX Auto-Save Implementation (January 24, 2018)

English / Carousell

How we made Carousell’s mobile web experience 3x faster (October 31, 2018)
part 1 Building a Dynamic UI System at Carousell (Feb/Mar 2019): , and
An Experiment with JSON Schema (April 18, 2019)

English / cars.com

How Cars.com Developer Mac Heller-Ogden Convinced His Bosses to Adopt Node.js (July 17, 2017)

English / Checkbot

Scalable & lightweight web screenshots with SVG (November 30, 2018)

English / Clearleft

How to use variable fonts in the real world (January 26, 2018)
A framework for web performance (September 20, 2018)

English / Cloudflare

How we built Origin CA: Web Crypto (May 10, 2016)
Open Sourcing CloudFlare’s UI Framework (June 8, 2016)
Going Global - a Localization Case Study at Cloudflare (August 23, 2017)
How we made our page-load optimisations even faster (February 2, 2018)
Real URLs for AMP Cached Content Using Cloudflare Workers (November 13, 2018)
Fast Google Fonts with Cloudflare Workers (November 22, 2018)
Migrating to React land: Gatsby (March 26, 2020)
Moving from reCAPTCHA to hCaptcha (April 8, 2020)
Dark Mode for the Cloudflare Dashboard (September 29, 2021)

English / Cloud Four

All Mixed Up: Isomorphic Sorting Gone Wrong (October 17, 2019)

English / CodeSandbox

Lessons learned refactoring Codesandbox.io from Redux to Cerebral (February 7, 2018)

English / Condé Nast

The Why and How of Google AMP at Condé Nast (August 29, 2017)

English / Conductor

Painless Migration From Backbone to React/Redux (February 16, 2018)

English / Datadog

Redux-Doghouse – Creating Reusable React-Redux Components Through Scoping (November 14, 2016)
How Datadog uses Datadog to gain visibility into the Datadog user experience (February 22, 2022)
DRUIDS, the Design System that Powers Datadog (September 29, 2022)
Making Fetch Happen - Building a General-purpose Query & Render Scheduler (April 17, 2023)
How We Migrated Our Acceptance Tests to Use Synthetic Monitoring (June 30, 2023)

English / DAZN

Testing MobX State Tree (December 7, 2018)
Handling complexity in lambda functions (February 8, 2019)
Micro-frontends, the future of Frontend architectures (April 2, 2019)
Adopting a Micro-frontends architecture (April 8, 2019)
Orchestrating micro-frontends (April 12, 2019)
Jest: Our journey into performant unit tests (April 15, 2019)
Identifying micro-frontends in our applications (May 21, 2019)

English / De Voorhoede

Why our website is faster than yours (July 16, 2016)

English / DEV

App shell UX with service workers and streams (June 23, 2020)

English / Discord

Using React Native: One Year Later (June 7, 2016)
Lessons from migrating a large codebase to React 16 (October 5, 2017)
Why Discord is Sticking with React Native (July 26, 2018)
How Discord Maintains Performance While Adding Features (August 2, 2018)
How Discord Handles Two and Half Million Concurrent Voice Users using WebRTC (September 10, 2018)
Investigating Discord’s React Memory Leak (August 8, 2019)
How Discord achieves native iOS performance with React Native (November 7, 2019)
How Discord Implemented App-Wide Keyboard Navigation (December 17, 2020)

English / <div>RIOTS

A story of how we migrated to pnpm (January 18, 2022)

English / DoorDash

Things to Keep in Mind When Integrating a Map Feature to a Web App (Septermber 11, 2020)
Building the Caviar Web Experience Using Reusable React Components on the DoorDash Platform (September 29, 2020)
Implementing Theming in DoorDash’s Design Language System (December 17, 2020)
Serving Multiple Websites and Business Logic From a Single Platform (February 9, 2021)
Managing React State on DoorDash’s Item Modal Using the Class Pattern (April 21, 2021)
Building a Marketing Engineering Platform using Next.js, Cloudflare, and Contentful (February 22, 2022)
Improving Web Page Performance at DoorDash Through Server-Side Rendering with Next.JS (March 29, 2022)
Building a Common Web Library for Fast Implementations of Risk Frictions (March 31, 2022)
DoorDash’s Lessons on Improving Performance on High-Traffic Web Pages (August 30, 2022)

English / Dropbox

Translating Dropbox (April 18, 2011)
Some love for JavaScript applications (August 31, 2012)
Dropbox dives into CoffeeScript (September 13, 2012)
On Reporting and Filtering Content Security Policy at Dropbox (September 2015): , , ,
Enabling HTTP/2 for Dropbox web services: experiences and observations (May 11, 2016)
Annotations on Document Previews (November 30, 2016)
Preventing cross-site attacks using same-site cookies (March 16, 2017)
Deploying Brotli for static content (April 6, 2017)
Dropbox Paper: Emojis and Exformation (November 15, 2017)
Improving Document Preview Performance (December 1, 2017)
Migrating from Underscore to Lodash (September 5, 2018)
Redux with Code-Splitting and Type Checking (July 16, 2019)
Design Tooling at Scale (October 12, 2019)
The Great CoffeeScript to Typescript Migration of 2017 (May 13, 2020)
JQuery to React: How we rewrote the HelloSign Editor (September 30, 2020)

English / eBay

Data URI Sprites (July 12, 2011)
The New eBay Motors Homepage is 2X Faster (October 14, 2011)
Five JavaScript Tips for a Sleek User Experience (April 16, 2012)
Page Loading and Rendering Optimizations (June 22, 2012)
Bandwidth-based Experience (October 10, 2012)
Early Detection of Frontend Single Points of Failure (January 22, 2013)
Front-end Renaissance at eBay (January 13, 2014)
Yet Another Responsive vs. Adaptive Story (March 5, 2014)
Don't Build Pages, Build Modules (October 2, 2014)
Async Fragments: Rediscovering Progressive HTML Rendering with Marko (December 8, 2014)
The Power of Perceived Performance (January 5, 2015)
Mobile First - A Retrospective (May 13, 2015)
How Our CSS Framework Helps Enforce Accessibility (November 4, 2015)
Packaging for Performance (January 4, 2016)
The Path to JavaScript Next (March 15, 2016)
Browse eBay with Style and Speed (June 30, 2016)
Experience the Lightning Bolt (September 21, 2016)
Effective Front-End Code Review (March 2, 2017)
Building a UI Component in 2017 and Beyond (May 3, 2017)
eBay’s Font Loading Strategy (September 21, 2017)
The Future of Marko (October 26, 2017)
Beyond HTTPS (December 13, 2017)
Integration Testing with React and Enzyme (June 26, 2018)
WebAssembly at eBay: A Real-World Use Case (May 22, 2019)
Autofill on Browsers: A Deep Dive (December 3, 2019)
Speed By A Thousand Cuts (January 23, 2020)
Front End Debugging — Tips on Resolving Issues Quickly so You Can Move on to Better Things (April 7, 2020)
Auto Effect Pattern with Redux and React Hooks (April 15, 2020)

English / Electronic Arts

Building UI at Enterprise Scale with Web Components (August 22, 2017)

English / Ele.me

Upgrading Ele.me to Progressive Web App (May 6, 2017)

English / Etsy

Localizing Logically for a Global Marketplace (October 21, 2011)
Multilingual User Generated Content and SEO (December 2, 2011)
Measuring Front-end Performance With Real Users (November 29, 2012)
Responsive emails that really work (March 13, 2014)
Transitioning to SCSS at Scale (February 2, 2015)
Rebuilding the Foundation of Etsy’s Seller Tools (February 5, 2015)
How Etsy Formats Currency (April 19, 2016)
SEO Title Tag Optimization at Etsy: Experimental Design and Causal Inference (October 25, 2016)
Optimizing Meta Descriptions, H1s and Title Tags: Lessons from Multivariate SEO Testing at Etsy (January 25, 2017)
Reducing Image File Size at Etsy (May 30, 2017)
How Etsy Localizes Addresses (September 26, 2018)
Developing in a Monorepo While Still Using Webpack (April 6, 2020)
The journey to fast production asset builds with Webpack (February 3, 2020)
Etsy’s Journey to TypeScript (November 8, 2021)

English / Evil Martians

Is React Native podium-ready? (May 14, 2018)

English / Expedia Group

Scoping A/B Test Code in React (September 4, 2018)
Profiling React Server-Side Rendering to Free the Node.js Event Loop (February 18, 2019)
Creating Your Own Apollo Cache for Perf and Profit (February 7, 2019)
Optimizing a Page: Resource Hints, Critical CSS, and Webpack (March 20, 2019)
Contextual and Consistent Analytic Events in React (April 22, 2019)
Minimizing DOM Nodes for Performance (September 24, 2019)
Web Performance vs. User Engagement (October 31, 2019)
Migrating to WKWebView (December 11, 2019)
A (Small) Case for Function-Based React Components (December 10, 2019)
Measuring Interaction Performance with FPS Data (December 16, 2019)
File Upload with GraphQL, Apollo Server, Hapi 18+, and React (January 16, 2020)
Web Applications: Analyzing Client-Side Performance (January 7, 2020)
Schema Driven UIs (January 23, 2020)
Responsive Accessibility Guidelines at Expedia.com (February 27, 2020)
12 Tips to Improve Client Side Page Performance (April 28, 2020)
Using Webpack Module Federation to Create an App Shell (June 10, 2020)
CSS-in-JS: An Investigation (July 7, 2020)
Multi-Variate Web Optimisation Using Linear Contextual Bandits (September 1, 2020)
How Expedia.com Uses Accessibility Automation (October 1, 2020)
Sizing Android WebView iframes with JavaScript (April 27, 2021)

English / ezCater

The case against React snapshot testing (June 27, 2019)
Saying goodbye to emotion (June 1, 2021)

English / Facebook

Building the F8 App with React Native
BigPipe: Pipelining web pages for high performance (June 4, 2010)
Facebook has 30,000 react components. How do you manage large project directories with many components? (December 31, 2013)
The technology behind preview photos (August 6, 2015)
Improving CSS quality at Facebook and beyond (June 13, 2016)
This browser tweak saved 60% of requests to Facebook (January 26, 2017)
Building High-Quality JavaScript Tools (June 2, 2017)
React 16: A look inside an API-compatible rewrite of our frontend UI library (September 26, 2017)
Design Systems & Tools at Facebook (November 15, 2017)
Behind the Scenes: Improving the React Repository Infrastructure (December 15, 2017)
Faster input events with Facebook’s first browser API contribution (April 22, 2019)
Building the New facebook.com with React, GraphQL and Relay (April 30, 2019)
Rebuilding our tech stack for the new Facebook.com (May 8, 2020)
Making Facebook.com accessible to as many people as possible (July 30, 2020)

English / FARFETCH

The need for speed — 1: measuring today’s web performance (February 19, 2019)
The need for speed — 2: call for metrics (February 19, 2019)
How to build a performance culture at scale (September 11, 2019)
One less second for the page, one giant leap for the business (July 2, 2020)
The art of failure II: graceful degradation (September 20, 2021)
GraphQL sessions: powering farfetch.com (May 6, 2022)

English / fastq.bio

How We Used WebAssembly To Speed Up Our Web App By 20X (April 5, 2019)

English / Figma

Building a professional design tool on the web (December 7, 2015)
Debugging Data Corruption with Emscripten (November 7, 2016)
WebAssembly cut Figma’s load time by 3x (June 8, 2017)
Introducing BrowserView for Electron (June 29, 2017)
Introducing: Figma to React (April 26, 2018)
Figma, faster 🏎 (August 13, 2018)
How to build a plugin system on the web and also sleep well at night (August 22, 2019)
React at 60fps: improving scrolling comments in Figma (August 19, 2020)
Inside Figma: a case study on strict null checks (December 17, 2020)
Illuminating dark mode (July 21, 2022)
The evolution of Figma’s mobile engine: Compiling away our custom programming language (May 1, 2024)

English / Financial Times

Building The New Financial Times Web App (May 23, 2013)
Free-market software development (August 21, 2015)
SVG icons are easy but the fallbacks aren't (December 1, 2015)
A faster FT.com (April 4, 2016)
YES, your site too can (and should) be accessible (May 23, 2017)
Improving the cache performance of The Polyfill Service (June 9, 2017)
Can't You Just Make It More like Bootstrap? (July 22, 2017)
Speeding up without slowing down (November 7, 2017)
What happens when you visit ft.com? (November 24, 2017)
Tips for in-house teams in a free market software culture (January 30, 2018)
An outbreak of Accessibility anti-patterns (May 18, 2018)
This one line of Javascript made FT.com 10 times slower (July 16, 2018)
Improving the cache performance of The Polyfill Service even more (January 21, 2019)
Designing a sustainable front-end toolset for FT.com (April 27, 2020)
Animating list reordering with React Hooks (August 26, 2020)
Taming Webpackʼs content hashes (June 3, 2020)

English / Flickr

Lessons Learned from the Flickr Touch Lightbox (July 20, 2011)
Creating an interface for geofences (September 6, 2011)
Raising the bar on web uploads (April 25, 2012)
Building an HTML5 Photo Editor (April 18, 2012)
Building The Flickr Web Uploadr: The Grid (May 11, 2012)
Parsing Exif client-side using JavaScript (June 1, 2012)
Adventures in Jank Busting: Parallax, performance, and the new Flickr Home Page (June 4, 2013)
Building Flickr’s new Hybrid Signed-Out Homepage (April 23, 2014)
Perceptual Image Compression at Flickr (September 25, 2015)
Introducing yakbak: Record and playback HTTP interactions in NodeJS (April 25, 2016)

English / Flipboard

Layout in Flipboard for Web and Windows (March 24, 2014)
60 FPS on the mobile web (February 10, 2015)

English / Flipkart

Building Flipkart Lite: A Progressive Web App (November 11, 2015)

English / Flocktory

Third party libraries (May 22, 2017)

English / Futurice

How Elm made our work better (November 1, 2016)

English / Garbarino

Building a PWA in Argentina (July 24, 2017)

English / GitHub

GitHub's CSS (July 23, 2014)
How GitHub is using Web Components in production (September 30, 2014)
Browser Monitoring for GitHub.com (May 19, 2015)
GitHub's CSP journey (April 12, 2016)
GitHub's post-CSP journey (January 19, 2017)
Shipping system fonts to GitHub.com (February 7, 2018)
Design Systems at GitHub (July 6, 2018)
Removing jQuery from GitHub.com frontend (September 6, 2018)
From 48k lines of code to 10—the story of GitHub’s JavaScript SDK (April 9, 2020)
How we built the GitHub globe (December 21, 2020)
How GitHub Actions renders large-scale logs (March 25, 2021)

English / GitLab

Why We Chose Vue.js (December 1, 2016)
Our big Frontend plan revealed (February 6, 2017): long term plan to make GitLab as fast and performant as possible with Vue and webpack
How we do Vue: one year later (November 9, 2017)
How GitLab switched to Headless Chrome for testing (December 19, 2017)
Our journey in switching to native Unicode emoji (May 30, 2018)
How we iterated and improved our frontend team culture (June 26, 2018)
Why we chose ECharts for data visualizations (September 30, 2019)
How GitLab Pages made our Sketch design handoffs easier and faster (November 7, 2019)
How we created a dark UI for GitLab's Web IDE (May 20, 2020)

English / Goibibo

How Goibibo's PWA improved conversions by 60% (September 29, 2020)

English / Google

Designing very large (JavaScript) applications (April 15, 2018)
Building the Google Photos Web UI (July 10, 2018)
TypeScript at Google (September 1, 2018)
The Chrome Dev Summit site: case study (March 12,2019)
The new AdWords UI uses Dart — we asked why (March 31, 2016)
A Recipe for Designing Animations — Without Sacrificing Performance (June 4, 2019)
Bringing service workers to Google Search (June 20, 2019)
How we built the Chrome DevTools WebAuthn tab (October 22, 2020)
Migrating Puppeteer to TypeScript (January 21, 2021)
DevTools architecture refresh: migrating DevTools to TypeScript (April 8, 2021)
Implementing CSP and Trusted Types debugging in Chrome DevTools (November 1, 2021)
Why Google Sheets ported its calculation worker from JavaScript to WasmGC (June 26, 2024)

English / GOV.UK

Accessibility for developers: building a frontend that everyone can use (October 6, 2016)
Patterns for accessible webchats (December 9, 2016)
How to create content that works well with screen readers (February 8, 2017)
How we’ve made GOV.UK Elements even more accessible (February 28, 2018)
What we learned from getting our autocomplete tested for accessibility (May 15, 2018)
Accessibility lessons: dealing with a large amount of form inputs (April 8, 2019)
Why the GOV.UK Design System team changed the input type for numbers (February 24, 2020)
Why videos on GOV.UK use the YouTube video player (March 16, 2020)
How we reduced CSS size and improved performance across GOV.UK (December 15, 2023)

English / grammarly

Building Browser Extensions At Scale (October 6, 2017)
Introducing Embrace: A Framework for Building Declarative UIs (September 3, 2021)
Real-Time Collaborative Text Editing Under the Hood of the Grammarly Editor: and (April 22, 2022)
Making Grammarly Feel Native On Every Website (March 7, 2022)
part 1 How Grammarly Tackles Hidden Complexity in Front-End Applications: and (March 7, 2022)
Signals With @grammarly/focal (August 21, 2023)

English / Gusto

Scaling Front-end Architecture (June 10, 2016)
Evolving JavaScript Part 1: Goodbye Backbone (July 12, 2016)
Evolving JavaScript Part 2: Hello React (July 12, 2016)
Evolving JavaScript Part 3: Building a React Application (July 12, 2016)
Taking off with Apollo (September 12, 2018)
How I fell out of love with HOCs (December 9, 2018)

English / HealthCare.gov

Building a design system for HealthCare.gov (August 29, 2017)

English / Heap

Goodbye CoffeeScript, Hello TypeScript (October 7, 2015)
Migrating To React + MobX While Shipping New Features (August 16, 2017)
How We Write Front-end Code (February 20, 2018)
Redesigning Heap Without a Feature Branch (April 10, 2019)
How we failed, then succeeded, at migrating to TypeScript (October 10, 2019)
How we leveraged ASTs and Babel to capture everything on React Native apps (June 23, 2020)

English / in der Apotheke

Farewell, Google Maps (July 18, 2018)

English / Infinite Red

Switching from Ava to Jest for TypeScript (November 6, 2017)
Using TypeScript to upgrade Ignite without losing my mind (March 20, 2019)
Yarn 1 vs Yarn 2 vs NPM (February 6, 2020)
Why Infinite Red uses MobX-State-Tree instead of Redux (June 16, 2020)

English / Insider Inc.

How to style different sites with one CSS collection (December 17, 2018)
Why we got rid of all our front-end and back-end engineers (February 13, 2019)
Delightful ways to write reusable CSS using subclasses (March 1 , 2019)

English / Instagram

React Native at Instagram (February 7, 2017)
part 1 Making Instagram.com faster: (August 1, 2019), (September 6, 2019), (October 11, 2019), (November 1, 2019)

English / Internet Archive

Pixels vs. Ems: Users DO Change Font Size (June 13, 2018)

English / Intuit

Making Accessibility an Integral Part of the Creative Workflow (April 15, 2018)
TurboTax Live’s Approach to a Gender-Neutral Design System (February 21, 2019)
Delivering Consistent Animations with a Design System Library (April 25, 2019)
GraphQL: Intuit’s Path to ONE API System (March 13, 2019)

English / InVision

Sharing ESLint Across Teams (April 5, 2016)
Optimizing Webpack for Faster React Builds (April 12, 2016)
Persist Redux State by Using Sagas (April 26, 2016)
Testing Our Shared ESLint Configs (May 12, 2016)
How ESLint Saved Our Soul (August 12, 2016)
React Performance Tune-Up (September 23, 2016)
Building the inspect measurement engine (July 17, 2019)

English / Khan Academy

Babel in Khan Academy's i18n Toolchain (June 22, 2015)
Fun with slope fields, css and react (August 5, 2015)
Copy-pasting more than just text (August 31, 2015)
i18nize-templates: Internationalization After the Fact (September 28, 2015)
Schrödinger's deploys no more: how we update translations (October 12, 2015)
Forgo JS packaging? Not so fast (November 23, 2015)
Inline CSS at Khan Academy: Aphrodite (March 29, 2016)
Migrating to a Mobile Monorepo for React Native (May 29, 2017)
Creating Query Components with Apollo (June 12, 2017)
tota11y - an accessibility visualization toolkit (April 15, 2018)

English / Kickstarter

Namespacing Actions for Redux (November 20, 2017)

English / Klarna

Migrating from Rails’ asset pipeline to Node’s webpack (January 2, 2016)
How removing caching improved mobile performance by 25% (January 10, 2017)
Improving Communication and Confidence with Visual Snapshot Testing (March 14, 2017)
6 Lessons learned from optimizing the performance of a Node.js service (January 9, 2020)

English / Line

LINE MANGA: Smooth page transition with Page Stack (January 18, 2018)
Easy code-splitting with grow-loader (January 24, 2018)

English / LinkedIn

Bringing a Modern Javascript Build Pipeline to LinkedIn (January 20, 2016)
Sleek and Fast: Speeding Up your Fat Web Client (October 19, 2017)
The Glimmer Binary Experience (December 7, 2017)
Ember Timer Leaks: The Bad Apples in Your Test Infrastructure (January 3, 2018)
Lighter than Lightweight: How We Built the Same App Twice with Preact and Glimmer.js (March 12, 2018)
LinkedIn’s approach to automated accessibility (A11y) testing (May 21, 2020)

English / Lucidchart

IE10: How does it really stack up? (November 14, 2012)
Atomic CSS as a tool set (January 31, 2014)
The Definitive Guide to Copying and Pasting in JavaScript (December 2, 2014)
Big content in a little canvas (May 19, 2015)
Improving Angular 2 Load Times and a 29KB Hello World App (September 26, 2016)
Angular 2 and Observables: Data Sharing in a Multi-View Application (November 8, 2016)
Using Angular 2 Components In a Non-Angular App (April 10, 2017)
Converting 600k lines to TypeScript in 72 hours (November 16, 2017)
How to handle folder uploads in Angular 2+ (January 3, 2018)
JavaScriptCore – The Holy Grail of Cross Platform (February 14, 2018)
How to Actually Improve Type Safety with the TypeScript Strict Flags (June 20, 2018)
ZoneTracker: Tracking JavaScript Performance with Zone.js (November 9, 2018)
JavaScriptCore—10 Months Later (January 3, 2019)

English / Lyft

TypeScript at Lyft (September 27, 2017)
Re-approaching Color (September 21, 2018)
Changing Lanes: How Lyft is Migrating 100+ Frontend Microservices to Next.js (November 30, 2020)
Frontend at Lyft: An Overview (March 9, 2021)

English / Mail.ru

Improving Core Web Vitals on the Mail.ru home page resulted in an average 10% increase in conversion rates (November 15, 2021)

English / Mailchimp

Designing automated tests for React (August 10, 2019)

English / MDN

Refactoring MDN macros with async, await, and Object.freeze() (February 7, 2019)

English / Medium

Why ContentEditable is Terrible (May 14, 2014)
Wait, Don’t Touch That! Mutual Exclusion Locks & JavaScript (January 17, 2015)
The curious case of the disappearing Polish S (February 2, 2015)
Five Goofy Things Medium Did That Break Accessibility (June 29, 2015)
The Unluckiest Paragraphs: A Tale of CSS and Why Parts of Medium Sometimes Disappear (December 5, 2015)
Simple Style Sheets, Or How to Improve Your Sleep by Dropping the Cascade (September 28, 2016)
2 Fast 2 Furious: migrating Medium’s codebase without slowing down (March 22, 2018)
The case of the eternal blur: a bug hunt horror novella (May 2, 2018)
GraphQL Server Design @ Medium (November 2, 2018)

English / MemSQL

Porting 30K lines of code from Flow to TypeScript (January 13, 2019)

English / Mercado Libre

How Mercado Libre optimized for Web Vitals (TBT/FID) (September 21, 2020)

English / Microsoft Bing

Fast Front-End Performance for Microsoft Bing (August 25, 2022)

English / Microsoft To-Do

How We React at Microsoft To-Do (January 5, 2018)

English / Mixmax

Scaling Mixmax: Front-end performance (May 5, 2015)
How we built ‘instant’ autocomplete for Mixmax (November 5, 2015)
Yarn-ifying Mixmax: why and how we moved from npm to Yarn (April 24, 2017)
Using CORS policies to implement CSRF protection (June 13, 2017)
React without Redux: how we moved from Backbone to React without rewriting (July 26, 2017)
Handling 3rd-party JavaScript with Rollup: how and when to leave JS out of the bundle (December 3, 2017)
Precisely observing structural page changes (December 7, 2017)
Choosing (and using) Javascript static typing: how Mixmax Engineering adopted Flow (May 15, 2018)
To Yarn and Back (to npm) Again (May 29, 2018)

English / Mixpanel

Straightening our Backbone: A lesson in event-driven UI development (April 8, 2015)
Making Web Components Work, or: How We Learned to Stop Worrying and Love the DOM (June 12, 2018)

English / Monzo

Building a Bank with Next.js: How We Use Next.js at Monzo (December 2, 2020)

English / Mozilla

The Art of UI Skeletons (April 23, 2019)
To Eleventy and Beyond (October 1, 2020)

English / Mud

A Year of Utility Classes (January 28, 2019)

English / Myntra

Myntra’s Web UI Journey — AMP and PWA (January 31, 2018)

English / Netflix

HTML5 Video Playback UI (October 21, 2013)
Improving the performance of our JavaScript inheritance model (May 16, 2014)
Node.js in Flames (November 19, 2014)
JSON Graph: Reactive REST at Netflix (April 1, 2015)
Localization Technologies at Netflix (June 4, 2015)
Making Netflix.com Faster (August 5, 2015)
Crafting a high-performance TV user interface using React (January 12, 2017)
Netflix's approach to ES6 feature detection (January 20, 2017)
Pass the Remote: User Input on TV Devices (May 17, 2017)
Shop Talk podcast #264: React with Netflix (May 22, 2017)
Performance Signup in React & Transactional Apps with Redux (October 25, 2017)
Implementing Japanese Subtitles on Netflix (December 11, 2017)
Integrating imperative APIs into a React application (December 20, 2017)
Pseudo Localization @ Netflix (August 6, 2018)
Delivering Meaning with Previews on Web (November 12, 2018)
Enhancing the Netflix UI Experience with HDR (September 24, 2018)
Our learnings from adopting GraphQL (December 10, 2018)
Modernizing the Web Playback UI (December 12, 2018)
Architecting UI for Netflix Studio Technology (November 14, 2019)

English / New Relic

Real-World JavaScript Performance Tips (November 14, 2014)
How We Architected the New Relic Mobile Web UI in React (January 3, 2018)

English / Notion

Migrating Notion's marketing site to Next.js (August 12, 2021)

English / npm

Re-inventing npmjs.com (April 3, 2018)
JavaScript Usage by Industry (June 27, 2018)

English / OK GROW!

Migrating from Iron Router to FlowRouter (with Blaze) (September 17, 2015)
Where does Redux fit in Meteor? (July 15, 2016)
Real-world Unit Testing with Meteor and Jest (October 17, 2017)
Optimizing a GraphQL app using Apollo Engine (February 12, 2019)

English / OYO

OYO on a User Experience Quest with AMP ⚡ (January 11, 2018)
Brotli vs Gzip Compression. How we improved our latency by 37% (June 29, 2018)
AMP for Email - Interactive and Dynamic Email Experiences at OYO (March 26, 2019)
Shipping ES6 in browsers without Polyfill (April 17, 2019)
Signed-Exchange: Solving the AMP URLs Display Problem (May 7, 2019)
Building Chrome Extension with ReactJs: Beginner’s Guide (May 13, 2019)
A complete implementation guide to Trusted Web Activity(TWA)- OYO Lite (November 7, 2019)
Migrating to webpack 5 to improve build time and reduce chunk sizes (June 30, 2021)

English / Oyster

Oyster Shots on the Front End (July 29, 2011)
Using React and jQuery Together (March 22, 2016)

English / Palantir

Scaling product design with Blueprint (January 6, 2017)
TSLint in 2019 (February 19, 2019)

English / PayPal

Sane, scalable Angular apps are tricky, but not impossible. Lessons learned from PayPal Checkout (September 26, 2015)
Auto-shrink-wrapping in PayPal Checkout, and how it’s saved us more than once (February 10, 2016)
Dependency injection in Angular isn’t worth it. More lessons learned from scaling PayPal Checkout (April 3, 2016)
Less is more: reducing thousands of PayPal buttons into a single iframe, using zoid (March 17, 2017)
Safari’s new third party tracking rules, and enabling cross-domain data storage (August 30, 2017 )
Reinventing cross-origin requests, without CORS (September 6, 2017)
Introducing PayPal’s open-source cross-domain javascript suite (October 16, 2017)
GraphQL: A success story for PayPal Checkout (October 17, 2018)
Why every new web app at PayPal starts with TypeScript (January 21, 2019)
Scaling GraphQL at PayPal (October 30, 2019)
Sharing UI Components at an Enterprise Level (June 2, 2020)
How Micro Frontend Has Changed Our Team Dynamic (August 10, 2020)
GraphQL at PayPal: An Adoption Story (September 1, 2021)

English / Pinafore

Introducing Pinafore for Mastodon (April 9, 2018)
Scrolling the main document is better for performance, accessibility, and usability (November 18, 2018)
Building a modern carousel with CSS scroll snap, smooth scrolling, and pinch-zoom (February 10, 2019)
One year of Pinafore (June 2, 2019)
The joy and challenge of developing for KaiOS (September 22, 2019)
What I’ve learned about accessibility in SPAs (November 5, 2019)

English / Pinterest

Gone In 60 Frames Per Second: A Pinterest Paint Performance Case Study (June 10, 2013)
Demystifying SEO with experiments (January 27, 2015)
How we made JavaScript testing 15x faster (February 3, 2015)
Making Pinterest HTTPS (March 13, 2015)
How we switched our template rendering engine to React (November 18, 2016)
Introducing Bonsai: an open source Webpack analyzer (June 2, 2017)
Migrating Pinterest profiles to React (September 23, 2016) ( ) (November 22, 2017)
A Pinterest Progressive Web App Performance Case Study (November 30, 2017)
Supporting React Native at Pinterest (May 10, 2018)
A one year PWA retrospective (July 20, 2018)

English / Pivotal Tracker

Using Elm in Production at Pivotal Tracker (January 31, 2017)
Improving Accessibility in Pivotal Tracker (February 1, 2018)

English / Plaid

Securing WebViews with Chrome Custom Tabs (April 9, 2020)

English / Plotly

Modularizing monolithic javascript projects in plotly.js (January 28, 2016)

English / Product Hunt

React @ Product Hunt (May 30, 2017)
GraphQL @ Product Hunt (November 2, 2017)

English / Proton

Deploying CSS Logical Properties On Web Apps (December 23, 2022)

English / Quizlet

Smooth Game Animations in React (February 18, 2016)
Launching A Successful Redesign For 20 Million Students (June 13, 2017)
Cypress: The future of end-to-end testing for web applications (February 8, 2018)
Now or Never: Migrating 300k LOC from Flow to TypeScript at Quizlet (June 18, 2019)

English / Quora

Faster Paint Times (August 18, 2016)
Choosing Quora’s GraphQL client (July 22, 2020)

English / REA Group

ReactJS – Real World Examples of Higher-Order Components (May 6, 2016)
Singletons Suck (aka Flux to Redux) (August 17, 2016)
ReactJS Performance Debugging (aka The Magic of Reselect Selectors) (September 9, 2016)
My Journey in a UI Project (aka front-end is the new back-end) (June 23, 2017)

English / Reaktor

Refactoring 30000 lines of JS with types (January 24, 2017)

English / Reddit

How We Built r/Place (April 13, 2017)
Why We Chose Typescript (June 30, 2017)

English / Redmart

Angular The Hard Way #1 Organise and manage domain data (April 22, 2015)
RedMart's experience with PWA (October 25, 2018)
How we use Storybook for documentation and code reviews (November 14, 2018)

English / repl.it

Infinite Loops (January 23, 2017)
Modular, fast, small: how we built a server-rendered IDE (February 14, 2018)

English / Revolut

How we learned to stop worrying and love GraphQL (August 8, 2019)
The fundamentals of web development at Revolut (January 4, 2021)

English / Roompact

Elm In Production: 25,000 Lines Later (July 30, 2017)

English / Safety Culture

Why we moved our graphQL server from Node.js to Golang (June 27, 2018)

English / Scratch

Porting Scratch from Flash to JavaScript: Performance, Interoperability and Extensions (February 28, 2019)

English / Sentry

Building Sentry: Source maps and their problems (July 16, 2019)
Slow and Steady: Converting Sentry’s Entire Frontend to TypeScript (April 12, 2021)
How we trimmed the Sentry JavaScript SDK file size by 20% (February 28, 2022)
JavaScript SDK “Package Size is Massive” - So we reduced it by 29% (July 19, 2022)
Understanding the Performance Impact of Generated JavaScript (July 22, 2022)
How We Made JavaScript Stack Traces Awesome (November 30, 2022)
Sentry’s Frontend Tests: Migrating from Enzyme to React Testing Library (February 23, 2023)
How we reduced CI time by 35% with Nx Caching (March 31, 2023)
Measuring Session Replay Overhead (July 5, 2023)
How We Reduced Replay SDK Bundle Size by 35% (November 14, 2023)

English / Shopify

How 17 lines of code improved shopify.com loading by 50% (May 24, 2017)
Building Shopify mobile with native and web technology (September 29, 2017)
Designing a GraphQL API (June 18, 2018)
Want to Improve UI Performance? Start by Understanding Your User (October 20, 2019)
How We Built Hydrogen: A React Framework for Building Custom Storefronts (June 22, 2022)

English / Skillshare

How We Ditched Redux for MobX (July 2, 2018)

English / Slack

Reducing Slack’s memory footprint (March 3, 2017)
TypeScript at Slack (April 11, 2017)
Rebuilding Slack’s Emoji Picker in React (May 23, 2017)
Getting to Slack faster with incremental boot (July 5, 2016)
Localizing Slack (September 12, 2017)
Rebuilding slack.com (October 11, 2017)
Keep webpack Fast: A Field Guide for Better Build Performance (January 17, 2018)
When a rewrite isn’t: rebuilding Slack on the desktop (July 22, 2019)
Service Workers at Slack: Our Quest for Faster Boot Times and Offline Support (August 29, 2019)
The Gradual Design System: How We Built Slack Kit (September 12, 2019)
Building Dark Mode on Desktop (September 24, 2019)
Gantry: Slack’s Fast-booting Frontend Framework (October 23, 2019)
A Day in the Life of a Frontend Product Engineer at Slack (February 5, 2020)
How Slack changed the way it designs accessible frontend components (May 2020)
The Unsuspecting Beauty & Complexity of Web Forms (September 15, 2020)
part 1 Creating a React Analytics Logging Library: (November 7, 2020) and (December 16, 2020)
Managing Focus Transitions in Slack (July 13, 2021)

English / Snipcart

The Story of our Progressive Migration from Backbone to Vue.js (July 20, 2017)

English / SoundCloud

Front-end JavaScript bug tracking (November 21, 2011)
Building The Next SoundCloud (June 14, 2012)
Smooth image loading by upscaling (February 20, 2014)
React Native at SoundCloud (August 3, 2016)
Garbage Collection in Redux Applications (January 24, 2019)
Playback on Web at SoundCloud (May 3, 2019)

English / Spectrum

Tech Choices I Regret at Spectrum (January 16, 2019)

English / Spotify

Spotify Wrapped 2018 — Technical Case Study (December 18, 2018)
Building Spotify’s New Web Player (March 25, 2019)
(Right to Left (The Mirror World (April 15, 2019)
web-scripts – creating NPM libraries in a snap at Spotify (July 3, 2019)
Reimagining Design Systems at Spotify (December 16, 2019)

English / Stack Overflow

HTTPS on Stack Overflow: The End of a Long Road (May 22, 2017)
Building dark mode on Stack Overflow (March 31, 2020)

English / stripe

Connect: behind the front-end experience (June 19, 2017)
A new approach to mocking GraphQL data: how we power React component tests and examples at Stripe (December 11, 2018)
Designing accessible color systems (October 15, 2019)
To design and develop an interactive globe (September 1, 2020)
Migrating millions of lines of code to TypeScript (May 20, 2022)

English / SumUp

10 lessons learned building SumUp’s design system (August 15, 2019)

English / Superhuman

Delightful search: more than meets the eye (May 5, 2017)

English / TakeShape

Why we switched from Yarn to pnpm (June 9, 2020)

English / The Guardian

What we learnt from our mistakes in 2016 (December 18, 2016)
Revisiting the rendering tier (April 4, 2019)
Migrating the Guardian website to React (December 8, 2019)

English / The Knot Worldwide

Rebuilding the Guest List Manager with React + MobX at The Knot (June 19, 2017)
React Native @ The Knot (February 8, 2019)
React Native @ The Knot: A Designer’s Perspective (February 13, 2019)

English / The New York Times

The Technology Behind the NYTimes.com Redesign (January 8, 2014)
Improving Article Accessibility (June 24, 2014)
Building a Cross Platform 360-degree Video Experience at The New York Times (November 11, 2016)
React, Relay and GraphQL: Under the Hood of The Times Website Redesign (June 30, 2017)
GraphQL in real life (April 19, 2019)
How We Implemented a Baseline Grid Using CSS (November 21, 2019)
A More Accessible Web (February 25, 2021)

English / The Telegraph

React Serverside rendering : build slicker apps with better SEO ranking (September 10, 2018)
Improving third-party web performance at The Telegraph (April 30, 2019)
Improving Cumulative Layout Shift at Telegraph Media Group (June 14, 2021)

English / The Times & The Sunday Times

Building the UI for the new The Times website (March 30, 2016)

English / The U.S. Digital Service

Building Forms Faster on Vets.gov (June 2, 2017)

English / The Wall Street Journal

Making WSJ.com more accessible (August 3, 2016)

English / This Also

Fixing HTML Video on Mobile (July 14, 2016)

English / ThomasNet

How We Adopted CSS Grid at Scale (March 1, 2018)

English / Thread

Dealing with legacy code in React (May 10, 2018)
Searching and sorting text with diacritical marks in JavaScript (August 29, 2018)

English / Tinder

A Tinder Progressive Web App Performance Case Study (December 24, 2017)
Building Tinder Online (February 9, 2018)

English / Tines

Our approach to CSS and how we chose it (publication date is unknown)
Understanding why our build got 15x slower with Webpack 5 (publication date is unknown)

English / TinyMCE

TinyMCE is going mobile (March 31, 2017)
Benefits of gradual strong typing in JavaScript (January 25, 2019)

English / Tokopedia

A Tokopedia Mobile Web Performance Case Study (May 22, 2020)
How focusing on web performance improved Tokopedia's click-through rate by 35% (October 13, 2020)

English / Treebo

A React And Preact Progressive Web App Performance Case Study: Treebo (September 13, 2017)
Redux Middlewares — An approach to cancel redux actions (May 4, 2018)
How do we design for an operations heavy product? (May 31, 2018)
Iconography for Treebo (August 13, 2018)
Improving User Experience with AMP⚡- A Treebo Case Study (March 16, 2019)
A Tale of Brotli Compression (January 20, 2020)
GraphQL at Treebo (October 23, 2020)

English / Trivago

Designing for RTL platforms - A flipped layout (April 27, 2015)
Risk-free Migration From Assetic to Webpack (May 28, 2015)
Speeding up webpack performance with parallel builds (December 15, 2015)
Large Scale CSS Refactoring at trivago (February 2, 2016)
Dropping IE8 Support: Consequences for JavaScript (June 1, 2016)
Thoughts on Atom Building in the Pattern Library (June 16, 2016)
An Inline SVG Icon System For Our Hotel Search Application (September 5, 2016)
CSS done right - Post RTLCSS (July 7, 2017)
Accessibility at trivago (September 26, 2017)
trivago just made filtering faster and more accessible, but why and how? (December 22, 2017)
Melody - the sound of JavaScript for our Hotel Search (June 28, 2018)
Building fast and reliable web applications (October 12, 2018)
Presenting babel-plugin-cloudinary (April 2, 2019)
trivago Magazine's Journey to Server-Side Rendering (January 29, 2020)
The First Prettier Plugin For Twig is Here (March 10, 2020)
Exploring the Page Visibility API for Detecting Page Background State (November 17, 2020)
Rethinking the Next-gen Analytics Web App at trivago (February 9, 2021)
Designing Marketing Emails via predefined Modules in Salesforce Email Studio (April 19, 2021)
WARP - A Web Application Rewrite Project (May 16, 2022)
3 Things We Learned When Switching to TypeScript (August 1, 2022)
End-to-end tests retry strategies (September 27, 2023)

English / Tumblr

Moving things out of critical rendering path (February 19, 2016)
The Road to Webpack (April 29, 2016)
Flow and TypeScript (September 7, 2017)
Using srcset and sizes to make responsive HTML5 images (March 5, 2018)
A Big New Beautiful Future for the Web at Tumblr (April 5, 2018)
How we wrote our own Service Worker (February 1, 2019)
We’re making Tumblr more accessible! (January 17, 2019)

English / Twitch

Improving Chat Rendering Performance (August 8, 2016)
Investigating React Native (April 25, 2017)
Beyond Purple (December 3, 2019)

English / Twitter

View Source: Twitter.com (January 1, 2017)
How we built Twitter Lite (April 6, 2017)
Infinite List and React (April 9, 2017)
Twitter Lite and High Performance React Progressive Web Apps at Scale (April 11, 2017)
The Twitter Lite team about their use of Node.js (April 12, 2017)
Redux modules and code-splitting (February 02, 2018)
How using component-based design helps us build faster (July 16, 2019)

English / Uber

Powering UberEATS with React Native and Uber Engineering (March 28, 2017)
Building m.uber: Engineering a High-Performance Web App for the Global Market (June 27, 2017)
Javascript @ Uber (July 10, 2017)
Building a More Seamless Web Booking Flow for Uber (July 25, 2019)
Best Practices for Unit Testing in React Version 16 (August 29, 2019)
Counting Calories: How We Improved the Performance and Developer Experience of UberEats.com (February 12, 2020)

English / Udacity

How a Fixed-Width Button Can Get Your Company Trending on Reddit for All the Wrong Reasons: A Front-End Developer Tale (April 11, 2016)
React Native: A retrospective from the mobile-engineering team at Udacity (July 3, 2018)
Udacity’s Front-End Tech Stack (July 18, 2016)

English / Unity

WebAssembly is here! (August 15, 2018)
WebAssembly Load Times and Performance (September 17, 2018)

English / Unsplash

How we gradually migrated to TypeScript at Unsplash (March 14, 2018)

English / Vercel

How we made the Vercel Dashboard twice as fast (August 9, 2022)
Designing the Vercel virtual product tour (June 2, 2023)
Design Engineering at Vercel (March 29, 2024)
How Vercel adopted microfrontends (October 22, 2024)

English / Verve

GraphQL: A Retrospective (November 28, 2018)

English / Walmart Labs

React Native at WalmartLabs (December 19, 2016)
Cutting Dev Time in Half With Invalid User Input Prevention (October 25, 2017)
Migrating Angular 1.x apps to React — The Hybrid Way! (November 15, 2017)
Migrating Large Enterprise to NodeJS (December 9, 2017)
Primer on Front End Automation (July 27, 2018)
Lazy Loading Images with IntersectionObserver (September 10, 2018)
Midway: Walmart’s mocking journey… (October 5, 2018)
Infinite Scroll’ing the right way (April 2, 2019)
Delivering ReactJS applications at scale (August 26, 2019)
Turbocharging Walmart.com (April 9, 2020)
Differential Serving — Food for latest browsers (June 23, 2020)

English / Wikimedia

Creative Techniques for Loading Web Pages Faster (January 17, 2012)
Investigating a performance improvement (June 2, 2017)
Improving time-to-logo performance with preload links (June 7, 2017)
Beacons (August 16, 2017)
Measuring Wikipedia page load times (January 9, 2018)
mustache.js replaced with JavaScript template literals in Extension:Popups (April 3, 2018)
Extension:Popups (Page Previews) front-end tooling (April 19, 2018)
Mobile web performance: the importance of the device (June 22, 2018)
Why performance matters (December 12, 2018)
Migrating code from MediaWiki's ResourceLoader to Webpack (March 13 2019)
Evaluating Element Timing for Images (April 10, 2019)
Performance perception: how satisfied are Wikipedia users? (May 29, 2019)
Performance perception: the effect of late-loading banners (June 13, 2019)
Performance perception: correlation to RUM metrics (June 17, 2019)
Tracking down slow event handlers with Event Timing (June 19, 2019)
Wikipedia's JavaScript initialisation on a budget (Septemper 18, 2019)
Measuring Long Tasks and First Input Delay (December 21, 2019)
Analyzing Wikipedia's Search Performance (April 5, 2021)
300ms Faster: Reducing Wikipedia's Total Blocking Time (May 21, 2023)

English / Wingify

jQuery Promises: The answer to PostMessage's asynchrony (June 17, 2013)
How We Made The Animated A/B Testing Guide (July 8, 2013)
Getting 60 FPS using Chrome devtools (July 29, 2013)
Overcoming the Challenges of Performance Testing Single-page Apps (January 29, 2015)
Testing AngularJS Apps End to End Using Protractor (February 13, 2015)
A layout trick (April 4, 2016)
Speeding Up VWO (September 17, 2016)
Migrating towards Yarn and Webpack (October 4, 2017)
Why we've removed Inheritance/Extend from SASS & you should do the same! (November 30, 2017)
Automated Heatmap Verification E2E using Selenium and Canvas (April 3, 2018)

English / Wix

Taking CSS To Scale: A Pragmatic Approach (July 13, 2016)
Building a React Native App for 80 Million Users (October 1, 2016)
The Story of Making Wix Accessible (December 14, 2017)
Improving load time for 100 million websites (June 26, 2018)
Trim the Fat From Your Bundles Using Webpack Analyzer & React Lazy/Suspense (September 2, 2019)
How Wix improved website performance by evolving their infrastructure (March 10, 2021)
When life gives you lemons, write better error messages (September 12, 2022)

English / Yelp

Whoa! That Embedded Web View Looks Hot in Your iOS App! (November 7, 2013)
CSS in the Age of React: How We Traded the Cascade for Consistency (March 5, 2018)
Organizing and Securing Third-Party CDN Assets at Yelp (November 20, 2019)
Server Side Rendering at Scale (February 22, 2022)
Migrating from Styleguidist to Storybook (July 6, 2022)
Writing Emails Using React (July 20, 2022)
Gondola: an internal PaaS architecture for frontend app deployment (March 3, 2023)

English / YNAB

Progressive Conversion of TypeScript Namespaces to Modules (September 23, 2019)
part 1 Semantic Colors for Designers and Developers: , and (February 12, 2020)
How we use OpenAPI / Swagger for the YNAB API (March 16, 2020)

English / YouTube

Page Weight Matters (December 21, 2012)
Polymer @ YouTube (August 22, 2017)
A Conspiracy To Kill IE6 (May 1, 2019)
Building a Better Web - Part 1: A faster YouTube on web (October 20, 2022)

English / Zajno

Visualizing money: how we explained a complex financial product using animation (September 25, 2018)

English / Zynga

Why & How Words With Friends Is Adopting React Native (September 17, 2018)
React Native Stability Monitoring (May 14, 2019)

English / 18F

Building a large-scale design system: How we created a design system for the U.S. government (October 3, 2017)

English / 1Password

From dark to light and back again (November 8, 2018)
How we used esbuild to reduce our browser extension build times by 90% (May 30, 2024)

English / Miscellaneous

PWA Stats
Web Performance Optimization Stats
Production Web Apps Performance Study Q4/16 - Q1/17 174 almost 8 years ago (January 21, 2017)
Case study: improving a popular library’s size for webpack users (June 23, 2017)
Case study: analyzing the Walmart site performance (April 27, 2018)
part 1 Web Components for Enterprise (July 2019): and
Frontend at scale : leaders at Atlassian, Canva, Tinder, and Vimeo discuss frameworks, tooling, and rapidly evolving technologies (May 2020)
Introducing emoji-picker-element: a memory-efficient emoji picker for the web (June 28, 2020)
Building an accessible emoji picker (July 1, 2020)
How ZDF created a video PWA with offline and dark mode (October 7, 2020)
NDTV achieved a 55% improvement in LCP by optimizing for Core Web Vitals (October 27, 2020)
Rakuten 24’s investment in PWA increases user retention by 450% (November 17, 2020)
JD.ID improves their mobile conversion rate by 53% with caching strategies, installation, and push notifications (November 24, 2020)
PWA users are 2.5x more likely to purchase Gravit Designer PRO (December 8, 2020)
Clipchamp's video editor PWA installs see a 97% monthly growth (December 8, 2020)
How Zalando reduced performance feedback time from 1 day to 15 minutes with Lighthouse CI (April 13, 2021)
Mainline Menswear implements PWA and sees a 55% conversion rate uplift (April 20, 2021)
How Swappie increased mobile revenue by 42% by focusing on Core Web Vitals (September 15, 2021)
How Terra improved user engagement thanks to Dark Mode (December 18, 2021)

Russian / Amplifr

Принципы разработки Амплифера (2019)
Как Амплифер использует Logux — инструмент для связи клиента и сервера (5 марта 2020)

Russian / Aviasales

Как мы строим веб-платформу в Авиасейлс (4 ноября 2021)

Russian / Avito

Фронтенд в Avito (13 декабря 2015)
Фронтенд для миллионов (24 июня 2017)
Дизайн-платформа в Avito (8 апреля 2017)
Скриншоты как сервис (7 марта 2018)
Unit-тестирование скриншотами: преодолеваем звуковой барьер (14 марта 2018)
Масштабируемая архитектура фронтенда (7 апреля 2018)
Каталог компонентов: переосмысление (19 мая 2018)
Avito Online Frontend: Infrastructure (11 декабря 2018)
Avito Online Frontend: Performance (18 декабря 2018)
Жесть для Jest (17 августа 2019)
Как мы нарисовали на карте несколько тысяч интерактивных объектов без вреда для перформанса (29 июля 2020)
Webpack в дикой природе (20 ноября 2020)

Russian / auto.ru

Полный цикл тестирования React-приложений (14 июля 2019)

Russian / Badoo

Многоязычный Badoo: «трудности перевода» (22 мая 2014)
Специфика верстки мультиязычных веб-приложений (26 марта 2015)
Как собрать статистику с веб-сайта и не набить себе шишек (29 марта 2017)
Работаем с API по-взрослому (14 апреля 2017)
Покрываем A/B-тесты UI-тестами. Как не запутаться в собственном коде (26 декабря 2018)
Часть 1 Sketch + Node.js: генерируем иконки для множества платформ и брендов. (27 февраля 2019) и (12 марта 2019)
Локализация приложений: как мы подружили перевод и разработку (23 января 2020)
Дизайн-токены способны на большее: создаем единый источник информации о компонентах UI (12 марта 2020)
Как перенести на TypeScript большую кодовую базу React UI-компонентов (9 сентября 2020)

Russian / Delivery Club

Микрофронтенды: разделяй и властвуй (14 апреля 2021)

Russian / DIRECTUM

Опыт перевода большого проекта с Flow на TypeScript (1 августа 2019)

Russian / Flocktory

Разработка сторонних библиотек (22 мая 2017)

Russian / GitLab

Методы борьбы с legacy-кодом на примере GitLab (10 декабря 2019)

Russian / HeadHunter

Нянчим проект на React-redux с пелёнок (21 сентября 2016)
Качество кода фронтенда в HH (4 февраля 2019)
Как мы пилили серверный рендеринг и что из этого вышло (28 марта 2019)
Перфоманс фронтенда как современное искусство: графики, код, кулстори (17 сентября 2020)
«Продам гараж»: фронт и реклама в hh.ru (14 апреля 2021)

Russian / ISPSystem

Обновляем Angular до 6-ой версии в проекте без использования CLI (16 мая 2018)
Как организовать собственный репозиторий модулей Node.js с блэкджеком и версионностью (25 июля 2018)
Как разделить фронтенд и бэкенд, сохранив взаимопонимание (11 апреля 2019)
От библиотеки компонентов к дизайн-системе (23 июня 2020)
Ленивая подгрузка переводов с Angular (22 июля 2020)

Russian / Joom

Автоматизируем локализацию макетов в Figma (29 декабря 2020)
Пошаговая инструкция: как с Node.js организовать иконки из Figma в проекте (30 декабря 2022)

Russian / Mail.Ru

Разработка собственного решения: риски и ответственность (26 ноября 2015)
Frontend: Разработка и поддержка (6 сентября 2016)
Архитектура фронтенда крупного проекта, как она есть (19 апреля 2018)
запись доклада WebAuthn в реальной жизни: (27 ноября 2019), (20 февраля 2020)
Кастомизация компонентов Ant Design и оптимизация бандла (11 декабря 2020)
Адаптивный layout — как переверстать весь проект, не перевёрстывая его (24 сентября 2021)

Russian / Microsoft To-Do

Как Microsoft To-Do использует React (18 июня 2018)

Russian / Miro

Как мы учились рисовать тексты на Canvas (3 июля 2019)
Как мы боролись за байты на фронтенде. Усмиряем прожорливый виджет рисования и помогаем iPad его переварить (6 июля 2021)

Russian / Netcracker

Выбранный UI-фреймворк – вред. Архитектурные требования – профит (20 июля 2017)
Микросервисный фронтенд — современный подход к разделению фронта (21 августа 2018)

Russian / OneTwoTrip

9 лет в монолите на Node.JS (9 июля 2019)
Как мигрировать с mocha на jest в 14 простых шагов — и зачем (31 января 2020)

Russian / Rambler Group

Как мы разогнали мобильную Lenta.ru до скорости света (31 марта 2016)
Проектирование дизайн-системы Рамблера (18 июня 2018)
Опыт Rambler Group: как мы начали полностью контролировать формирование и поведение фронтовых React компонентов (12 июля 2018)
Apollo: 9 месяцев — полет нормальный (27 июля 2018)
Способы синхронизации вкладок браузера (7 сентября 2018)
Маршрутизация в большом приложении на React (27 сентября 2018)

Russian / Setka

Разработка Rich Text Editor: проблемы и решения (5 марта 2018)

Russian / Skyeng

Как масштабировать сложный Single Page Application (5 июня 2017)
цели, планы и правила переноса элементов Переход с AngularJS на Angular (февраль 2018): , ,
От Skype до WebRTC: как мы организовали видеосвязь через веб (3 апреля 2019)
Как мы подружили SCSS с CSS Variables на примере c темизацией UI Kit (9 июля 2019)

Russian / Sports.ru

Как в Sports.ru писали свой WYSIWYG-редактор (13 марта 2020)

Russian / Tinkoff

Как мы разрабатываем новый фронтенд Tinkoff.ru (23 июня 2016)
Создание Tinkoff Design System. Первые шаги (18 апреля 2017)
Создание Tinkoff Design System. UI Kit, версионирование и витрина компонентов (9 октября 2017)
Как организовать работу над библиотекой общих компонентов (25 сентября 2019)
WARNING: sanitizing HTML stripped some content и как с ним правильно бороться (27 сентября 2019)
Как заопенсорсить npm-пакет с нормальным деплоем, CI и демо (без потери радости к жизни) (30 сентября 2019)
Компоненты-агностики в Angular (25 октября 2019)
«Шакал»: сжимаем фронтенд (7 ноября 2019)
часть 1 Как мы распилили монолит: , , , (август–декабрь 2020)

Russian / Wrike

Чем плох JavaScript в большом проекте? С какими проблемами мы столкнулись и как их решали (16 февраля 2016)
Как отрефакторить 2 500 000 строк кода и не сойти с ума (5 июня 2017)
Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (15 июня 2017)
DIY: Как мы делали «живое» расписание для Codefest X (18 апреля 2019)
10 верстальщиков на 30 команд. Вы рехнулись? (21 мая 2019)
Как настроить веб-аналитику на AMP страницах (26 июня 2019)

Russian / Альфа-Банк

Предъявите паспорт (18 августа 2017)
БЭМ + React: гибкая архитектура дизайн-системы (23 октября 2017)
Изоморфное приложение React JS + Spring Boot (27 октября 2017)
Атомарные SPA (7 апреля 2018)
Тёмная сторона дизайн-системы и что с ней делать (16 марта 2020)

Russian / Бюро Горбунова

Как в книгах Бюро тяжёлые картинки выгружаются из памяти, чтобы браузер не тормозил (29 июня 2017)

Russian / ВКонтакте

React со скоростью света: не совсем обычный серверный рендеринг (2 июня 2017)
Как оседлать радугу: история создания тёмной темы (29 апреля 2019)
Баги, которые вы никогда не встретите (26 ноября 2019)
Бенчмарки VKUI и других ребят из UI-библиотек (26 мая 2021)

Russian / Додо Пицца

Додо Пицца: собственная касса на веб-технологиях (14 октября 2019)
Лошадь сдохла – слезь: переход с tslint на eslint (29 октября 2019)

Russian / Леруа Мерлен

Опыт интеграции веб-компонентов на сайт Леруа Мерлен (18 февраля 2020)

Russian / Медуза

Веб-пуш уведомления в Медузе (10 декабря 2015)
AMP, Instant Articles, Instant View, whut? (23 ноября 2016)
Как использовать кастомные шрифты в вебе и не сойти с ума (1 декабря 2016)
Подкасты «Медузы» (21 сентября 2017)
Как техотдел «Медузы» решил оптимизировать картинки — а в процессе переделал сайт, админку и подход к интерфейсу (13 июля 2020)

Russian / Одноклассники

Архитектура и платформа проекта Одноклассники (21 марта 2011)
Как мы оптимизировали социальную кнопку (26 августа 2013)
Часть 1 Новый фронтенд Одноклассников: запуск React в Java. и (январь–февраль 2020)

Russian / Сбербанк

За закрытой дверью фронтенда Единой фронтальной системы (ЕФС) (7 апреля 2017)
Redux как сердце архитектуры фронтенда Единой фронтальной системы (4 мая 2017)
Работа с периферией из JavaScript: от теории к практике (15 июня 2017)
Как работают приложения Сбербанк Онлайн: Workflow API и фрэймворки (18 апреля 2018)

Russian / Ситимобил

Хороший ли выбор Svelte для реализации виджета? (28 мая 2020)

Russian / Спортмастер

Frontend в Sportmaster Lab (4 декабря 2020)

Russian / Учи.ру

Интерфейсы для тех, кто еще не читает. Принципы проектирования детского UX-UI (24 августа 2020)
Единый UI-кит и синхронизация дизайна в Учи.ру. Часть 1 (20 февраля 2021)

Russian / Хабр

Как мы ускоряли комментарии Хабра (25 ноября 2021)

Russian / ЦИАН

Микросервисный фронтенд (7 ноября 2018)
доклад Как разрабатывать сотни A/B-экспериментов: , (28 мая 2019)
Внедряем Sign in with Apple — систему авторизации от Apple (8 ноября 2019)
Micro-frontends. Асинхронный подход к мультикомандной разработке (28 августа 2020)
Время менять шапки: ускорение мобильной поисковой выдачи Циан (11 января 2021)

Russian / ЮMoney (Яндекс.Деньги)

Прототипирование на продакшн-технологиях (26 октября 2017)
Почему Node.js в качестве основы фронтенда – это круто (31 июля 2017)
Создание NPM-модуля Яндекс.Кассы под Node.js — опыт Lodoss Team (1 февраля 2018)
Фронтенд как у сына маминой подруги (26 апреля 2018)
Реактивный фронтенд. История о том, как мы снова всё переписали (15 июня 2018)
Jenkins на службе фронтенд-разработки (22 февраля 2018)
Обзор архитектуры фронтенда ЮMoney (15 декабря 2020)

Russian / Яндекс

Как инкрементальные обновления влияют на скорость загрузки. Опыт Яндекс.Почты (6 ноября 2014)
Accessibility. Как мы делаем Яндекс доступным людям с ограниченными возможностями и почему считаем это важным (21 мая 2015)
Лекция Виталия Харисова «10k» про лёгкую версию поиска для медленных соединений и способы оптимизации кода, позволяющие уложиться в 10 килобайт (22 апреля 2017)
Как создавалась карта с голосами болельщиков для Олимпиады (20 августа 2017)
Как мы делали «нарратив» – новый формат публикаций в Яндекс.Дзене (16 февраля 2018)
React в Яндекс Поиске. Новая архитектура фронтенда СЕРПа (27 октября 2018)
Бэкенд для фронтенда, или как в Яндекс.Маркете создают API без костылей (1 ноября 2018)
React & БЭМ – официальная коллаборация. Часть историческая (5 февраля 2019)
Как создать тёмную тему и не навредить. Опыт команды Яндекс.Почты (9 апреля 2019)
«Под капотом» Турбо-страниц: архитектура технологии быстрой загрузки веб-страниц (17 июля 2019)
От идеи до релиза. Детальный опыт фронтенда Маркета (22 июля 2019)
Разработка в монорепозитории (3 октября 2019)
Как мы внедряли WebAssembly в Яндекс.Картах и почему оставили JavaScript (19 ноября 2019)
Как устроено тестирование фронтенда в Яндекс.Маркете и почему мы отказываемся от еженедельных релизов (10 декабря 2019)
Как переписать фронтенд нагруженного проекта и не потерять главного (3 февраля 2020)
Минифицируем приватные поля в TypeScript (13 июня 2020)
Технические предпочтения пользователей с нарушениями зрения в 2020 году (18 августа 2020)
Как и почему мы переехали с собственного npm-репозитория на Verdaccio (17 ноября 2020)
Веб-тренажёр Яндекс.Практикума. Как всё устроено (27 ноября 2020)

Russian / 2ГИС

TARS, сделай уровень frontend-рутины 0% (26 марта 2015)
Тестируем вёрстку правильно (18 февраля 2016)
Этажи: 3D-навигация на WebGL в 2gis.ru (22 апреля 2016)
Дели — сокращай, или как мы делали мобильный 2ГИС Онлайн (20 июля 2017)
Справа налево. Что такое dir=rtl и как приручить арабский язык (10 мая 2018)
Справа налево. Как перевернуть интерфейс сайта под RTL (10 июля 2018)
Быстрая генерализация маркеров на WebGL-карте (6 марта 2019)
3D-аркада в браузере: как мы сделали игру на React + Redux (23 апреля 2020)

Russian / Прочее

Вавилонская башня из миллиона печенек. Как мы делали игру в VK mini app (10 марта 2021)

Backlinks from these awesome lists:

0