Torsdag kveld forrige uke lanserte Vercel den neste store oppdateringen av Next.js-rammeverket, Next.js 14.
Next.js 14 – én nyhet skaper debatt
Selv om Next.js 14 har blitt godt mottatt av mange som er spente blant annet på å ta i bruk ny funksjonalitet som Server Actions, har den nye versjonen også skapt mye debatt blant utviklere.
Enkelte er kritiske til det tette båndet mellom React og Next.js, mens andre mener det skjer for mye "magi" under panseret i Next.js som kan være vanskelig å forstå.
Den kjente utvikleren Kent. C. Dodds, som blant annet har laget React Testing Library, publiserte i helgen et langt blogginnlegg som han delte på Twitter. Innlegget har tittelen "Why I Won't Use Next.js" og er ironisk nok publisert på en blogg laget med Next.js.
I get asked about this a lot (especially since the launch of Epic Web), so I've written it down.
— Kent C. Dodds 🌌 (@kentcdodds) October 25, 2023
Here's why I won't use Next.js:https://t.co/crVN7hOszL
Det verdt å opplyse om at Kent C. Dodds jobbet for det konkurrerende Remix-rammeverket i rundt 10 måneder, og også anbefaler Remix og tjener penger på å selge kurs i Remix.
Dodds er likevel langt fra noen amatør i React-verdenen, og kommer med mye innsikt og gode argumenter i blogginnlegget.
«Jeg er svært bekymret over noen tvilsomme avgjørelser tatt av Next.js-teamet.»
Mener Vercel eksperimenterer
Selv om Dodds innrømmer å ikke ha brukt de aller nyeste versjonene av Next.js, sier han at han har fulgt utviklingen av rammeverket tett.
I bloggposten skriver Dodds at han er bekymret for at Next.js "spiser" React. Vercel har ansatt mange av de som jobbet på React-kjerneteamet hos Meta, og Dodds mener Vercel prøver å viske ut linjene mellom hva som er Next.js og hva som er React. Det skaper forvirring blant brukerne, blant annet når det gjelder React Server Components og Server Actions.
Mye av det som blir introdusert som stabilt i Next.js, er oppført som eksperimentell funksjonalitet i React-dokumentasjonen, påpeker Dodds.
– Jeg er veldig bekymret over noen tvilsomme avgjørelser tatt av Next.js-teamet, primært i markedsføringen av eksperimentelle funksjoner som stabile, skriver Dodds.
Han mener det også skjer for mye "magi" i Next.js.
For eksempel har Next.js valgt å utvide den globale fetch-funksjonen slik at den får automatisk caching. Fetch oppfører seg altså annerledes om du bruker den i Next.js, enn i et vanilla JS-prosjekt.
– Å gjøre dette har negativ innvirkning på fremtiden til web-plattformen, og det betyr også at når du skal feilsøke hvorfor noe ikke virker, så må du lete gjennom ulike ressurser for å finne "Next.js-versjonen av fetch" vs "web-plattformens versjon av fetch".
Vercel: – Det er stabilt
Kort tid etter at Dodds publiserte blogginnlegget, kom Lee Robinson på banen med et motinnlegg der han svarer på kritikken. Robinson er "VP of Developer Experience" i Vercel, og jobber med Next-plattformen til daglig.
I wrote a response to @kentcdodds's post "Why I Won't Use Next.js".
— Lee Robinson (@leeerob) October 27, 2023
It started small, but ended up with a 3,000 word journey and some history about how Next.js has evolved.
Here's why I'm using Next.js.https://t.co/XNTTp4mlbq
Robinson mener en del av kritikken fra Dodds er ting som var tilfelle med Next.js sin gamle Pages-ruter, men som nå er løst med den nye App-ruteren – altså den fil- og mappebaserte ruteren som gir støtte for web-komponenter og mye annet.
På kritikken om at skillelinjene mellom React og Next.js viskes ut, svarer Robinson at dette ikke har vært meningen – men at Next.js satser stort på React, og bygget den nye App-ruteren på funksjonalitet React-teamet har jobbet med i mange år.
– Vi skal fortsette å forbedre oss og gjøre skillelinjene klarere, sier Robinson.
Han mener imidlertid ikke at det gjør noe at Next.js bruker React-funksjonalitet som ikke regnes som stabile i React (er i "React canary-kanalen").
– Kanarikanalen er stabil for å tas i bruk av rammeverk, skriver Robinson.
Det betyr at selv om App-ruteren er bygget på React-funksjonalitet som ikke er stabile for allmenn bruk ennå, så kan man ifølge Robinson bygge stabile rammeverk på dette. Og bruke semver for å sørge for stabilitet og forutsigbarhet for brukerne.
Robinson innrømmer imidlertid at det har vært en del bugs og problemer med den nye App-ruteren.
– Det er min feil, ikke Reacts. Og kommunikasjonen mot utviklermiljøet kunne vært bedre.
«Kommunikasjonen mot utviklermiljøet kunne vært bedre.»
Innrømmer "for mye magi"
På Next.js sine dokumentasjonssider gjør Vercel et poeng ut av at de har forbedret fetch-API-et som er en del av web-standarden. Som nevnt liker ikke Kent C. Dodds denne typen endringer.
Det virker som om flere er enige med Dodds – for dette er noe Next.js antagelig kommer til å endre i fremtiden:
– Jeg er enig med deler av dette, helt konkret det med å legge til Next.js-spesifikke utvidelser til fetch-API-et. Vi ser på å bevege oss bort fra denne retningen basert på community-tilbakemeldinger, skriver Robinson.
i’ve always admired @kentcdodds & @leeerob for their ability to appreciate perspectives outside their own. two ppl with opposing opinions, sharing them without pitchforks, and still friends at the end of it.
— jenna (@jjenzz) October 28, 2023
i love this kind of healthy debate—learnt something from both posts 🫶 pic.twitter.com/ueJADEfWLH
Til tross for at han er enig med Dodds i en del av kritikken, mener han – ikke overraskende – at fordelene med Next.js er flere enn ulempene:
– Jeg trenger aldri å skrive separate backends for prosjekter jeg vil lage. Jeg kan bygge hele prosjektet med Next.js, skriver Robinson.