– React er et stort, stygt beist med tjue tusen måter å gjøre den samme tingen

Frontend-eksperter tror mange begynner å bli lei React. Vegar Norman forstår dem godt.

React fyller snart 10 år. Nå møter jubilanten stadig tøffere konkurranse fra alternative rammeverk, og Vegar Norman i Capgemini forstår at mange vil sjekke dem ut. 📸: <a href="https://unsplash.com/photos/UYsBCu9RP3Y?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a> / Privat / kode24
React fyller snart 10 år. Nå møter jubilanten stadig tøffere konkurranse fra alternative rammeverk, og Vegar Norman i Capgemini forstår at mange vil sjekke dem ut. 📸: Unsplash / Privat / kode24 Vis mer

Ifølge State of JS 2022-undersøkelsen brukes React av hele 82 prosent av de spurte.

I det siste har det imidlertid vært en del "murring" fra mange i React-miljøet. Mange mener React har blitt for vanskelig å bruke, og at det er for mange regler å huske på. Regler som kan være vanskelige å forstå for ferske brukere («du bruker useEffect feil»).

Vegar Norman er seniorkonsulent i Capgemini, og har lagt merke til kritikken. De fleste frontendutviklerne i Capgemini har dybdekunnskap om React og tilhørende verktøy, og React er det de fleste jobber med ute hos selskapets kunder. Han mener det er lett for erfarne utviklere å glemme at React kan være litt komplisert.

– Jeg jobbet en kort stund som fagskolelærer innen frontend-utvikling, og først da jeg måtte forklare for studentene mine hvordan React fungerer og hvorfor vi gjør som vi gjør, skjønte jeg hvor komplisert det faktisk har blitt, sier han til kode24

Med Next.js ble React trivelig

Norman forteller at React ikke lenger er "V-en i MVC", som ofte har vært en måte å forklare hva React er.

– React er et stort, stygt beist med hooks, providers og tjue tusen forskjellige måter å gjøre den samme tingen på, fordi React tross alt har levd i snart ti år nå. Legger du på at React ofte jobber i tandem med andre, kompliserte verktøy som Redux og Saga, blir forvirringen ofte enda større, sier Norman.

Han mener rammeverk som Next.js i stor grad løser det som er vanskelig med React.

– Der React egentlig bare er et verktøy, er Next.js et ordentlig rammeverk i ordets rette forstand, med mer definerte regler og retningslinjer for hvordan man skal jobbe med de ulike delene av applikasjonen. Så fort det kom på plass, ble React egentlig riktig så trivelig å jobbe med.

"Mange regler også før hooks"

Caroline Odden er faggruppeleder for React i Bekk, og mener at React ofte kunne være vanskelig også tidligere – selv om det nok har blitt mer komplekst etter at hooks ble introdusert i React 16.8.

– Det var en del regler i "gamle" React også, som kanskje mange har glemt, sier Odden.

Som eksempler nevner hun livssyklusmetoder som "shouldComponentUpdate" og "componentWillUpdate", som var til stor frustrasjon for mange og ofte gjorde at ting oppførte seg rart fordi metodene ble brukt feil.

Caroline Odden, faggruppeleder for React i Bekk. 📸: Privat
Caroline Odden, faggruppeleder for React i Bekk. 📸: Privat Vis mer

Odden tror det skal være enklere å forstå den nye måten å gjøre det på, bare man lærer seg de nye konvensjonene og får en ny mental modell av hvordan React med funksjonskomponenter faktisk fungerer.

Den raske utviklingen som har vært innenfor alternativer til React tror hun er bra for at React skal ha noe å strekke seg etter og forbedre seg.

– Kommer det ikke nye rammeverk som utfordrer, vil React stagnere og bli gammeldags, sier Odden.

Uten alternativer, ingen innovasjon

Vegar Norman i Capgemini er enig.

– Vi trenger naturligvis andre rammeverk enn React. Uten alternativer hadde det ikke vært innovasjon og nye måter å gjøre ting på. Selv om rammeverkene vi bruker løser de samme problemene på litt forskjellig måte, så er variasjonen med på å gjøre at vi kollektivt finner den beste måten å gjøre ting på over tid, sier Norman.

Han mener det store omfanget av ulike verktøy og rammeverk er med på å danne grunnlag for nye webstandarder over tid, som for eksempel webkomponenter, samt nesting i CSS – som nå er på tegnebrettet hos CSSWG.

«React begynner å bli veldig tungrodd, spesielt i kombinasjon med for eksempel Redux.»

Den store interessen for alternativer til React tror han har å gjøre med både at folk begynner å bli lei, at utviklere står friere enn før til å velge de verktøyene de mener fungerer best, og at det også er flere unge utviklere som har lært seg noe annet enn React på vei inn i kodeuniverset.

– Men React begynner å bli veldig tungrodd, spesielt i kombinasjon med for eksempel Redux. Utviklere med "frontend fatigue" velger kanskje bort de gamle verktøyene til fordel for mer lettbeinte og raske verktøy.

Norge er likevel et land der mye av kompetansen og den nåværende produksjonssatte koden er sentrert rundt de "gamle" verktøyene. Det å gå over til noe annet, vil derfor ta tid, mener han.

"Moden for paradigmeskifte"

Mikael Brevik, CTO i Variant, mener React er god på mange ting – men også dårlig på mye.

Han tror 10 år med React begynner å merkes, selv om det er naturlig at det kommer en del kritikk og utålmodighet med et bibliotek som har blitt tatt i bruk så mye som React faktisk har blitt.

– Selv om React ofte har vært gode på å ta tydelige forbedrede steg og lage nye gode abstraksjoner, begynner verden å bli moden for et nytt paradigmeskifte, sier Brevik.

Mikael Brevik, CTO i Variant. 📸: Privat
Mikael Brevik, CTO i Variant. 📸: Privat Vis mer

Han mener det ikke lenger holder med bare komponentbasert arkitektur, og påpeker at all kompleksitet i React nå ligger i håndtering av bivirkninger. Der har det vært mye frem og tilbake.

– Jeg tror `useEffect` er og har vært en feilslått abstraksjon. Da det kom var det en vanskelig kamel å svelge, da den ødelegger den naturlige flyten av kodeeksekvering i kjøremiljø for JavaScript. Med alle særtilfeller rundt tankerekker for bruk har dette bare forsterket seg, sier Brevik.

Dette mener han har blitt en konstant kilde til feil og frustrasjon blant både erfarne og uerfarne, og gjør at React ifølge Brevik begynner å miste det solide fotfestet de har hatt.

Spår store endringer

Brevik bruker selv React og ofte det React-baserte rammeverket Next.js i prosjekter han er involvert i.

– Jeg tror vi de neste 2-3 årene fortsatt vil kunne si "nobody ever got fired for using React", avslutter Brevik.

– Men det kommer til å bli en økende grad av frustrasjon knyttet til det. Jeg er usikker på om RFC-er som ligger ute rundt 'use' er godt nok for at React skal klare å holde på markedsdominansen.