{"id":10056,"date":"2021-11-04T16:21:01","date_gmt":"2021-11-04T15:21:01","guid":{"rendered":"https:\/\/vived.io\/frontend-thursday-vol-62\/"},"modified":"2022-09-19T13:16:36","modified_gmt":"2022-09-19T11:16:36","slug":"frontend-thursday-vol-62","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/","title":{"rendered":"Frontend Thursday vol. 62 &#8211; Angular v13, React Router v6"},"content":{"rendered":"\n<h2 id=\"1-angular-v13\" data-num=1>1. Angular v13<\/h2>\n\n\n\n<p>Wczoraj \u015bwiat\u0142o dzienne ujrza\u0142 nowy Angular oznaczony numerkiem 13! Ci\u0119\u017cko jednak szuka\u0107 w nim wi\u0119kszych zmian i rewolucji. Kolejne wydanie to przede wszystkim nudny zbi\u00f3r usprawnie\u0144 na kt\u00f3re niewielu z nas czeka\u0142o. Sko\u0144czmy jednak to jesienne depresyjne narzekanie i przyjrzymy si\u0119 temu co dostarczyli nam programi\u015bci z Google.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"719\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4pg.jpeg\" alt=\"\" class=\"wp-image-3093\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4pg.jpeg 500w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4pg-209x300.jpeg 209w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n\n<p>To co przyku\u0142o moj\u0105 uwag\u0119 najbardziej to wsparcie dla Typescript 4.4 i RxJS 7. Ja czeka\u0142em szczeg\u00f3lnie na tego drugiego, bo ju\u017c od jakiego\u015b czasu mierzi mnie \u017ceby zast\u0105pi\u0107 `.toPromise` nowymi metodami `lastValueFrom` i `firstValueFrom` (je\u015bli jeste\u015bcie ciekawi co jeszcze zmieni\u0142o si\u0119 w RxJS to zapraszam do <a href=\"https:\/\/vived.io\/frontend-thursday-vol-36\/\">Frontend Thursday vol. 36<\/a>).<\/p>\n\n\n\n<p>Nowy Angular to r\u00f3wnie\u017c zapowiedziany ju\u017c jaki\u015b czas temu koniec wsparcie dla IE 11. Nie zostaje powiedzie\u0107 nic innego jak najwy\u017csza pora.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"569\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200-1024x569.jpeg\" alt=\"\" class=\"wp-image-3094\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200-1024x569.jpeg 1024w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200-300x167.jpeg 300w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200-768x427.jpeg 768w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200.jpeg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p>Imponuj\u0105co z perspektywy Developer Experience wygl\u0105da aktualizacja Angular CLI. Dzi\u0119ki wprowadzeniu cache i cz\u0119\u015bciowego wsparcia dla esbuild proces budowania aplikacji sta\u0142 si\u0119 nawet 60% szybszy. Przyznam szczerze, \u017ce nie mog\u0119 si\u0119 doczeka\u0107, \u017ceby sprawdzi\u0107 jaki efekt przyniesie aktualizacja na prawdziwym projekcie.<\/p>\n\n\n\n<p>Tw\u00f3rcy frameworka na \u015bwieczniku stawiaj\u0105 natomiast ostateczne porzucenie View Engine na rzecz Ivy Engine. Je\u015bli nie \u015bledzicie na bie\u017c\u0105co Angulara, to przypomn\u0119, \u017ce Ivy to zar\u00f3wno nowy kompilator, jak i interpreter, kt\u00f3ry przyni\u00f3s\u0142 znacz\u0105ce optymalizacje je\u015bli chodzi o rozmiar paczek jak i szybko\u015b\u0107 aplikacji. Porzucenie View Engine nie powinno nikogo zaskoczy\u0107 &#8211; w Angulardze 12 zosta\u0142 on w ko\u0144cu oznaczony jako Deprecated i jest to niejako zwie\u0144czeniem kilkuletnich stara\u0144, kt\u00f3re rozpocz\u0119\u0142y si\u0119 wraz z opublikowanie Ivy w Angularze 9. Porzucenie starego silnika odblokowa\u0142o tw\u00f3rcom kilka zablokowanych do tej pory \u015bcie\u017cek. Zaktualizowany zosta\u0142 Angular Package Format, podbito standard JS do ES2020 i znacz\u0105co zredukowano potrzeb\u0119 korzystania z ngcc.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5syltt.jpeg\" alt=\"\" class=\"wp-image-3097\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5syltt.jpeg 650w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5syltt-300x231.jpeg 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/figure><\/div>\n\n\n\n<p>Rzecz jasna to nie koniec usprawnie\u0144, wi\u0119c zainteresowanych standardowo odsy\u0142am do \u017ar\u00f3de\u0142. A Wy czekali\u015bcie na nowego Angulara, czy te\u017c raczej przechodzicie obok niego oboj\u0119tnie?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a:<\/h3>\n\n\n\n<p><a href=\"https:\/\/blog.angular.io\/angular-v13-is-now-available-cce66f7bc296\">https:\/\/blog.angular.io\/angular-v13-is-now-available-cce66f7bc296<\/a><\/p>\n\n\n\n<h2 id=\"2-react-router-v6\" data-num=2>2. React Router v6<\/h2>\n\n\n\n<p>R\u00f3wnie\u017c wczoraj (ach, co to by\u0142 za dzie\u0144!) \u015bwiat\u0142o dzienne ujrza\u0142 React Router 6.0. Jest to pierwsze du\u017ce wydanie biblioteki od ponad dw\u00f3ch lat i tym razem niesie za sob\u0105 du\u017ce zmiany w API&nbsp; (wersja 5.0 by\u0142a wstecznie kompatybilna z wersjami 4.x). Co interesuj\u0105ce React Router 6.0 ma by\u0107 duchowym nast\u0119pc\u0105 nie tylko swoich poprzednik\u00f3w, ale r\u00f3wnie\u017c Reach Router.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"499\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4gp.jpeg\" alt=\"\" class=\"wp-image-3095\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4gp.jpeg 524w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4gp-300x286.jpeg 300w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/figure><\/div>\n\n\n\n<p>Nowy React Router to przede wszystkim nowe API, mocno przypominaj\u0105ce to znane z wersji 3.0. `&lt;Switch&gt;` zosta\u0142 zamieniony na `&lt;Routes&gt;`, a \u015bcie\u017cki nie s\u0105 ju\u017c dopasowywane w kolejno\u015bci deklaracji, ale wybierana jest ta \u201cnajbardziej dopasowana\u201d. Element jaki nale\u017cy wyrenderowa\u0107 przekazujemy do odpowiedniego property, co z kolei u\u0142atwia przekazywanie properties do dzieci i pozwala zapakowa\u0107 nasze komponenty w Suspense czy Lazy.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">import { render } from &quot;react-dom&quot;;\nimport { BrowserRouter } from &quot;react-router-dom&quot;;\n\/\/ import your route components too\n\nrender(\n  &lt;BrowserRouter&gt;\n    &lt;Routes&gt;\n      &lt;Route path=&quot;\/&quot; element={&lt;App \/&gt;}&gt;\n        &lt;Route index element={&lt;Home \/&gt;} \/&gt;\n        &lt;Route path=&quot;teams&quot; element={&lt;Teams \/&gt;}&gt;\n          &lt;Route path=&quot;:teamId&quot; element={&lt;Team \/&gt;} \/&gt;\n          &lt;Route path=&quot;new&quot; element={&lt;NewTeamForm \/&gt;} \/&gt;\n          &lt;Route index element={&lt;LeagueStandings \/&gt;} \/&gt;\n        &lt;\/Route&gt;\n      &lt;\/Route&gt;\n    &lt;\/Routes&gt;\n  &lt;\/BrowserRouter&gt;,\n  document.getElementById(&quot;root&quot;)\n);<\/code><\/pre>\n\n\n\n<p>Nowe API to r\u00f3wnie\u017c postawienie nacisku na React Hooks. Nie tylko udost\u0119pnione zosta\u0142y nowe hooki (jak useParams), ale sama biblioteka zosta\u0142a przepisana tak, aby maksymalnie wykorzystywa\u0107 je w swoim kodzie. Co interesuj\u0105ce, zabieg ten pozwoli\u0142 zredukowa\u0107 rozmiar paczki o 50% \ud83d\ude2e<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy50h.jpeg\" alt=\"\" class=\"wp-image-3096\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy50h.jpeg 735w, https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy50h-300x204.jpeg 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure><\/div>\n\n\n\n<p>Po przeczytaniu Release Notes mam mieszane uczucia. Z jednej strony nowe API wygl\u0105da atrakcyjnie, ale z drugiej jest ono skrajnie nie kompatybilne z poprzednimi wersjami biblioteki. Je\u015bli tw\u00f3rcy nie zaradz\u0105 temu problemowi, to aktualizacja du\u017cych projekt\u00f3w b\u0119dzie drog\u0105 przez m\u0119k\u0119 i w efekcie react-router 5 jeszcze d\u0142ugo pozostanie rynkowym standardem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a:<\/h3>\n\n\n\n<p><a href=\"https:\/\/remix.run\/blog\/react-router-v6\">https:\/\/remix.run\/blog\/react-router-v6<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W miniony tygodniu ukaza\u0142 si\u0119 Angular 13 i React Router 6. Bez zb\u0119dnego przed\u0142u\u017cania zapraszamy na przegl\u0105d nowo\u015bci jakie trafi\u0142y w nasze r\u0119ce.<\/p>\n","protected":false},"author":12,"featured_media":7752,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[273],"tags":[],"class_list":["post-10056","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"3","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Frontend Thursday vol. 62 - Angular v13, React Router v6 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Frontend Thursday vol. 62 - Angular v13, React Router v6 - Vived\" \/>\n<meta property=\"og:description\" content=\"W miniony tygodniu ukaza\u0142 si\u0119 Angular 13 i React Router 6. Bez zb\u0119dnego przed\u0142u\u017cania zapraszamy na przegl\u0105d nowo\u015bci jakie trafi\u0142y w nasze r\u0119ce.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-04T15:21:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:16:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/Screenshot-2021-11-04-at-16.17.58.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1919\" \/>\n\t<meta property=\"og:image:height\" content=\"1011\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tomasz Borowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/Screenshot-2021-11-04-at-16.17.58.png\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\"},\"author\":{\"name\":\"Tomasz Borowicz\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\"},\"headline\":\"Frontend Thursday vol. 62 &#8211; Angular v13, React Router v6\",\"datePublished\":\"2021-11-04T15:21:01+00:00\",\"dateModified\":\"2022-09-19T11:16:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\"},\"wordCount\":597,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png\",\"articleSection\":[\"Frontend\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\",\"url\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\",\"name\":\"Frontend Thursday vol. 62 - Angular v13, React Router v6 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png\",\"datePublished\":\"2021-11-04T15:21:01+00:00\",\"dateModified\":\"2022-09-19T11:16:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png\",\"width\":2000,\"height\":1210},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend Thursday vol. 62 &#8211; Angular v13, React Router v6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\",\"name\":\"Tomasz Borowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"caption\":\"Tomasz Borowicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Frontend Thursday vol. 62 - Angular v13, React Router v6 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/","og_locale":"pl_PL","og_type":"article","og_title":"Frontend Thursday vol. 62 - Angular v13, React Router v6 - Vived","og_description":"W miniony tygodniu ukaza\u0142 si\u0119 Angular 13 i React Router 6. Bez zb\u0119dnego przed\u0142u\u017cania zapraszamy na przegl\u0105d nowo\u015bci jakie trafi\u0142y w nasze r\u0119ce.","og_url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/","og_site_name":"Vived","article_published_time":"2021-11-04T15:21:01+00:00","article_modified_time":"2022-09-19T11:16:36+00:00","og_image":[{"width":1919,"height":1011,"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/Screenshot-2021-11-04-at-16.17.58.png","type":"image\/png"}],"author":"Tomasz Borowicz","twitter_card":"summary_large_image","twitter_image":"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/Screenshot-2021-11-04-at-16.17.58.png","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/"},"author":{"name":"Tomasz Borowicz","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb"},"headline":"Frontend Thursday vol. 62 &#8211; Angular v13, React Router v6","datePublished":"2021-11-04T15:21:01+00:00","dateModified":"2022-09-19T11:16:36+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/"},"wordCount":597,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png","articleSection":["Frontend"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/","url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/","name":"Frontend Thursday vol. 62 - Angular v13, React Router v6 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png","datePublished":"2021-11-04T15:21:01+00:00","dateModified":"2022-09-19T11:16:36+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/10\/cat-frontent.png","width":2000,"height":1210},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-62\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Frontend Thursday vol. 62 &#8211; Angular v13, React Router v6"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb","name":"Tomasz Borowicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","caption":"Tomasz Borowicz"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Angular v13<\/h2>\n","innerContent":["\n<h2>1. Angular v13<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wczoraj \u015bwiat\u0142o dzienne ujrza\u0142 nowy Angular oznaczony numerkiem 13! Ci\u0119\u017cko jednak szuka\u0107 w nim wi\u0119kszych zmian i rewolucji. Kolejne wydanie to przede wszystkim nudny zbi\u00f3r usprawnie\u0144 na kt\u00f3re niewielu z nas czeka\u0142o. Sko\u0144czmy jednak to jesienne depresyjne narzekanie i przyjrzymy si\u0119 temu co dostarczyli nam programi\u015bci z Google.<\/p>\n","innerContent":["\n<p>Wczoraj \u015bwiat\u0142o dzienne ujrza\u0142 nowy Angular oznaczony numerkiem 13! Ci\u0119\u017cko jednak szuka\u0107 w nim wi\u0119kszych zmian i rewolucji. Kolejne wydanie to przede wszystkim nudny zbi\u00f3r usprawnie\u0144 na kt\u00f3re niewielu z nas czeka\u0142o. Sko\u0144czmy jednak to jesienne depresyjne narzekanie i przyjrzymy si\u0119 temu co dostarczyli nam programi\u015bci z Google.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":3093,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4pg.jpeg\" alt=\"\" class=\"wp-image-3093\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4pg.jpeg\" alt=\"\" class=\"wp-image-3093\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To co przyku\u0142o moj\u0105 uwag\u0119 najbardziej to wsparcie dla Typescript 4.4 i RxJS 7. Ja czeka\u0142em szczeg\u00f3lnie na tego drugiego, bo ju\u017c od jakiego\u015b czasu mierzi mnie \u017ceby zast\u0105pi\u0107 `.toPromise` nowymi metodami `lastValueFrom` i `firstValueFrom` (je\u015bli jeste\u015bcie ciekawi co jeszcze zmieni\u0142o si\u0119 w RxJS to zapraszam do <a href=\"https:\/\/vived.io\/frontend-thursday-vol-36\/\">Frontend Thursday vol. 36<\/a>).<\/p>\n","innerContent":["\n<p>To co przyku\u0142o moj\u0105 uwag\u0119 najbardziej to wsparcie dla Typescript 4.4 i RxJS 7. Ja czeka\u0142em szczeg\u00f3lnie na tego drugiego, bo ju\u017c od jakiego\u015b czasu mierzi mnie \u017ceby zast\u0105pi\u0107 `.toPromise` nowymi metodami `lastValueFrom` i `firstValueFrom` (je\u015bli jeste\u015bcie ciekawi co jeszcze zmieni\u0142o si\u0119 w RxJS to zapraszam do <a href=\"https:\/\/vived.io\/frontend-thursday-vol-36\/\">Frontend Thursday vol. 36<\/a>).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nowy Angular to r\u00f3wnie\u017c zapowiedziany ju\u017c jaki\u015b czas temu koniec wsparcie dla IE 11. Nie zostaje powiedzie\u0107 nic innego jak najwy\u017csza pora.<\/p>\n","innerContent":["\n<p>Nowy Angular to r\u00f3wnie\u017c zapowiedziany ju\u017c jaki\u015b czas temu koniec wsparcie dla IE 11. Nie zostaje powiedzie\u0107 nic innego jak najwy\u017csza pora.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":3094,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200-1024x569.jpeg\" alt=\"\" class=\"wp-image-3094\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/internet-explore-shut-down-memes-1200-1024x569.jpeg\" alt=\"\" class=\"wp-image-3094\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Imponuj\u0105co z perspektywy Developer Experience wygl\u0105da aktualizacja Angular CLI. Dzi\u0119ki wprowadzeniu cache i cz\u0119\u015bciowego wsparcia dla esbuild proces budowania aplikacji sta\u0142 si\u0119 nawet 60% szybszy. Przyznam szczerze, \u017ce nie mog\u0119 si\u0119 doczeka\u0107, \u017ceby sprawdzi\u0107 jaki efekt przyniesie aktualizacja na prawdziwym projekcie.<\/p>\n","innerContent":["\n<p>Imponuj\u0105co z perspektywy Developer Experience wygl\u0105da aktualizacja Angular CLI. Dzi\u0119ki wprowadzeniu cache i cz\u0119\u015bciowego wsparcia dla esbuild proces budowania aplikacji sta\u0142 si\u0119 nawet 60% szybszy. Przyznam szczerze, \u017ce nie mog\u0119 si\u0119 doczeka\u0107, \u017ceby sprawdzi\u0107 jaki efekt przyniesie aktualizacja na prawdziwym projekcie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tw\u00f3rcy frameworka na \u015bwieczniku stawiaj\u0105 natomiast ostateczne porzucenie View Engine na rzecz Ivy Engine. Je\u015bli nie \u015bledzicie na bie\u017c\u0105co Angulara, to przypomn\u0119, \u017ce Ivy to zar\u00f3wno nowy kompilator, jak i interpreter, kt\u00f3ry przyni\u00f3s\u0142 znacz\u0105ce optymalizacje je\u015bli chodzi o rozmiar paczek jak i szybko\u015b\u0107 aplikacji. Porzucenie View Engine nie powinno nikogo zaskoczy\u0107 - w Angulardze 12 zosta\u0142 on w ko\u0144cu oznaczony jako Deprecated i jest to niejako zwie\u0144czeniem kilkuletnich stara\u0144, kt\u00f3re rozpocz\u0119\u0142y si\u0119 wraz z opublikowanie Ivy w Angularze 9. Porzucenie starego silnika odblokowa\u0142o tw\u00f3rcom kilka zablokowanych do tej pory \u015bcie\u017cek. Zaktualizowany zosta\u0142 Angular Package Format, podbito standard JS do ES2020 i znacz\u0105co zredukowano potrzeb\u0119 korzystania z ngcc.<\/p>\n","innerContent":["\n<p>Tw\u00f3rcy frameworka na \u015bwieczniku stawiaj\u0105 natomiast ostateczne porzucenie View Engine na rzecz Ivy Engine. Je\u015bli nie \u015bledzicie na bie\u017c\u0105co Angulara, to przypomn\u0119, \u017ce Ivy to zar\u00f3wno nowy kompilator, jak i interpreter, kt\u00f3ry przyni\u00f3s\u0142 znacz\u0105ce optymalizacje je\u015bli chodzi o rozmiar paczek jak i szybko\u015b\u0107 aplikacji. Porzucenie View Engine nie powinno nikogo zaskoczy\u0107 - w Angulardze 12 zosta\u0142 on w ko\u0144cu oznaczony jako Deprecated i jest to niejako zwie\u0144czeniem kilkuletnich stara\u0144, kt\u00f3re rozpocz\u0119\u0142y si\u0119 wraz z opublikowanie Ivy w Angularze 9. Porzucenie starego silnika odblokowa\u0142o tw\u00f3rcom kilka zablokowanych do tej pory \u015bcie\u017cek. Zaktualizowany zosta\u0142 Angular Package Format, podbito standard JS do ES2020 i znacz\u0105co zredukowano potrzeb\u0119 korzystania z ngcc.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":3097,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5syltt.jpeg\" alt=\"\" class=\"wp-image-3097\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5syltt.jpeg\" alt=\"\" class=\"wp-image-3097\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Rzecz jasna to nie koniec usprawnie\u0144, wi\u0119c zainteresowanych standardowo odsy\u0142am do \u017ar\u00f3de\u0142. A Wy czekali\u015bcie na nowego Angulara, czy te\u017c raczej przechodzicie obok niego oboj\u0119tnie?<\/p>\n","innerContent":["\n<p>Rzecz jasna to nie koniec usprawnie\u0144, wi\u0119c zainteresowanych standardowo odsy\u0142am do \u017ar\u00f3de\u0142. A Wy czekali\u015bcie na nowego Angulara, czy te\u017c raczej przechodzicie obok niego oboj\u0119tnie?<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/blog.angular.io\/angular-v13-is-now-available-cce66f7bc296\">https:\/\/blog.angular.io\/angular-v13-is-now-available-cce66f7bc296<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/blog.angular.io\/angular-v13-is-now-available-cce66f7bc296\">https:\/\/blog.angular.io\/angular-v13-is-now-available-cce66f7bc296<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. React Router v6<\/h2>\n","innerContent":["\n<h2>2. React Router v6<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>R\u00f3wnie\u017c wczoraj (ach, co to by\u0142 za dzie\u0144!) \u015bwiat\u0142o dzienne ujrza\u0142 React Router 6.0. Jest to pierwsze du\u017ce wydanie biblioteki od ponad dw\u00f3ch lat i tym razem niesie za sob\u0105 du\u017ce zmiany w API&nbsp; (wersja 5.0 by\u0142a wstecznie kompatybilna z wersjami 4.x). Co interesuj\u0105ce React Router 6.0 ma by\u0107 duchowym nast\u0119pc\u0105 nie tylko swoich poprzednik\u00f3w, ale r\u00f3wnie\u017c Reach Router.<\/p>\n","innerContent":["\n<p>R\u00f3wnie\u017c wczoraj (ach, co to by\u0142 za dzie\u0144!) \u015bwiat\u0142o dzienne ujrza\u0142 React Router 6.0. Jest to pierwsze du\u017ce wydanie biblioteki od ponad dw\u00f3ch lat i tym razem niesie za sob\u0105 du\u017ce zmiany w API&nbsp; (wersja 5.0 by\u0142a wstecznie kompatybilna z wersjami 4.x). Co interesuj\u0105ce React Router 6.0 ma by\u0107 duchowym nast\u0119pc\u0105 nie tylko swoich poprzednik\u00f3w, ale r\u00f3wnie\u017c Reach Router.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":3095,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4gp.jpeg\" alt=\"\" class=\"wp-image-3095\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy4gp.jpeg\" alt=\"\" class=\"wp-image-3095\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nowy React Router to przede wszystkim nowe API, mocno przypominaj\u0105ce to znane z wersji 3.0. `&lt;Switch&gt;` zosta\u0142 zamieniony na `&lt;Routes&gt;`, a \u015bcie\u017cki nie s\u0105 ju\u017c dopasowywane w kolejno\u015bci deklaracji, ale wybierana jest ta \u201cnajbardziej dopasowana\u201d. Element jaki nale\u017cy wyrenderowa\u0107 przekazujemy do odpowiedniego property, co z kolei u\u0142atwia przekazywanie properties do dzieci i pozwala zapakowa\u0107 nasze komponenty w Suspense czy Lazy.<\/p>\n","innerContent":["\n<p>Nowy React Router to przede wszystkim nowe API, mocno przypominaj\u0105ce to znane z wersji 3.0. `&lt;Switch&gt;` zosta\u0142 zamieniony na `&lt;Routes&gt;`, a \u015bcie\u017cki nie s\u0105 ju\u017c dopasowywane w kolejno\u015bci deklaracji, ale wybierana jest ta \u201cnajbardziej dopasowana\u201d. Element jaki nale\u017cy wyrenderowa\u0107 przekazujemy do odpowiedniego property, co z kolei u\u0142atwia przekazywanie properties do dzieci i pozwala zapakowa\u0107 nasze komponenty w Suspense czy Lazy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">import { render } from \"react-dom\";\nimport { BrowserRouter } from \"react-router-dom\";\n\/\/ import your route components too\n\nrender(\n  &lt;BrowserRouter>\n    &lt;Routes>\n      &lt;Route path=\"\/\" element={&lt;App \/>}>\n        &lt;Route index element={&lt;Home \/>} \/>\n        &lt;Route path=\"teams\" element={&lt;Teams \/>}>\n          &lt;Route path=\":teamId\" element={&lt;Team \/>} \/>\n          &lt;Route path=\"new\" element={&lt;NewTeamForm \/>} \/>\n          &lt;Route index element={&lt;LeagueStandings \/>} \/>\n        &lt;\/Route>\n      &lt;\/Route>\n    &lt;\/Routes>\n  &lt;\/BrowserRouter>,\n  document.getElementById(\"root\")\n);<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">import { render } from \"react-dom\";\nimport { BrowserRouter } from \"react-router-dom\";\n\/\/ import your route components too\n\nrender(\n  &lt;BrowserRouter>\n    &lt;Routes>\n      &lt;Route path=\"\/\" element={&lt;App \/>}>\n        &lt;Route index element={&lt;Home \/>} \/>\n        &lt;Route path=\"teams\" element={&lt;Teams \/>}>\n          &lt;Route path=\":teamId\" element={&lt;Team \/>} \/>\n          &lt;Route path=\"new\" element={&lt;NewTeamForm \/>} \/>\n          &lt;Route index element={&lt;LeagueStandings \/>} \/>\n        &lt;\/Route>\n      &lt;\/Route>\n    &lt;\/Routes>\n  &lt;\/BrowserRouter>,\n  document.getElementById(\"root\")\n);<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nowe API to r\u00f3wnie\u017c postawienie nacisku na React Hooks. Nie tylko udost\u0119pnione zosta\u0142y nowe hooki (jak useParams), ale sama biblioteka zosta\u0142a przepisana tak, aby maksymalnie wykorzystywa\u0107 je w swoim kodzie. Co interesuj\u0105ce, zabieg ten pozwoli\u0142 zredukowa\u0107 rozmiar paczki o 50% \ud83d\ude2e<\/p>\n","innerContent":["\n<p>Nowe API to r\u00f3wnie\u017c postawienie nacisku na React Hooks. Nie tylko udost\u0119pnione zosta\u0142y nowe hooki (jak useParams), ale sama biblioteka zosta\u0142a przepisana tak, aby maksymalnie wykorzystywa\u0107 je w swoim kodzie. Co interesuj\u0105ce, zabieg ten pozwoli\u0142 zredukowa\u0107 rozmiar paczki o 50% \ud83d\ude2e<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":3096,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy50h.jpeg\" alt=\"\" class=\"wp-image-3096\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/11\/5sy50h.jpeg\" alt=\"\" class=\"wp-image-3096\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Po przeczytaniu Release Notes mam mieszane uczucia. Z jednej strony nowe API wygl\u0105da atrakcyjnie, ale z drugiej jest ono skrajnie nie kompatybilne z poprzednimi wersjami biblioteki. Je\u015bli tw\u00f3rcy nie zaradz\u0105 temu problemowi, to aktualizacja du\u017cych projekt\u00f3w b\u0119dzie drog\u0105 przez m\u0119k\u0119 i w efekcie react-router 5 jeszcze d\u0142ugo pozostanie rynkowym standardem.<\/p>\n","innerContent":["\n<p>Po przeczytaniu Release Notes mam mieszane uczucia. Z jednej strony nowe API wygl\u0105da atrakcyjnie, ale z drugiej jest ono skrajnie nie kompatybilne z poprzednimi wersjami biblioteki. Je\u015bli tw\u00f3rcy nie zaradz\u0105 temu problemowi, to aktualizacja du\u017cych projekt\u00f3w b\u0119dzie drog\u0105 przez m\u0119k\u0119 i w efekcie react-router 5 jeszcze d\u0142ugo pozostanie rynkowym standardem.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/remix.run\/blog\/react-router-v6\">https:\/\/remix.run\/blog\/react-router-v6<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/remix.run\/blog\/react-router-v6\">https:\/\/remix.run\/blog\/react-router-v6<\/a><\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=10056"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10056\/revisions"}],"predecessor-version":[{"id":10615,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10056\/revisions\/10615"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/7752"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}