Case study sulle prestazioni delle app Web progressive di Tinder

Tinder utilizzava una serie di librerie open source (vendor) maniera porzione del loro pianta delle dipendenze. Le modifiche a queste librerie determinare avrebbero dovuto la cambiamento di [chunkhash] e l’invalidazione della loro cache. Verso risolvere codesto pensiero, Tinder ha esperto a circoscrivere una whitelist di dipendenze esterne e a dividere il manifest del involto web dal agglomerato capitale in perfezionare la memorizzazione nella cache. La misura del bundle e adesso di quasi 160 KB attraverso ambedue i blocchi.

Precaricamento delle risorse scoperte in dilazione

Tinder ha implementato il supporto a causa di precaricare i bundle JavaScript / webpack critici cosicche erano importanti a causa di l’esperienza di basamento. Corrente ha riassunto il tempo di carica di 1 seguente e la davanti verniciatura da 1000 ms an intorno a 500 ms.

Somma delle prestazioni

Tinder ha utilizzato somma a causa di il interesse per aiutarli a raggiungere i loro obiettivi di ritorno sui dispositivi mobili. Appena ha notato Alex Russell sopra ” Te lo puoi concedere ?: somma a causa di le prestazioni del umanita tangibile “, hai un estremita di spostamento definito per porgere un’esperienza mentre si considerano le connessioni 3G obbiettivo utilizzate sopra hardware amovibile medio.

A causa di raggiungere e fermarsi interattivi presto, Tinder ha imposto un preventivo di

155 KB per i blocchi principali e del fornitore, i blocchi asincroni (caricati svogliatamente) sono

55 KB e estranei blocchi sono

35 KB. CSS ha un demarcazione di 20 KB. Attuale e condizione basilare per confermare in quanto fossero per rango di scongiurare il decadenza delle prestazioni.

Ispezione del fagotto Webpack

Webpack Bundle Analyzer ti consente di svelare maniera appare il incisore delle dipendenze durante i tuoi bundle JavaScript sopra prassi da poter mostrare se ci sono frutti bassi da cercare la soluzione migliore.

Tinder ha usato Webpack Bundle Analyzer durante rivelare aree di perfezionamento:

  • Polyfills: Tinder si rivolge ai browser moderni mediante la loro esperienza, eppure supporta ancora IE11 e Android 4.4 e versioni successive. Verso tenere polyfill e etichetta transpilato al meno, usano For polyfills, usanobabel-preset-envecore-js.
  • Avvezzo piusnellodelle librerie: Tinder ha sostituito localForage mediante l’uso diretto di IndexedDB.
  • Migliore frazionamento: separa i componenti dai pacchetti principali cosicche non erano necessari in la anzi trucco / interattiva
  • Riutilizzo del cifrario: sono stati creati blocchi comuni asincroni mediante blocchi astratti utilizzati piuttosto di tre volte dai figli.
  • CSS: Tinder ha addirittura rimosso i CSS critici dai loro bundle principali (poiche erano passati al rendering aspetto server e fornivano nonostante codesto CSS)
  • Webpack Bundle Analyzer puo abitare adattato nella figura di Webpack. La aspetto di Tinder e analogo a questa:

    Abilita CSS

    Tinder utilizza Atomic CSS verso creare stili CSS altamente riutilizzabili. Tutti questi stili CSS atomici sono inline nella colore introduttivo e brandello del avanzo del CSS viene addossato nel prospetto di foggia (inclusi gli stili di movimento ovverosia di principio / ripristino). Gli stili critici hanno una grandezza aforisma di 20 KB mediante pressatura gzip, mediante build recenti cosicche arrivano a una grandezza

    Tinder Online utilizza ed il plug- mediante PostCSS Autoprefixer verso approfondire CSS e attaccare prefissi del commerciante mediante base alle regole di Posso impiegare :

    Prorogare il faccenda non pericoloso mediante requestIdleCallback ()

    Attraverso ottimizzare le prestazioni di runtime, Tinder ha eletto di utilizzare requestIdleCallback () durante rendere le azioni non critiche durante occasione di inattivita.

    Sfruttamento di requestIdleCallback () attraverso i beacon di strumentazione intanto che lo flusso:

    Aggiornamenti delle dipendenze

    Webpack 3 + Scope Hoisting

    Nelle versioni precedenti di webpack, all’epoca di il complesso di qualsivoglia canone nel involto sarebbe condizione inserito mediante singole chiusure di funzioni. Queste funzioni wrapper hanno reso oltre a lenta l’esecuzione di JavaScript nel browser. Webpack 3 ha esperto il “sollievo dell’ambito”: la idoneita di attaccare l’ambito di tutti i moduli con un’unica compimento e concedere al combinazione di avere un eta di compimento ancora repentino nel browser. Lo fa unitamente il plugin Module Concatenation:

    Reagisci 16

    React 16 ha incluso miglioramenti affinche hanno adunanza la dimensione del fagotto di React stima alle versioni precedenti. Cio e ceto per porzione dovuto a un miglior packaging (utilizzando Rollup) e alla allontanamento del etichetta ora inutilizzato.

    Aggiornando da React 15 a React 16, Tinder ha ridotto le dimensioni totali per mezzo di gzip del loro http://www.hookupdate.net/it/be2-review masso del commesso del

    La dimensione di React + React – Dom periodo di

    50 KB con compressione gzip e attualmente e solo di

    35 KB . Ringraziamenti a Dan Abramov , Dominic Gannaway e Nate Hunzaker affinche sono stati determinanti nel accorciare le dimensioni del bundle di React 16.

    Casella di lavoro in la resilienza della insidia e la immagazzinamento nella cache degli asset offline

    Tinder utilizza anche il plug -in Workbox Webpack durante registrare nella cache non solo la shell dell’applicazione perche le risorse statiche principali maniera i bundle principali, del grossista, manifest e CSS. Cio consente la resilienza della insidia verso le visite ripetute e garantisce perche l’applicazione si avvii piu rapidamente mentre un utente torna durante le visite successive.

    Utilita

    Scavando nei bundle di Tinder utilizzando source-map-explorer (un diverso utensile di analisi dei bundle), ci sono ulteriori comodita in abbreviare le dimensioni del payload. Anzi di accedere, vengono recuperati componenti maniera immagine di Facebook, notifiche, messaggi e captcha. Allontanarli dal percorso arduo potrebbe far rispettare magro al 20% sul blocco responsabile:

    Un’altra succursale nel prassi studioso e uno script Facebook SDK da 200 KB. L’eliminazione di codesto script (perche potrebbe essere sistemato indolentemente qualora chiaro) potrebbe abbreviare di 1 aiutante il tempo di caricamento primo.

    Conclusioni

    Tinder sta ora iterando sulla sua Progressive Web App, pero ha proprio iniziato a controllare risultati positivi dai frutti del adatto faccenda. Dai un’occhiata a Tinder.com e resta sintonizzato a causa di ulteriori progressi nel seguente futuro!

    Grazie e congratulazioni a Roderick Hsiao, Jordan Banafsheha ed Erik Hellenbrand per il propaganda di Tinder Online e il loro aiuto an attuale pezzo. Ringraziamento a Cheney Tsai durante la sua recensione.