
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Kamil Owczarek | Senior Full-Stack Engineer</title>
      <link>https://whoisarjen.com/pl/blog</link>
      <description>Senior Full-Stack Engineer specjalizujący się w wydajnym e-commerce, skalowalnej architekturze i optymalizacji wydajności. TypeScript, React, Next.js, Vue, Nuxt, PostgreSQL, Redis.</description>
      <language>pl</language>
      <managingEditor>kamilow97@gmail.com (Kamil Owczarek)</managingEditor>
      <webMaster>kamilow97@gmail.com (Kamil Owczarek)</webMaster>
      <lastBuildDate>Mon, 06 Apr 2026 13:00:00 GMT</lastBuildDate>
      <atom:link href="https://whoisarjen.com/pl/tags/nuxt/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://whoisarjen.com/pl/blog/lazy-loading-toast-library-bundle-optimization</guid>
    <title>Jak zdjęliśmy 22 KB z entry bundle&#39;a, lazy-loadując bibliotekę do toastów</title>
    <link>https://whoisarjen.com/pl/blog/lazy-loading-toast-library-bundle-optimization</link>
    <description>vue3-toastify lądował w entry chunku każdej strony — także tych, które nigdy nie pokazują toasta. Composable z dynamicznym importem przeniósł go do osobnego chunka ładowanego przy pierwszym użyciu, zdejmując 22 KB z entry.js i 9 KB z entry.css.</description>
    <pubDate>Mon, 06 Apr 2026 13:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Performance</category><category>Vue</category><category>Nuxt</category><category>Bundle Optimization</category><category>Dynamic Import</category><category>TypeScript</category><category>Web Vitals</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/parallel-ssr-data-fetching-vue-onserverprefetch</guid>
    <title>Usunęliśmy jedną linijkę kodu i nasz SSR przyspieszył trzykrotnie</title>
    <link>https://whoisarjen.com/pl/blog/parallel-ssr-data-fetching-vue-onserverprefetch</link>
    <description>Jak pojedynczy inline&#39;owy await w naszym composable&#39;u Vue po cichu serializował całe pobieranie danych podczas renderowania na serwerze i jak onServerPrefetch naprawił to bez żadnych zmian w architekturze.</description>
    <pubDate>Mon, 06 Apr 2026 12:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Vue</category><category>SSR</category><category>Performance</category><category>Nuxt</category><category>TanStack Query</category><category>TypeScript</category><category>Optimization</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/redirect-constants-client-bundle-bloat-server-migration</guid>
    <title>3842 linie stałych z przekierowaniami ukrywały się w naszym client bundle</title>
    <link>https://whoisarjen.com/pl/blog/redirect-constants-client-bundle-bloat-server-migration</link>
    <description>Jak odkryliśmy, że trzy pliki ze stałymi przekierowań wysyłają 316 KB martwego balastu do każdej przeglądarki, i dlaczego przeniesienie ich do server middleware z fallbackiem w bazie ucięło nasz bundle JavaScriptu o jedną trzecią.</description>
    <pubDate>Mon, 06 Apr 2026 11:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>JavaScript</category><category>Performance</category><category>Bundle Size</category><category>SEO</category><category>Redirects</category><category>Server-Side</category><category>Nuxt</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/responsive-images-sizes-attribute-performance</guid>
    <title>Atrybut sizes to najskuteczniejsza optymalizacja obrazów, której nie używasz</title>
    <link>https://whoisarjen.com/pl/blog/responsive-images-sizes-attribute-performance</link>
    <description>Odkryliśmy, że nasz pipeline optymalizacji obrazów generował idealne wartości srcset, które przeglądarka całkowicie ignorowała. Naprawą okazał się pojedynczy atrybut HTML, który od lat traktowaliśmy jako opcjonalny.</description>
    <pubDate>Mon, 06 Apr 2026 10:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Performance</category><category>Images</category><category>Web Vitals</category><category>Responsive Design</category><category>Nuxt</category><category>Frontend</category><category>Optimization</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/history-replacestate-vs-router-replace-url-canonicalization</guid>
    <title>Przestań używać Router.replace() do kanonikalizacji adresów — sięgnij po History.replaceState()</title>
    <link>https://whoisarjen.com/pl/blog/history-replacestate-vs-router-replace-url-canonicalization</link>
    <description>Przepalaliśmy pełne cykle nawigacji Vue Routera tylko po to, żeby poprawić slug w adresie karty produktu. Zamiana router.replace() na history.replaceState() wycięła zbędne re-rendery, naprawiła popsute meta tagi SEO i sprowadziła kanonikalizację po stronie klienta do jednego wywołania, które nie dotyka DOM-u.</description>
    <pubDate>Mon, 06 Apr 2026 09:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Vue.js</category><category>Performance</category><category>SEO</category><category>Nuxt</category><category>URL Canonicalization</category><category>SSR</category><category>Router</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/splitting-monolith-into-services-fix-api-bugs</guid>
    <title>Kiedy podwojenie pamięci serwera to zły fix: jak rozdzielenie serwisów zakończyło nasz kryzys OOM</title>
    <link>https://whoisarjen.com/pl/blog/splitting-monolith-into-services-fix-api-bugs</link>
    <description>Nasza monolityczna aplikacja Nuxt regularnie wykładała się na limicie 2 GB pamięci. Podbiliśmy go do 4 GB — dwa razy drożej, ten sam problem u podstaw. Po pięciu dniach nieudanych optymalizacji (kompresja strumieniowa, polling po Redisie, cache SWR) rozbiliśmy monolit na trzy niezależne serwisy. Każdy dostał własne 2 GB, łączny koszt spadł, a crashe się skończyły.</description>
    <pubDate>Sat, 14 Mar 2026 12:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Architecture</category><category>Nuxt</category><category>Nitro</category><category>Memory</category><category>Performance</category><category>Serverless</category><category>Vercel</category><category>TypeScript</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/hidden-languages-wasting-vercel-budget-seo-fix</guid>
    <title>Jak nieopublikowane języki po cichu drenowały nasz budżet na Vercelu i zabiły wydajność na mobile</title>
    <link>https://whoisarjen.com/pl/blog/hidden-languages-wasting-vercel-budget-seo-fix</link>
    <description>Dodaliśmy arabski i portugalski do naszej konfiguracji i18n w Nuxcie, ale zablokowaliśmy je na produkcji. Problem? Sitemapy, tagi hreflang i crawlery nic o tym nie wiedziały — generując tysiące bezużytecznych URL-i, podwajając liczbę zapytań do API i przepalając wywołania funkcji serverless.</description>
    <pubDate>Sat, 14 Feb 2026 12:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Nuxt</category><category>i18n</category><category>Vercel</category><category>SEO</category><category>Performance</category><category>Sitemap</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/css-radial-gradient-scroll-lag-svg-fix</guid>
    <title>Jak CSS-owy radial-gradient zabił mi płynność scrollowania (i jednolinijkowa poprawka na SVG)</title>
    <link>https://whoisarjen.com/pl/blog/css-radial-gradient-scroll-lag-svg-fix</link>
    <description>Powtarzalny radial-gradient, który świetnie wyglądał w projekcie, zamienił moją stronę w ociężałego potworka. Oto jak namierzyłem winowajcę i naprawiłem go inline SVG w data URI — zero różnicy wizualnej, płynne 60 klatek na sekundę.</description>
    <pubDate>Thu, 12 Feb 2026 12:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>CSS</category><category>Performance</category><category>SVG</category><category>Nuxt</category><category>Web Vitals</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/optimizing-api-responses-removing-redundant-data</guid>
    <title>Odchudziłem odpowiedzi API o 60%: ukryty koszt spreadowania obiektów</title>
    <link>https://whoisarjen.com/pl/blog/optimizing-api-responses-removing-redundant-data</link>
    <description>Jak zwykły destructuring usunął zbędne obiekty tłumaczeń z odpowiedzi API, odciążył cache i przyspieszył frontend.</description>
    <pubDate>Mon, 29 Dec 2025 12:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>TypeScript</category><category>API Design</category><category>Performance</category><category>Caching</category><category>Redis</category><category>Nuxt</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/nuxt-ssr-cache-hostname-bug</guid>
    <title>Subtelny bug cache&#39;owania w SSR, który fragmentuje cache: dlaczego url.hostname kłamie podczas renderowania na serwerze</title>
    <link>https://whoisarjen.com/pl/blog/nuxt-ssr-cache-hostname-bug</link>
    <description>Jak pozornie poprawny cache key oparty na url.hostname prowadzi do fragmentacji cache&#39;u między requestami SSR a tymi z przeglądarki i drastycznie obniża cache hit rate w aplikacjach Nuxt/Nitro.</description>
    <pubDate>Sun, 28 Dec 2025 12:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>Nuxt</category><category>SSR</category><category>Caching</category><category>Performance</category><category>Nitro</category><category>TypeScript</category>
  </item>

  <item>
    <guid>https://whoisarjen.com/pl/blog/setting-up-a-turborepo-prisma-nuxt-environment-without-import-issues-on-vercel</guid>
    <title>Konfiguracja środowiska Turborepo + Prisma + Nuxt bez problemów z importami na Vercelu</title>
    <link>https://whoisarjen.com/pl/blog/setting-up-a-turborepo-prisma-nuxt-environment-without-import-issues-on-vercel</link>
    <description>Jak próbowałem różnych podejść do konfiguracji środowiska Turborepo + Prisma + Nuxt i jakie rozwiązanie ostatecznie zadziałało na Vercelu.</description>
    <pubDate>Tue, 18 Mar 2025 14:00:00 GMT</pubDate>
    <author>kamilow97@gmail.com (Kamil Owczarek)</author>
    <category>turborepo</category><category>prisma</category><category>nuxt</category><category>vercel</category><category>monorepo</category>
  </item>

    </channel>
  </rss>
