Articles 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.
- English
- AdRoll
- Aha!
- Airbnb
- ALDO
- Algolia
- Artsy
- Australian Broadcasting Corporation
- Badoo
- BBC
- Bitmovin
- blogfoster
- Bloomberg
- Campaign Monitor
- Carbon Five
- Carousell
- cars.com
- Checkbot
- Clearleft
- Cloudflare
- Cloud Four
- CodeSandbox
- Condé Nast
- Conductor
- DAZN
- De Voorhoede
- Discord
- Dropbox
- eBay
- Electronic Arts
- Ele.me
- Evil Martians
- ezCater
- fastq.bio
- Figma
- Financial Times
- Flickr
- Flipkart
- Flocktory
- Futurice
- Garbarino
- GitHub
- GitLab
- GOV.UK
- grammarly
- Gusto
- HealthCare.gov
- Heap
- in der Apotheke
- Insider Inc.
- Internet Archive
- Intuit
- InVision
- Khan Academy
- Kickstarter
- Klarna
- Line
- Lucidchart
- Lyft
- Mailchimp
- MDN
- Medium
- MemSQL
- Microsoft To-Do
- Mixmax
- Mixpanel
- Mozilla
- Mud
- Myntra
- Netflix
- npm
- OK GROW!
- Palantir
- PayPal
- Pinafore
- Pivotal Tracker
- Plotly
- Product Hunt
- Quizlet
- REA Group
- Reaktor
- Redmart
- repl.it
- Revolut
- Roompact
- Safety Culture
- Scratch
- Shopify
- Skillshare
- Slack
- Snipcart
- Soundcloud
- Spectrum
- Spotify
- Stack Overflow
- stripe
- SumUp
- Superhuman
- The Guardian
- The Knot Worldwide
- The New York Times
- The Telegraph
- The Times & The Sunday Times
- The U.S. Digital Service
- The Wall Street Journal
- This Also
- ThomasNet
- Thread
- Tinder
- TinyMCE
- Tumblr
- Uber
- Udacity
- Unity
- Unsplash
- Verve
- Walmart Labs
- Wikimedia
- Wingify
- Wix
- Yelp
- YNAB
- YouTube
- Zajno
- Zynga
- 18F
- 1Password
- Miscellaneous
- Russian
- License
- Lazy loading Backbone collections with Promises (Nov 12, 2013)
- Rollup: Shared UI components at AdRoll (Nov 05, 2015)
- Rollup: How we use React.js and npm to share UI code at AdRoll (Nov 12, 2015)
- Rollup: What we have learned from sharing UI code at AdRoll (Nov 19, 2015)
- gulp-react-docs: From propTypes to Markdown in 3 seconds (Dec 21, 2015)
- How to Create a Style Guide: Start with a UI Framework (Jul 29, 2016)
- How to Run a Front-End Infrastructure Team (Aug 29, 2017)
- Turbocharged JavaScript Refactoring with Codemods (Apr 27, 2016)
- Rearchitecting Airbnb’s Frontend (May 15, 2017)
- Migrating from Mocha to Jest (Jun 15, 2017)
- React Performance Fixes on Airbnb Listing Pages (Dec 5, 2017)
- Server Rendering, Code Splitting, and Lazy Loading with React Router v4 (Jan 10, 2018)
- React Native at Airbnb (Jun 19, 2018): The Technology, Building a Cross-Platform Mobile Team, Sunsetting React Native, What’s Next for Mobile at Airbnb
- Operationalizing Node.js for Server Side Rendering (Jul 18, 2018)
- How Airbnb is Moving 10x Faster at Scale with GraphQL and Apollo (Dec 5, 2018)
- Building (And Re-Building) the Airbnb Design System (Oct 30, 2019)
- The Impact of Web Performance (Feb 6, 2020)
- Improving Web Performance to Mirror Engine Speed (Jul 26, 2017)
- Using NetInfo API to Improve Algolia’s JavaScript Client (Jul 30, 2019)
- Rendering on the Server and Client in Node.js (Nov 30, 2013)
- The Tech Behind Live Auction Integration (Aug 9, 2016)
- React Native at Artsy (Aug 15, 2016)
- Making Artsy Editorial Accessible (Aug 29, 2017)
- Helping the Web Towards OSS by Default (Sep 6, 2016)
- JSON Web Tokens: Artsy's Journey (Oct 26, 2016)
- Exploration: Front-end JavaScript at Artsy in 2017 (Feb 5, 2017)
- Modernizing Force (Sep 5, 2017)
- React Native, 2 years later (Mar 17, 2018)
- Keeping Artsy's dependencies up to date (Nov 26, 2018)
- Switch from Capybara Webkit to Chrome (Nov 27, 2018)
- GraphQL Stitching 101 (Dec 11, 2018)
- GraphQL: Union vs. Interface (Jan 14, 2019)
- From TSLint to ESLint, or How I Learned to Lint GraphQL Code (Jan 29, 2019)
- Composing Components (Sep 28, 2018)
- From data to DOM: Building a text rendering pipeline for React (Oct 23, 2019)
- How to teach a web app to speak 100 languages: the specifics of localisation (Mar 8, 2017)
- The painless way to collect statistics from a web-site (May 18, 2017)
- Translating interfaces into almost fifty languages: Sketch (Oct 17, 2017)
- Hot localisations update: part 1, part 2 (Nov 2017)
- From zero to Cosmos: part 1, part 2, part 3 (Feb 2018)
- Translating Dust templates to JSX (May 16, 2018)
- How to manage your Design Tokens with Style Dictionary (Sep 27, 2018)
- Optical alignment for frontend developers: why is it not the same as it is for designers and how can the process be automated (Nov 22, 2018)
- Generating multi-brand multi-platform icons with Sketch and a Node.js script: from the idea to the assets Sketch files and the build script and the generation of the assets (Dec 2018)
- Covering A/B tests with UI tests: how to avoid getting tangled up in your own code (Feb 22 2019)
- Design Tokens beyond colors, typography, and spacing (Nov 12, 2019)
- Redefining the BBC News core experience (Jul 22, 2016)
- HTTP/2 is easy, just turn it on… (Nov 7, 2017)
- How BBC Interactive Content Works Across AMP, Apps, And The Web (Mar 15, 2018)
- How Bitmovin Used React/Redux to Develop Its New Dashboard (Sep 7, 2017)
- To Play, or Not to Play – New AutoPlay Policies for Safari 11 and Chrome 64 (Sep 28, 2017)
- To Play, or Not to Play #2 – Firefox blocks audible autoplay by default! (Feb 20, 2019)
- 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
- Fixing bugs with Outlook specific CSS (Nov 9, 2016)
- Better video previews for email (Dec 20, 2016)
- How to test accessibility of emails (Jun 5, 2018)
- Cross-Domain Browser Window Messaging with HTML5 and Javascript (Aug 17, 2012)
- Composing Synchronous and Asynchronous Functions in JavaScript (Jan 29, 2015)
- An AJAX Auto-Save Implementation (Jan 24, 2018)
- How we made Carousell’s mobile web experience 3x faster (Oct 31, 2018)
- Building a Dynamic UI System at Carousell (Feb/Mar 2019): part 1, part 2 and part 3
- An Experiment with JSON Schema (Apr 18, 2019)
- Scalable & lightweight web screenshots with SVG (Nov 30, 2018)
- How to use variable fonts in the real world (Jan 26, 2018)
- A framework for web performance (Sep 20, 2018)
- How we built Origin CA: Web Crypto (May 10, 2016)
- Open Sourcing CloudFlare’s UI Framework (Jun 8, 2016)
- Going Global - a Localization Case Study at Cloudflare (Aug 23, 2017)
- How we made our page-load optimisations even faster (Feb 2, 2018)
- Real URLs for AMP Cached Content Using Cloudflare Workers (Nov 13, 2018)
- Fast Google Fonts with Cloudflare Workers (Nov 22, 2018)
- Migrating to React land: Gatsby (Mar 26, 2020)
- Moving from reCAPTCHA to hCaptcha (Apr 8, 2020)
- All Mixed Up: Isomorphic Sorting Gone Wrong (Oct 17, 2019)
- The Why and How of Google AMP at Condé Nast (Aug 29, 2017)
- Painless Migration From Backbone to React/Redux (Feb 16, 2018)
- Testing MobX State Tree (Dec 7, 2018)
- Handling complexity in lambda functions (Feb 8, 2019)
- Micro-frontends, the future of Frontend architectures (Apr 2, 2019)
- Adopting a Micro-frontends architecture (Apr 8, 2019)
- Orchestrating micro-frontends (Apr 12, 2019)
- Jest: Our journey into performant unit tests (Apr 15, 2019)
- Identifying micro-frontends in our applications (May 21, 2019)
- Why our website is faster than yours (Jul 16, 2016)
- Using React Native: One Year Later (Jun 7, 2016)
- Lessons from migrating a large codebase to React 16 (Oct 5, 2017)
- Why Discord is Sticking with React Native (Jul 26, 2018)
- How Discord Maintains Performance While Adding Features (Aug 2, 2018)
- How Discord Handles Two and Half Million Concurrent Voice Users using WebRTC (Sep 10, 2018)
- Investigating Discord’s React Memory Leak (Aug 8, 2019)
- How Discord achieves native iOS performance with React Native (Nov 7, 2019)
- Translating Dropbox (Apr 18, 2011)
- Some love for JavaScript applications (Aug 31, 2012)
- Dropbox dives into CoffeeScript (Sep 13, 2012)
- Content Security Policy at Dropbox (Sep 2015): On Reporting and Filtering, Unsafe-inline and nonce deployment, The Unexpected Eval, Third Party Integrations and Privilege Separation
- Enabling HTTP/2 for Dropbox web services: experiences and observations (May 11, 2016)
- Annotations on Document Previews (Nov 30, 2016)
- Preventing cross-site attacks using same-site cookies (Mar 16, 2017)
- Deploying Brotli for static content (Apr 6, 2017)
- Dropbox Paper: Emojis and Exformation (Nov 15, 2017)
- Improving Document Preview Performance (Dec 1, 2017)
- Migrating from Underscore to Lodash (Sep 5, 2018)
- Redux with Code-Splitting and Type Checking (Jul 16, 2019)
- Design Tooling at Scale (Oct 12, 2019)
- Data URI Sprites (Jul 12, 2011)
- The New eBay Motors Homepage is 2X Faster (Oct 14, 2011)
- Five JavaScript Tips for a Sleek User Experience (Apr 16, 2012)
- Page Loading and Rendering Optimizations (Jun 22, 2012)
- Bandwidth-based Experience (Oct 10, 2012)
- Early Detection of Frontend Single Points of Failure (Jan 22, 2013)
- Front-end Renaissance at eBay (Jan 13, 2014)
- Yet Another Responsive vs. Adaptive Story (Mar 5, 2014)
- Don't Build Pages, Build Modules (Oct 2, 2014)
- Async Fragments: Rediscovering Progressive HTML Rendering with Marko (Dec 8, 2014)
- The Power of Perceived Performance (Jan 5, 2015)
- Mobile First - A Retrospective (May 13, 2015)
- How Our CSS Framework Helps Enforce Accessibility (Nov 4, 2015)
- Packaging for Performance (Jan 4, 2016)
- The Path to JavaScript Next (Mar 15, 2016)
- Browse eBay with Style and Speed (Jun 30, 2016)
- Experience the Lightning Bolt (Sep 21, 2016)
- Effective Front-End Code Review (Mar 2, 2017)
- Building a UI Component in 2017 and Beyond (May 3, 2017)
- eBay’s Font Loading Strategy (Sep 21, 2017)
- The Future of Marko (Oct 26, 2017)
- Beyond HTTPS (Dec 13, 2017)
- Integration Testing with React and Enzyme (Jun 26, 2018)
- WebAssembly at eBay: A Real-World Use Case (May 22, 2019)
- Autofill on Browsers: A Deep Dive (Dec 3, 2019)
- Speed By A Thousand Cuts (Jan 23, 2020)
- Front End Debugging — Tips on Resolving Issues Quickly so You Can Move on to Better Things (Apr 7, 2020)
- Building UI at Enterprise Scale with Web Components (Aug 22, 2017)
- Upgrading Ele.me to Progressive Web App (May 6, 2017)
- Is React Native podium-ready? (May 14, 2018)
- The case against React snapshot testing (Jun 27, 2019)
- Building the F8 App with React Native
- BigPipe: Pipelining web pages for high performance (Jun 4, 2010)
- Facebook has 30,000 react components. How do you manage large project directories with many components? (Dec 31, 2013)
- The technology behind preview photos (Aug 6, 2015)
- Improving CSS quality at Facebook and beyond (Jun 13, 2016)
- This browser tweak saved 60% of requests to Facebook (Jan 26, 2017)
- Building High-Quality JavaScript Tools (Jun 2, 2017)
- React 16: A look inside an API-compatible rewrite of our frontend UI library (Sep 26, 2017)
- Design Systems & Tools at Facebook (Nov 15, 2017)
- Behind the Scenes: Improving the React Repository Infrastructure (Dec 15, 2017)
- Faster input events with Facebook’s first browser API contribution (Apr 22, 2019)
- Building the New facebook.com with React, GraphQL and Relay (Apr 30, 2019)
- How We Used WebAssembly To Speed Up Our Web App By 20X (Apr 5, 2019)
- Building a professional design tool on the web (Dec 7, 2015)
- Debugging Data Corruption with Emscripten (Nov 7, 2016)
- WebAssembly cut Figma’s load time by 3x (Jun 8, 2017)
- Introducing BrowserView for Electron (Jun 29, 2017)
- Introducing: Figma to React (Apr 26, 2018)
- Figma, faster 🏎 (Aug 13, 2018)
- How to build a plugin system on the web and also sleep well at night (Aug 22, 2019)
- Building The New Financial Times Web App (May 23, 2013)
- Free-market software development (Aug 21, 2015)
- SVG icons are easy but the fallbacks aren't (Dec 1, 2015)
- A faster FT.com (Apr 4, 2016)
- YES, your site too can (and should) be accessible (May 23, 2017)
- Improving the cache performance of The Polyfill Service (Jun 9, 2017)
- Can't You Just Make It More like Bootstrap? (Jul 22, 2017)
- Speeding up without slowing down (Nov 7, 2017)
- What happens when you visit ft.com? (Nov 24, 2017)
- Tips for in-house teams in a free market software culture (Jan 30, 2018)
- An outbreak of Accessibility anti-patterns (May 18, 2018)
- This one line of Javascript made FT.com 10 times slower (Jul 16, 2018)
- Improving the cache performance of The Polyfill Service even more (Jan 21, 2019)
- Lessons Learned from the Flickr Touch Lightbox (Jul 20, 2011)
- Creating an interface for geofences (Sep 6, 2011)
- Raising the bar on web uploads (Apr 25, 2012)
- Building an HTML5 Photo Editor (Apr 18, 2012)
- Building The Flickr Web Uploadr: The Grid (May 11, 2012)
- Parsing Exif client-side using JavaScript (Jun 1, 2012)
- Adventures in Jank Busting: Parallax, performance, and the new Flickr Home Page (Jun 4, 2013)
- Building Flickr’s new Hybrid Signed-Out Homepage (Apr 23, 2014)
- Perceptual Image Compression at Flickr (Sep 25, 2015)
- Introducing yakbak: Record and playback HTTP interactions in NodeJS (Apr 25, 2016)
- Building Flipkart Lite: A Progressive Web App (Nov 11, 2015)
- Third party libraries (May 22, 2017)
- How Elm made our work better (Nov 1, 2016)
- Building a PWA in Argentina (Jul 24, 2017)
- GitHub's CSS (Jul 23, 2014)
- How GitHub is using Web Components in production (Sep 30, 2014)
- Browser Monitoring for GitHub.com (May 19, 2015)
- GitHub's CSP journey (Apr 12, 2016)
- GitHub's post-CSP journey (Jan 19, 2017)
- Shipping system fonts to GitHub.com (Feb 7, 2018)
- Design Systems at GitHub (Jul 6, 2018)
- Removing jQuery from GitHub.com frontend (Sep 6, 2018)
- From 48k lines of code to 10—the story of GitHub’s JavaScript SDK (Apr 9, 2020)
- Why We Chose Vue.js (Dec 1, 2016)
- Our big Frontend plan revealed (Feb 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 (Nov 9, 2017)
- How GitLab switched to Headless Chrome for testing (Dec 19, 2017)
- How we iterated and improved our frontend team culture (Jun 26, 2018)
- Why we chose ECharts for data visualizations (Sep 30, 2019)
- How GitLab Pages made our Sketch design handoffs easier and faster (Nov 7, 2019)
- Designing very large (JavaScript) applications (Apr 15, 2018)
- Building the Google Photos Web UI (Jul 10, 2018)
- TypeScript at Google (Sep 1, 2018)
- The Chrome Dev Summit site: case study (Mar 12,2019)
- The new AdWords UI uses Dart — we asked why (Mar 31, 2016)
- A Recipe for Designing Animations — Without Sacrificing Performance (Jun 4, 2019)
- Bringing service workers to Google Search (Jun 20, 2019)
- Accessibility for developers: building a frontend that everyone can use (Oct 6, 2016)
- Why the GOV.UK Design System team changed the input type for numbers (Feb 24, 2020)
- Why videos on GOV.UK use the YouTube video player (Mar 16, 2020)
- Building Browser Extensions At Scale (Oct 6, 2017)
- Scaling Front-end Architecture (Jun 10, 2016)
- Evolving JavaScript Part 1: Goodbye Backbone (Jul 12, 2016)
- Evolving JavaScript Part 2: Hello React (Jul 12, 2016)
- Evolving JavaScript Part 3: Building a React Application (Jul 12, 2016)
- Taking off with Apollo (Sep 12, 2018)
- How I fell out of love with HOCs (Dec 9, 2018)
- Building a design system for HealthCare.gov (Aug 29, 2017)
- Goodbye CoffeeScript, Hello TypeScript (Oct 7, 2015)
- Migrating To React + MobX While Shipping New Features (August 16, 2017)
- How We Write Front-end Code (Feb 20, 2018)
- Redesigning Heap Without a Feature Branch (Apr 10, 2019)
- How we failed, then succeeded, at migrating to TypeScript (Oct 10, 2019)
- Farewell, Google Maps (Jul 18, 2018)
- How to style different sites with one CSS collection (Dec 17, 2018)
- Why we got rid of all our front-end and back-end engineers (Feb 13, 2019)
- Delightful ways to write reusable CSS using subclasses (Mar 1 , 2019)
- React Native at Instagram (Feb 7, 2017)
- Making Instagram.com faster: part 1 (Aug 1, 2019), part 2 (Sep 6, 2019), part 3 (Oct 11, 2019), part 4 (Nov 1, 2019)
- Pixels vs. Ems: Users DO Change Font Size (Jun 13, 2018)
- Making Accessibility an Integral Part of the Creative Workflow (Apr 15, 2018)
- TurboTax Live’s Approach to a Gender-Neutral Design System (Feb 21, 2019)
- Delivering Consistent Animations with a Design System Library (Apr 25, 2019)
- GraphQL: Intuit’s Path to ONE API System (Mar 13, 2019)
- Sharing ESLint Across Teams (Apr 5, 2016)
- Optimizing Webpack for Faster React Builds (Apr 12, 2016)
- Persist Redux State by Using Sagas (Apr 26, 2016)
- Testing Our Shared ESLint Configs (May 12, 2016)
- How ESLint Saved Our Soul (Aug 12, 2016)
- React Performance Tune-Up (Sep 23, 2016)
- Building the inspect measurement engine (Jul 17, 2019)
- Babel in Khan Academy's i18n Toolchain (Jun 22, 2015)
- Fun with slope fields, css and react (Aug 5, 2015)
- Copy-pasting more than just text (Aug 31, 2015)
- i18nize-templates: Internationalization After the Fact (Sep 28, 2015)
- Schrödinger's deploys no more: how we update translations (Oct 12, 2015)
- Forgo JS packaging? Not so fast (Nov 23, 2015)
- Inline CSS at Khan Academy: Aphrodite (Mar 29, 2016)
- Migrating to a Mobile Monorepo for React Native (May 29, 2017)
- Creating Query Components with Apollo (Jun 12, 2017)
- tota11y - an accessibility visualization toolkit (Apr 15, 2018)
- Namespacing Actions for Redux (Nov 20, 2017)
- Migrating from Rails’ asset pipeline to Node’s webpack (Jan 2, 2016)
- How removing caching improved mobile performance by 25% (Jan 10, 2017)
- Improving Communication and Confidence with Visual Snapshot Testing (Mar 14, 2017)
- 6 Lessons learned from optimizing the performance of a Node.js service (Jan 9, 2020)
- LINE MANGA: Smooth page transition with Page Stack (Jan 18, 2018)
- Easy code-splitting with grow-loader (Jan 24, 2018)
- Bringing a Modern Javascript Build Pipeline to LinkedIn (Jan 20, 2016)
- Sleek and Fast: Speeding Up your Fat Web Client (Oct 19, 2017)
- The Glimmer Binary Experience (Dec 7, 2017)
- Ember Timer Leaks: The Bad Apples in Your Test Infrastructure (Jan 3, 2018)
- Lighter than Lightweight: How We Built the Same App Twice with Preact and Glimmer.js (Mar 12, 2018)
- IE10: How does it really stack up? (Nov 14, 2012)
- Atomic CSS as a tool set (Jan 31, 2014)
- The Definitive Guide to Copying and Pasting in JavaScript (Dec 2, 2014)
- Big content in a little canvas (May 19, 2015)
- Improving Angular 2 Load Times and a 29KB Hello World App (Sep 26, 2016)
- Angular 2 and Observables: Data Sharing in a Multi-View Application (Nov 8, 2016)
- Using Angular 2 Components In a Non-Angular App (Apr 10, 2017)
- Converting 600k lines to TypeScript in 72 hours (Nov 16, 2017)
- How to handle folder uploads in Angular 2+ (Jan 3, 2018)
- JavaScriptCore – The Holy Grail of Cross Platform (Feb 14, 2018)
- How to Actually Improve Type Safety with the TypeScript Strict Flags (Jun 20, 2018)
- ZoneTracker: Tracking JavaScript Performance with Zone.js (Nov 9, 2018)
- JavaScriptCore—10 Months Later (Jan 3, 2019)
- TypeScript at Lyft (Sep 27, 2017)
- Re-approaching Color (Sep 21, 2018)
- Designing automated tests for React (Aug 10, 2019)
- Why ContentEditable is Terrible (May 14, 2014)
- Wait, Don’t Touch That! Mutual Exclusion Locks & JavaScript (Jan 17, 2015)
- The curious case of the disappearing Polish S (Feb 2, 2015)
- Five Goofy Things Medium Did That Break Accessibility (Jun 29, 2015)
- The Unluckiest Paragraphs: A Tale of CSS and Why Parts of Medium Sometimes Disappear (Dec 5, 2015)
- Simple Style Sheets, Or How to Improve Your Sleep by Dropping the Cascade (Sep 28, 2016)
- 2 Fast 2 Furious: migrating Medium’s codebase without slowing down (Mar 22, 2018)
- The case of the eternal blur: a bug hunt horror novella (May 2, 2018)
- GraphQL Server Design @ Medium (Nov 2, 2018)
- Porting 30K lines of code from Flow to TypeScript (Jan 13, 2019)
- How We React at Microsoft To-Do (Jan 5, 2018)
- Scaling Mixmax: Front-end performance (May 5, 2015)
- How we built ‘instant’ autocomplete for Mixmax (Nov 5, 2015)
- Yarn-ifying Mixmax: why and how we moved from npm to Yarn (Apr 24, 2017)
- Using CORS policies to implement CSRF protection (Jun 13, 2017)
- React without Redux: how we moved from Backbone to React without rewriting (Jul 26, 2017)
- Handling 3rd-party JavaScript with Rollup: how and when to leave JS out of the bundle (Dec 3, 2017)
- Precisely observing structural page changes (Dec 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)
- Straightening our Backbone: A lesson in event-driven UI development (Apr 8, 2015)
- Making Web Components Work, or: How We Learned to Stop Worrying and Love the DOM (Jun 12, 2018)
- The Art of UI Skeletons (Apr 23, 2019)
- A Year of Utility Classes (Jan 28, 2019)
- Myntra’s Web UI Journey — AMP and PWA (Jan 31, 2018)
- HTML5 Video Playback UI (Oct 21, 2013)
- Improving the performance of our JavaScript inheritance model (May 16, 2014)
- Node.js in Flames (Nov 19, 2014)
- JSON Graph: Reactive REST at Netflix (Apr 1, 2015)
- Localization Technologies at Netflix (Jun 4, 2015)
- Making Netflix.com Faster (Aug 5, 2015)
- Crafting a high-performance TV user interface using React (Jan 12, 2017)
- Netflix's approach to ES6 feature detection (Jan 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 (Oct 25, 2017)
- Implementing Japanese Subtitles on Netflix (Dec 11, 2017)
- Integrating imperative APIs into a React application (Dec 20, 2017)
- Pseudo Localization @ Netflix (Aug 6, 2018)
- Delivering Meaning with Previews on Web (Nov 12, 2018)
- Enhancing the Netflix UI Experience with HDR (Sep 24, 2018)
- Our learnings from adopting GraphQL (Dec 10, 2018)
- Modernizing the Web Playback UI (Dec 12, 2018)
- Re-inventing npmjs.com (Apr 3, 2018)
- JavaScript Usage by Industry (Jun 27, 2018)
- Migrating from Iron Router to FlowRouter (with Blaze) (Sep 17, 2015)
- Where does Redux fit in Meteor? (Jul 15, 2016)
- Real-world Unit Testing with Meteor and Jest (Oct 17, 2017)
- Optimizing a GraphQL app using Apollo Engine (Feb 12, 2019)
- Scaling product design with Blueprint (Jan 6, 2017)
- TSLint in 2019 (Feb 19, 2019)
- Sane, scalable Angular apps are tricky, but not impossible. Lessons learned from PayPal Checkout (Sep 26, 2015)
- Auto-shrink-wrapping in PayPal Checkout, and how it’s saved us more than once (Feb 10, 2016)
- Dependency injection in Angular isn’t worth it. More lessons learned from scaling PayPal Checkout (Apr 3, 2016)
- Less is more: reducing thousands of PayPal buttons into a single iframe, using zoid (Mar 17, 2017)
- Safari’s new third party tracking rules, and enabling cross-domain data storage (Aug 30, 2017 )
- Reinventing cross-origin requests, without CORS (Sep 6, 2017)
- Introducing PayPal’s open-source cross-domain javascript suite (Oct 16, 2017)
- GraphQL: A success story for PayPal Checkout (Oct 17, 2018)
- Why every new web app at PayPal starts with TypeScript (Jan 21, 2019)
- Scaling GraphQL at PayPal (Oct 30, 2019)
- Introducing Pinafore for Mastodon (Apr 9, 2018)
- Scrolling the main document is better for performance, accessibility, and usability (Nov 18, 2018)
- Building a modern carousel with CSS scroll snap, smooth scrolling, and pinch-zoom (Feb 10, 2019)
- One year of Pinafore (Jun 2, 2019)
- The joy and challenge of developing for KaiOS (Sep 22, 2019)
- Gone In 60 Frames Per Second: A Pinterest Paint Performance Case Study (Jun 10, 2013)
- Demystifying SEO with experiments (Jan 27, 2015)
- How we made JavaScript testing 15x faster (Feb 3, 2015)
- Making Pinterest HTTPS (Mar 13, 2015)
- How we switched our template rendering engine to React (Nov 18, 2016)
- Introducing Bonsai: an open source Webpack analyzer (Jun 2, 2017)
- Migrating Pinterest profiles to React (Sep 23, 2016) (video) (Nov 22, 2017)
- A Pinterest Progressive Web App Performance Case Study (Nov 30, 2017)
- Supporting React Native at Pinterest (May 10, 2018)
- A one year PWA retrospective (Jul 20, 2018)
- Using Elm in Production at Pivotal Tracker (Jan 31, 2017)
- Improving Accessibility in Pivotal Tracker (Feb 1, 2018)
- Modularizing monolithic javascript projects in plotly.js (Jan 28, 2016)
- React @ Product Hunt (May 30, 2017)
- GraphQL @ Product Hunt (Nov 2, 2017)
- Smooth Game Animations in React (Feb 18, 2016)
- Launching A Successful Redesign For 20 Million Students (Jun 13, 2017)
- Cypress: The future of end-to-end testing for web applications (Feb 8, 2018)
- Now or Never: Migrating 300k LOC from Flow to TypeScript at Quizlet (Jun 18, 2019)
- ReactJS – Real World Examples of Higher-Order Components (May 6, 2016)
- Singletons Suck (aka Flux to Redux) (Aug 17, 2016)
- ReactJS Performance Debugging (aka The Magic of Reselect Selectors) (Sep 9, 2016)
- My Journey in a UI Project (aka front-end is the new back-end) (Jun 23, 2017)
- Refactoring 30000 lines of JS with types (Jan 24, 2017)
- How We Built r/Place (Apr 13, 2017)
- Why We Chose Typescript (Jun 30, 2017)
- Angular The Hard Way #1 Organise and manage domain data (Apr 22, 2015)
- RedMart's experience with PWA (Oct 25, 2018)
- How we use Storybook for documentation and code reviews (Nov 14, 2018)
- Infinite Loops (Jan 23, 2017)
- Modular, fast, small: how we built a server-rendered IDE (Feb 14, 2018)
- How we learned to stop worrying and love GraphQL (Aug 8, 2019)
- Elm In Production: 25,000 Lines Later (Jul 30, 2017)
- Why we moved our graphQL server from Node.js to Golang (Jun 27, 2018)
- Porting Scratch from Flash to JavaScript: Performance, Interoperability and Extensions (Feb 28, 2019)
- How 17 lines of code improved shopify.com loading by 50% (May 24, 2017)
- Building Shopify mobile with native and web technology (Sep 29, 2017)
- Designing a GraphQL API (Jun 18, 2018)
- Want to Improve UI Performance? Start by Understanding Your User (Oct 20, 2019)
- How We Ditched Redux for MobX (Jul 2, 2018)
- Reducing Slack’s memory footprint (Mar 3, 2017)
- TypeScript at Slack (Apr 11, 2017)
- Rebuilding Slack’s Emoji Picker in React (May 23, 2017)
- Getting to Slack faster with incremental boot (Jul 5, 2016)
- Localizing Slack (Sep 12, 2017)
- Rebuilding slack.com (Oct 11, 2017)
- Keep webpack Fast: A Field Guide for Better Build Performance (Jan 17, 2018)
- When a rewrite isn’t: rebuilding Slack on the desktop (Jul 22, 2019)
- Service Workers at Slack: Our Quest for Faster Boot Times and Offline Support (Aug 29, 2019)
- The Gradual Design System: How We Built Slack Kit (Sep 12, 2019)
- Building Dark Mode on Desktop (Sep 24, 2019)
- Gantry: Slack’s Fast-booting Frontend Framework (Oct 23, 2019)
- A Day in the Life of a Frontend Product Engineer at Slack (Feb 5, 2020)
- Front-end JavaScript bug tracking (Nov 21, 2011)
- Building The Next SoundCloud (Jun 14, 2012)
- Smooth image loading by upscaling (Feb 20, 2014)
- React Native at SoundCloud (Aug 3, 2016)
- Tech Choices I Regret at Spectrum (Jan 16, 2019)
- Spotify Wrapped 2018 — Technical Case Study (Dec 18, 2018)
- Building Spotify’s New Web Player (Mar 25, 2019)
- (Right to Left (The Mirror World (Apr 15, 2019)
- web-scripts – creating NPM libraries in a snap at Spotify (Jul 3, 2019)
- Reimagining Design Systems at Spotify (Dec 16, 2019)
- HTTPS on Stack Overflow: The End of a Long Road (May 22, 2017)
- Connect: behind the front-end experience (Jun 19, 2017)
- A new approach to mocking GraphQL data: how we power React component tests and examples at Stripe (Dec 11, 2018)
- Designing accessible color systems (Oct 15, 2019)
- 10 lessons learned building SumUp’s design system (Aug 15, 2019)
- Delightful search: more than meets the eye (May 5, 2017)
- What we learnt from our mistakes in 2016 (Dec 18, 2016)
- Revisiting the rendering tier (Apr 4, 2019)
- Migrating the Guardian website to React (Dec 8, 2019)
- Rebuilding the Guest List Manager with React + MobX at The Knot (Jun 19, 2017)
- React Native @ The Knot (Feb 8, 2019)
- React Native @ The Knot: A Designer’s Perspective (Feb 13, 2019)
- The Technology Behind the NYTimes.com Redesign (Jan 8, 2014)
- Improving Article Accessibility (Jun 24, 2014)
- Building a Cross Platform 360-degree Video Experience at The New York Times (Nov 11, 2016)
- React, Relay and GraphQL: Under the Hood of The Times Website Redesign (Jun 30, 2017)
- GraphQL in real life (Apr 19, 2019)
- How We Implemented a Baseline Grid Using CSS (Nov 21, 2019)
- React Serverside rendering : build slicker apps with better SEO ranking (Sep 10, 2018)
- Improving third-party web performance at The Telegraph (Apr 30, 2019)
- Building the UI for the new The Times website (Mar 30, 2016)
- Building Forms Faster on Vets.gov (Jun 2, 2017)
- Making WSJ.com more accessible (Aug 3, 2016)
- Fixing HTML Video on Mobile (Jul 14, 2016)
- How We Adopted CSS Grid at Scale (Mar 1, 2018)
- Dealing with legacy code in React (May 10, 2018)
- Searching and sorting text with diacritical marks in JavaScript (Aug 29, 2018)
- A Tinder Progressive Web App Performance Case Study (Dec 24, 2017)
- Building Tinder Online (Feb 9, 2018)
- TinyMCE is going mobile (Mar 31, 2017)
- Benefits of gradual strong typing in JavaScript (Jan 25, 2019)
- Moving things out of critical rendering path (Feb 19, 2016)
- The Road to Webpack (Apr 29, 2016)
- Flow and TypeScript (Sep 7, 2017)
- Using srcset and sizes to make responsive HTML5 images (Mar 5, 2018)
- A Big New Beautiful Future for the Web at Tumblr (Apr 5, 2018)
- How we wrote our own Service Worker (Feb 1, 2019)
- We’re making Tumblr more accessible! (Jan 17, 2019)
- View Source: Twitter.com (Jan 1, 2017)
- How we built Twitter Lite (Apr 6, 2017)
- Infinite List and React (Apr 9, 2017)
- Twitter Lite and High Performance React Progressive Web Apps at Scale (Apr 11, 2017)
- The Twitter Lite team about their use of Node.js (Apr 12, 2017)
- Redux modules and code-splitting (Feb 02, 2018)
- How using component-based design helps us build faster (Jul 16, 2019)
- Powering UberEATS with React Native and Uber Engineering (Mar 28, 2017)
- Building m.uber: Engineering a High-Performance Web App for the Global Market (Jun 27, 2017)
- Javascript @ Uber (Jul 10, 2017)
- Building a More Seamless Web Booking Flow for Uber (Jul 25, 2019)
- Best Practices for Unit Testing in React Version 16 (Aug 29, 2019)
- Counting Calories: How We Improved the Performance and Developer Experience of UberEats.com (Feb 12, 2020)
- How a Fixed-Width Button Can Get Your Company Trending on Reddit for All the Wrong Reasons: A Front-End Developer Tale (Apr 11, 2016)
- React Native: A retrospective from the mobile-engineering team at Udacity (Jul 3, 2018)
- Udacity’s Front-End Tech Stack (Jul 18, 2016)
- WebAssembly is here! (Aug 15, 2018)
- WebAssembly Load Times and Performance (Sep 17, 2018)
- How we gradually migrated to TypeScript at Unsplash (Mar 14, 2018)
- GraphQL: A Retrospective (Nov 28, 2018)
- React Native at WalmartLabs (Dec 19, 2016)
- Cutting Dev Time in Half With Invalid User Input Prevention (Oct 25, 2017)
- Migrating Angular 1.x apps to React — The Hybrid Way! (Nov 15, 2017)
- Migrating Large Enterprise to NodeJS (Dec 9, 2017)
- Primer on Front End Automation (Jul 27, 2018)
- Lazy Loading Images with IntersectionObserver (Sep 10, 2018)
- Midway: Walmart’s mocking journey… (Oct 5, 2018)
- Infinite Scroll’ing the right way (Apr 2, 2019)
- Delivering ReactJS applications at scale (Aug 26, 2019)
- Turbocharging Walmart.com (Apr 9, 2020)
- Investigating a performance improvement (Jun 2, 2017)
- Improving time-to-logo performance with preload links (Jun 7, 2017)
- Beacons (Aug 16, 2017)
- Measuring Wikipedia page load times (Jan 9, 2018)
- mustache.js replaced with JavaScript template literals in Extension:Popups (Apr 3, 2018)
- Extension:Popups (Page Previews) front-end tooling (Apr 19, 2018)
- Mobile web performance: the importance of the device (Jun 22, 2018)
- Why performance matters (Dec 12, 2018)
- Migrating code from MediaWiki's ResourceLoader to Webpack (Mar 13 2019)
- Evaluating Element Timing for Images (Apr 10, 2019)
- Performance perception: how satisfied are Wikipedia users? (May 29, 2019)
- Performance perception: the effect of late-loading banners (Jun 13, 2019)
- Performance perception: correlation to RUM metrics (Jun 17, 2019)
- Tracking down slow event handlers with Event Timing (Jun 19, 2019)
- Wikipedia's JavaScript initialisation on a budget (Sep 18, 2019)
- Measuring Long Tasks and First Input Delay (Dec 21, 2019)
- jQuery Promises: The answer to PostMessage's asynchrony (Jun 17, 2013)
- How We Made The Animated A/B Testing Guide (Jul 8, 2013)
- Getting 60 FPS using Chrome devtools (Jul 29, 2013)
- Overcoming the Challenges of Performance Testing Single-page Apps (Jan 29, 2015)
- Testing AngularJS Apps End to End Using Protractor (Feb 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! (Nov 30, 2017)
- Automated Heatmap Verification E2E using Selenium and Canvas (Apr 3, 2018)
- Taking CSS To Scale: A Pragmatic Approach (Jul 13, 2016)
- Building a React Native App for 80 Million Users (Oct 1, 2016)
- The Story of Making Wix Accessible (Dec 14, 2017)
- Improving load time for 100 million websites (Jun 26, 2018)
- Trim the Fat From Your Bundles Using Webpack Analyzer & React Lazy/Suspense (Sep 2, 2019)
- Whoa! That Embedded Web View Looks Hot in Your iOS App! (Nov 7, 2013)
- CSS in the Age of React: How We Traded the Cascade for Consistency (Mar 5, 2018)
- Organizing and Securing Third-Party CDN Assets at Yelp (Nov 20, 2019)
- Progressive Conversion of TypeScript Namespaces to Modules (Sep 23, 2019)
- Semantic Colors for Designers and Developers: part 1, part 2 and part 3 (Feb 12, 2020)
- How we use OpenAPI / Swagger for the YNAB API (Mar 16, 2020)
- Page Weight Matters (Dec 21, 2012)
- Polymer @ YouTube (Aug 22, 2017)
- A Conspiracy To Kill IE6 (May 1, 2019)
- Why & How Words With Friends Is Adopting React Native (Sep 17, 2018)
- React Native Stability Monitoring (May 14, 2019)
- Building a large-scale design system: How we created a design system for the U.S. government (Oct 3, 2017)
- From dark to light and back again (Nov 8, 2018)
- PWA Stats
- Web Performance Optimization Stats
- Production Web Apps Performance Study Q4/16 - Q1/17 (Jan 21, 2017)
- Case study: improving a popular library’s size for webpack users (Jun 23, 2017)
- Case study: analyzing the Walmart site performance (Apr 27, 2018)
- Web Components for Enterprise (Jul 2019): part 1 and part 2
- Принципы разработки Амплифера (2019)
- Как Амплифер использует Logux — инструмент для связи клиента и сервера (5 марта 2020)
- Фронтенд в 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)
- Полный цикл тестирования React-приложений (14 июля 2019)
- Многоязычный Badoo: «трудности перевода» (22 мая 2014)
- Специфика верстки мультиязычных веб-приложений (26 марта 2015)
- Как собрать статистику с веб-сайта и не набить себе шишек (29 марта 2017)
- Работаем с API по-взрослому (14 апреля 2017)
- Покрываем A/B-тесты UI-тестами. Как не запутаться в собственном коде (26 декабря 2018)
- Sketch + Node.js: генерируем иконки для множества платформ и брендов. Часть 1 (27 февраля 2019) и часть 2 (12 марта 2019)
- Дизайн-токены способны на большее: создаем единый источник информации о компонентах UI (12 марта 2020)
- Опыт перевода большого проекта с Flow на TypeScript (1 августа 2019)
- Разработка сторонних библиотек (22 мая 2017)
- Нянчим проект на React-redux с пелёнок (21 сентября 2016)
- Качество кода фронтенда в HH (4 февраля 2019)
- Как мы пилили серверный рендеринг и что из этого вышло (28 марта 2019)
- Разработка собственного решения: риски и ответственность (26 ноября 2015)
- Frontend: Разработка и поддержка (6 сентября 2016)
- Архитектура фронтенда крупного проекта, как она есть (19 апреля 2018)
- WebAuthn в реальной жизни: запись доклада (27 ноября 2019), статья (20 февраля 2020)
- Как Microsoft To-Do использует React (18 июня 2018)
- Как мы учились рисовать тексты на Canvas (3 июля 2019)
- Выбранный UI-фреймворк – вред. Архитектурные требования – профит (20 июля 2017)
- Микросервисный фронтенд — современный подход к разделению фронта (21 августа 2018)
- 9 лет в монолите на Node.JS (9 июля 2019)
- Как мигрировать с mocha на jest в 14 простых шагов — и зачем (31 января 2020)
- Как мы разогнали мобильную Lenta.ru до скорости света (31 марта 2016)
- Проектирование дизайн-системы Рамблера (18 июня 2018)
- Опыт Rambler Group: как мы начали полностью контролировать формирование и поведение фронтовых React компонентов (12 июля 2018)
- Apollo: 9 месяцев — полет нормальный (27 июля 2018)
- Способы синхронизации вкладок браузера (7 сентября 2018)
- Маршрутизация в большом приложении на React (27 сентября 2018)
- Разработка Rich Text Editor: проблемы и решения (5 марта 2018)
- Переход с AngularJS на Angular (февраль 2018): цели, планы и правила переноса элементов, проблемы и решения гибридного режима, жизнь после AngularJS
- От Skype до WebRTC: как мы организовали видеосвязь через веб (3 апреля 2019)
- Как мы подружили SCSS с CSS Variables на примере c темизацией UI Kit (9 июля 2019)
- Как в Sports.ru писали свой WYSIWYG-редактор (13 марта 2020)
- Как мы разрабатываем новый фронтенд 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)
- Чем плох JavaScript в большом проекте? С какими проблемами мы столкнулись и как их решали (16 февраля 2016)
- Как отрефакторить 2 500 000 строк кода и не сойти с ума (5 июня 2017)
- Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (15 июня 2017)
- DIY: Как мы делали «живое» расписание для Codefest X (18 апреля 2019)
- 10 верстальщиков на 30 команд. Вы рехнулись? (21 мая 2019)
- Как настроить веб-аналитику на AMP страницах (26 июня 2019)
- Предъявите паспорт (18 августа 2017)
- БЭМ + React: гибкая архитектура дизайн-системы (23 октября 2017)
- Изоморфное приложение React JS + Spring Boot (27 октября 2017)
- Атомарные SPA (7 апреля 2018)
- Тёмная сторона дизайн-системы и что с ней делать (16 марта 2020)
- React со скоростью света: не совсем обычный серверный рендеринг (2 июня 2017)
- Как оседлать радугу: история создания тёмной темы (29 апреля 2019)
- Баги, которые вы никогда не встретите (26 ноября 2019)
- Лошадь сдохла – слезь: переход с tslint на eslint (29 октября 2019)
- Веб-пуш уведомления в Медузе (10 декабря 2015)
- AMP, Instant Articles, Instant View, whut? (23 ноября 2016)
- Как использовать кастомные шрифты в вебе и не сойти с ума (1 декабря 2016)
- Подкасты «Медузы» (21 сентября 2017)
- За закрытой дверью фронтенда Единой фронтальной системы (ЕФС) (7 апреля 2017)
- Redux как сердце архитектуры фронтенда Единой фронтальной системы (4 мая 2017)
- Работа с периферией из JavaScript: от теории к практике (15 июня 2017)
- Как работают приложения Сбербанк Онлайн: Workflow API и фрэймворки (18 апреля 2018)
- Микросервисный фронтенд (7 ноября 2018)
- Как разрабатывать сотни A/B-экспериментов (28 мая 2019)
- Внедряем Sign in with Apple — систему авторизации от Apple (8 ноября 2019)
- Как инкрементальные обновления влияют на скорость загрузки. Опыт Яндекс.Почты (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)
- Прототипирование на продакшн-технологиях (26 октября 2017)
- Почему Node.js в качестве основы фронтенда – это круто (31 июля 2017)
- Создание NPM-модуля Яндекс.Кассы под Node.js — опыт Lodoss Team (1 февраля 2018)
- Фронтенд как у сына маминой подруги (26 апреля 2018)
- Реактивный фронтенд. История о том, как мы снова всё переписали (15 июня 2018)
- Jenkins на службе фронтенд-разработки (22 февраля 2018)
- 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)