Przycisk „Polub” reaguje natychmiast, serce się wypełnia, licznik rośnie – zanim serwer w ogóle odpowiedział. To nie iluzja szybkości z artykułu o mikrointerakcjach, to coś dalej idącego: interfejs pokazuje stan, który jeszcze nie istnieje, i zakłada, że zaraz zaistnieje. Sprawdzam, jak zbudować to bezpiecznie – z realnym wycofaniem się z kłamstwa, gdy założenie się nie sprawdzi, i dlaczego ręczny setState plus catch to gorsza wersja tego, co daje useOptimistic.
Klasa narzędziowa .mt-4 przegrywa z regułą .card .card__header .card__title, mimo że logicznie powinna wygrać, bo dodano ją później. To nie przypadek – to specyficzność robiąca dokładnie to, do czego została zaprojektowana. @layer wprowadza całkiem nową oś rozstrzygania konfliktów, która działa przed specyficznością, nie razem z nią – i ma jedną pułapkę tak nieintuicyjną, że łamie ją nawet część dokumentacji w sieci.
„use server” wygląda jak składniowy cukier na fetch do API route – i właśnie dlatego większość wdrożeń traktuje go jak zwykłe wywołanie funkcji. To błąd o konkretnych konsekwencjach: każda funkcja oznaczona „use server” staje się publicznym punktem końcowym w sieci, a formularz zbudowany na tym mechanizmie działa nawet zanim JavaScript zdąży się załadować. Sprawdzam, co faktycznie dzieje się pod tą dyrektywą, i gdzie leżą pułapki, których nie widać w dokumentacji na pierwszy rzut oka.
Pole formularza ma się podświetlić na czerwono, gdy input w środku jest niepoprawny. Prosta rzecz – tylko że CSS przez 25 lat nie potrafił zapytać elementu o to, co się dzieje w jego wnętrzu, a jedynie na odwrót. Sprawdzam, jak :has() odwraca ten kierunek, czym różni się od zwykłych kombinatorów i gdzie ta nowa moc realnie kosztuje wydajność.
Ta sama karta produktu wygląda świetnie w gridzie i łamie się w wąskim sidebarze – mimo starannie dobranych media query. Problem nie leży w Twoim kodzie, tylko w pytaniu, jakie zadaje media query: o szerokość ekranu, nie o miejsce, jakie komponent faktycznie dostał. Sprawdzam, jak container queries przenoszą to pytanie tam, gdzie powinno paść od początku, i co naprawdę dzieje się pod spodem, gdy element staje się „kontenerem zapytania”.
Poprawny HTML to dopiero początek. Sprawdź, jak naprawdę działa accessibility tree, dlaczego ARIA częściej szkodzi niż pomaga, i zbuduj razem ze mną dostępny akordeon, live region oraz obsługę fokusu w Next.js.