
рдЪрд▓реЛ рдХреЛрд░реЛрдирд╡рд╛рдпрд░рд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рддрдХрдиреАрдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдардВрдб рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЖрдпрд╛ред рдХреМрди рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ - рдХреГрдкрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рддреЗрдЬрд╝ рд╡реЗрдм рдХреЗ рд╡рд┐рд╖рдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХреАрдордд / рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд╣реЛрдЧрд╛ред
рдкрд╣рд▓рд╛, рдереЛрдбрд╝рд╛ рд╕рдВрджрд░реНрднред рдЖрдорддреМрд░ рдкрд░ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдмреИрдВрдХрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрдо рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЪрдорддреНрдХрд╛рд░ рд╣реБрдЖ рдФрд░ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ (рдЖрдЗрдП, рдХрд╣рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ)ред рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ рдореЛрдмрд╛рдЗрд▓-рдкреНрд░рдердо, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ IE рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 11)ред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ - рдПрдХ рдмрд╛рд░ рдХрд╛ рдРрдк (рдпрд╛рдиреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рд▓ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИред рдпрд╣ рдЗрд╕ рд╣рдж рддрдХ рдмреЗрдХрд╛рд░ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкрд╛рдж рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рд░рдВрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИред
, . . Angular, , react, " ", " " . , , , " " Vue. , legacy .
. тАФ react-router-dom, тАФ mobx. тАФ SCSS ( ) + css.modules . . , . "-" PureComponent React.memo, bundlesize + source-map-explorer. , .
, *. - mobile-first, client-facing, . . тАФ . . . , , - UI . , , , + . Server Side Rendering. , , , .NET, . тАФ .
* , ?
0,
- , , . , ( тАФ 1000ms) Performance Audit devtools (online 4x CPU slowdown). :
- Firts Paint (FP): 618ms
- First Meaningful Paint (FMP): 2090ms
FP , (), FMP , UI ( ) - . , , 1000 ms (+) . , , . . тАФ 4g* fast 3g **.
, 4g тАФ 2270ms . , , , .
* 4g preset- - . тАФ : download 4000kb/s, upload 3000kb/s, latency 20ms:
** *** , .
*** -, 3 , 10. , тАФ , .
1, React.lazy
, . :
Index.html, React, . js тАФ . , . , , . , .
, *, . тАФ React.lazy, , . , lazy , , . .
:
( ). , , , . ? shared , App.tsx. . , .
* , .
2, Core LazyComponent
, shared module . shared core , , тАФ , , - .
, , , React.Lazy. "" , . , . , . : , . :
export const LazyComponent = <T extends {}>(importStatement: () => Promise<{ default: ComponentType<T> }>) => {
const component = React.lazy(importStatement);
return { component, load: importStatement };
};
:
, , , 400ms fast3g - . . .
3, Spinner
, , . , ? "" ! , index.html , . index.html "" ? , . css, .
? , FP . FMP? :
. , .
, fast3g. , , , , - .
4,
. тАж ! , . / index.html . . . Fetch IE ( ), promise . . .
index.html :
(function(){const path = `${window.app.api}`; window.app.data = fetch(path); }());
. , promis- , , . тАФ . , index.html .
:
. 300ms . , . , . , .
, API , . preconnect, API. Preconnect IE 11
.
5,
, ? , , . . , ?
LazyComponent ( , ), suspense, . :
FP ( ). FMP . ? тАФ - , , . , JS , index.html . :

.
, css. - , , CSS . JS ( ). ? тАФ . , CSS JS . , css , JS ( , ), CSS , JS .
6,
. тАФ .
, , , . тАж , . ! , font-weight 100 .
, , :
- . . . - .
- ( 5-6 , HTTP v 1.x)
- . , .
- , , .
( , , JS).
. , . . , font-swap ( , ). , LightHouse .
. link/preload:
<link rel="preload" href="best_font_ever.otf" as="font" type="font/otf" crossorigin="anonymus">
, fast3g (, ). , . , . , UI - .
, :
500-850ms . , "" .
7,
defer (- page speed LightHouse ), , , .
, (0.5 1 - index.html) ( 480ms 1700ms), 500-800ms . , .
():

, .
, :
- ( )
- Brotli, gzip.
- HTTP2.0.
Jeff Cooper .
. ? . . // ( , ). - Google latency 100-400ms, 0.2%-0.6% ( ). CloudFlare , 2.4ms 3.3ms 0.4%, . . , , .
!