Przejdź do treści
Wróć do akt
Akta 02Odtajnione (częściowo)

Ratunek wydajności

Vue 2 → Vue 3, przepisane od zera — i wolne, zanim w ogóle trafiło na produkcję.

Klient
Firma cateringowa, Niemcy
Rola
Senior frontend engineer, de facto tech lead
Czas trwania
[utajnione]
Stack
Vue 3 · TypeScript · TanStack Query · SignalR · Biome · Feature-based architecture

Kontekst

Zespół przepisywał dużą aplikację z Vue 2 na Vue 3. Architektura feature-based, TanStack Query, aktualizacje w czasie rzeczywistym przez SignalR. Na papierze: nowocześnie. W przeglądarce: boleśnie wolno.

Problem

  1. ERR_01

    Niewydajny kod na najniższym poziomie: zbędna złożoność, zagnieżdżone pętle, samonapędzające się watchEffecty.

  2. ERR_02

    TanStack Query używany jak globalna szyna zdarzeń — store'y powiązane wywołaniami API, o których nie powinny wiedzieć.

  3. ERR_03

    Reaktywne zapytania w watchEffectach tworzące kaskady requestów: jedno wywołanie odpalało kolejne, i kolejne.

  4. ERR_04

    Pull requesty bez spójnego formatowania — review tonęły w szumie zamiast skupiać się na logice.

Co zrobiłem

  1. 01

    Wprowadziłem twarde reguły z Biome (lint + format) i hooki gita — spójność stała się automatyczna.

  2. 02

    Rozdzieliłem odpowiedzialności modułów i widoków, eliminując coupling między store'ami.

  3. 03

    Scentralizowałem wszystkich klientów API, queries, mutations i query keys w jednej typowanej warstwie.

  4. 04

    Zbudowałem silnik inwalidacji: konkretne wiadomości SignalR unieważniają dokładnie te zapytania, których dotyczą.

  5. 05

    Wyeliminowałem łańcuchowe wywołania napędzane reaktywnymi zapytaniami — plus dziesiątki mniejszych poprawek.

Efekt

  • 0

    pozostałych kaskad requestów

  • 1

    typowane źródło prawdy dla zapytań

  • RT

    celowana inwalidacja w czasie rzeczywistym

  • 100%

    PR-ów formatowanych przez maszyny, recenzowanych przez ludzi

Efekt: aplikacja działa tak szybko, jak to tylko możliwe — i tak zostanie, bo reguły pilnują się same.

Masz wolną aplikację?

Widziałem gorsze. Porozmawiajmy.

Porozmawiajmy

Pełne zaangażowanie w dostarczenie produktu najwyższej jakości.

Zbudowane w Nuxt, GSAP i z niezdrową dbałością o detale.

© 2026 Szczepan Kosik · SK Inspire. Wszelkie prawa zastrzeżone.Lublin, PL · 51.25°N 22.57°E