Kuusi korttia kojelaudalla, kuusi latausindikaattoria, ja ne eivät näy yhdessä — ne näkyvät yksi kerrallaan, kuin dominobrikettejä, koska jokainen kortti aloitti lataamisen vasta kun sen yläpuolinen oli valmis. Se on vesiputous, ja kokonaisvastausaika ei ole hitain pyyntö, vaan kaikkien summa. use() ja Suspense katkaisevat ketjun — mutta kiinnostavaa on alla oleva koneisto: mitä suspensoitunut komponentti oikeasti heittää, ja miten väärässä järjestyksessä saapuva HTML päätyy silti oikeaan paikkaan.
Kymmenen vuotta kuvakkeen animointi hero-kuvaksi tarkoitti yhtä tekniikkaa: mittaa elementti ennen, mittaa jälkeen, väärentä ero transformilla ja toista. FLIP. Jokainen animaatiokirjasto tekee sen, ja jokainen maksaa siitä JavaScriptillä pääsäikeessä pahimmalla mahdollisella hetkellä. View Transitions API siirtää koko tempun selaimeen — ja React 19.2:n ja Next.js 16:n myötä koko sopimus koostuu yhdestä propista nimeltä name.
'use server' näyttää pelkältä syntaktiselta sokerilta fetch-kutsulle API-reittiin – ja juuri siksi useimmat toteutukset kohtelevat sitä kuin tavallista funktiokutsua. Tämä on virhe, jolla on konkreettisia seurauksia: jokaisesta 'use server' -merkinnällä varustetusta funktiosta tulee julkinen päätepiste verkossa, ja tähän mekanismiin rakennettu lomake toimii jopa ennen kuin JavaScript ehtii latautua. Tarkastelen, mitä tämän direktiivin alla oikeasti tapahtuu, ja missä piilevät sudenkuopat, joita dokumentaatiosta ei ensi silmäyksellä huomaa.
Oikea HTML on vasta lähtökohta. Katso, miten saavutettavuuspuu oikeasti toimii, miksi ARIA aiheuttaa haittaa useammin kuin luulisit, ja rakenna kanssani oikea accordion, live-region ja fokuksenhallinta Next.js:ssä.