Med React 18 kom også React Server Components (RSC), som ble tilgjengelig for utviklere flest da Next.js tidligere i år erklærte at deres nye app-mappe var stabil. Da ble plutselig RSC standard når man lager en app.
Overgangen til RSC har imidlertid vært langt fra problemfri.
De siste ukene har mange utviklere uttrykt frustrasjon i sosiale medier. Mange forteller om ting som slutter å fungere, og klager over at alt har blitt vanskeligere å forstå.
Server Components: - Rimelig ferske greier
Utvikleren Lenz Weber-Tronic er en av vedlikeholderne av Apollo Client, Redux Toolkit og RTK Query. I et blogginnlegg skriver han at selv om han elsker React Server Components, og mener de er et fantastisk fremskritt, så er de alt annet enn enkle å forholde seg til.
– Jeg er superfrustrert! skriver Weber-Tronic.
Merkelige problemer
Weber-Tronic skriver at jobben og hobbyen hans er å gjøre bibliotekene han vedlikeholder så enkle å bruke som mulig.
– Men det har plutselig blitt mye vanskeligere. Folk kommer til meg med merkelige problemer, og jeg kan ikke løse alle for dem.
After witnessing "peak RSC frustration Twitter week", I sat down on the weekend and tried to write down my take on this - as a blog post. https://t.co/4Vfe7AEgLv
— Lenz Weber-Tronic (@phry) July 5, 2023
More balanced.
No unexplained frustration in 280 characters.
And some constructive ideas.
Den erfarne utviklerne skriver at mange på StackOverflow melder om feilmeldinger de ikke forstår etter å ha satt opp et React-prosjekt basert på den første anbefalingen på React-hjemmesiden, med standardinnstillingene.
Disse brukerne vet ikke hva en serverkomponent er for noe, selv om de nå i praksis skriver serverkomponenter (RSC). Ingen av bibliotekene de bruker fungerer med serverkomponenter slik de gjorde tidligere. I Apollo trenger du et ekstra bibliotek, mens de Redux-baserte bibliotekene per nå ikke støtter RSC.
– Jeg kan ikke gi dem en tretimers leksjon på StackOverflow, og for å være ærlig – jeg vet heller ikke i hvilken retning jeg skal peke dem, skriver Weber-Tronic.
Det hender også brukere melder om feil som Weber-Tronic ikke forstår. I motsetning til tidligere må han nå ofte anta at feilen ikke er i verken hans eller brukerens kode, men at det handler om en React-bug.
Forvirret av TypeScript i React? Sjekk dette
Vanskeligere å forstå
Weber-Tronic sier han jobber aktivt med å få bibliotekene han vedlikeholder til å fungere bedre både i serverkomponenter, i klientkomponenter som rendres på serveren og strømmes til nettleseren, og i klientkompnenter som kjører i nettleseren.
Det å få til dette har vært vanskeligere enn han har opplevd noen gang før.
– Jeg har aldri følt meg så fortapt.
Ifølge Weber-Tronic var det ingen veiledning å finne for bruk av RSC, bortsett fra det helt grunnleggende. Og selv om Next.js-dokumentasjonen var veldig god, så er den ikke laget for noen som skal skrive et bibliotek.
«Jeg måtte hente det meste av informasjon fra Twitter-diskusjoner.»
– Jeg måtte hente det meste av informasjon fra Twitter-diskusjoner. Ved ett tilfelle satte Dan Abramov seg med med meg i en videosamtale og forklarte en masse.
Etter samtalen med Abramov, en sentral og den kanskje mest kjente personen på React-teamet, brukte Weber-Tronic mange timer på å skrive ned alt han hadde lært og korrigere misforståelser og feil.
– Ikke alle har en Dan som kan sette seg ned med dem og guide dem gjennom dette. Hvor frustrerende må ikke det være for alle?
Som åpen hjertekirurgi
Weber-Tronic mener det å skrive og vedlikeholde biblioteker har blitt vanskeligere enn før.
En av grunnene er at hvis filer som importeres fra React Server Components inneholder referanser til hooks som useState, så feiler bundleren. Disse hooksene vil fungere kun når de kjøres på klienten.
Det betyr at biblioteker nå bør ha et eget "entry point" rettet mot RSC, som ikke inneholder noen API-er som refererer til disse hooksene som ikke fungerer. Dette er alt annet enn enkelt.
– Det er som åpen hjertekirurgi. En feil bevegelse... Det er nervepirrende, og for å være ærlig noe jeg helst vil unngå.
Han får støtte fra andre. En Reddit-bruker skriver:
– Du klarte antagelig på en forsiktig måte å sette ord på det veldig mange mennesker føler, men ikke klarer å si forsiktig nok.
Kjempenyttig, men med én stor ulempe
Har forslag til forbedringer
Likevel understreker Weber-Tronic at han elsker React Server Components, men at det gjenstår en masse arbeid som må gjøres av alle.
Han foreslår blant annet å gjemme eksperimentell funksjonalitet i "canaries", altså tidlige versjoner. Problemet i dag er ifølge han at slike "canary-versjoner" i dag shippes som en del av rammeverk som kalles "stabile". Dermed eksponeres brukerne for eksperimentelle funksjoner og tar dem i bruk, selv om de ikke burde det.
– Kan vi få "feature flags" for å gjemme disse funksjonene?
Du kan lese alle forslagene til Lenz Weber-Tronic i bloggposten hans her.
Synes du React har blitt vanskeligere å bruke? Vi hører gjerne fra deg i kommentarfeltet, eller om du har lyst til å skrive et leserinnlegg – send det til hei@kode24.no