Derfor dumpet vi BFF-en vår for Next.js

Otovo-utvikleren forklarer hvorfor de heiv ut Express.js for Next.js.

Rikard Eide er produktutvikler i norske Otovo, som leverer solcelle-paneler. 📸: Privat
Rikard Eide er produktutvikler i norske Otovo, som leverer solcelle-paneler. 📸: Privat Vis mer

Hos Otovo har vi brukt de siste månedene med hjemmekontor til å gjøre noen tekniske løft; Tailwind, Django 3.0, Vercel og Next.js har vært på radaren vår en stund, og i denne artikkelen skal jeg fortelle hvorfor sistnevnte fikk oss til å dumpe BFFen vår.

Bestevenn, sa du? Om du som meg vokste opp på 90-tallet har nok BFF brent seg fast som Best Friends Forever. Men det skal vise seg at microservice-miljøet de siste årene har gjort et forsøk på å kapre akronymet og gi det ny mening som Backend For Frontend.

«I vårt tilfelle betyr dette en liten Express.js-server som rendrer React-applikasjonen.»

I vårt tilfelle betyr dette en liten Express.js-server som rendrer React-applikasjonen kundene våre bruker til å beregne solcelle-potensialet til taket sitt.

BFFen vår er en server jeg har måttet forholde meg mye til siden vi startet Otovo i 2016. Vi har hatt gode og dårlige tider, oppturer og nedturer: Jeg husker første gang vi server-side rendret FAQ-artikler fra Sanity. Jeg var så stolt!

Jeg husker også da jeg fant ut at en liten endring i Babel-konfigurasjonen vår gjorde at den sluttet å kode-splitte JavaScript-filer. I månedsvis var kunder nødt til å laste ned og tolke én diger JavaScript-fil i stedet for det som vanligvis skulle vært 86 mindre filer. Tilsvarende satt kollegaene mine og jeg ventet stadig lengre mens vi utviklet lokalt, totalt uvitende om at den bygde hele kildekoden på nytt, selv etter en en-linjes kodeendring. Da dette ble oppdaget ble jeg dypt skuffet – som et svik fra en veldig god venn.

Gjennom de siste fire årene er dette kun være én av mange lignende problemer som har oppstått. Noen ganger alvorlige, andre ganger bare irriterende. Felles for alle er at de har tatt tid og fokus.

Det er nok urettferdig å gi den hjemmesnekra "bestevennen" vår skylden for dette; det var tross alt jeg som gjorde Babel-endringen. Over tid føles det likevel som et løfte var brutt; BFFen skulle ikke være stor og vanskelig. Alle de vanskelige tingene som å beregne solinnstråling, finne optimal plassering av solcellepaneler og finne de beste og billigste installatørene skulle gjøres av Python-backenden vår. BFFen skulle være liten og enkel. Den skulle være en ressurs i hverdagen min, en pålitelig medhjelper. Men jeg innser nå hvor skjør den var. Jeg trodde vi hadde bygd en Iron Man-drakt, men den var mer som et pinnedyr.

Jeg skulle bygge et produkt som gjorde solceller attraktivt og du skulle bygge JavaScript-kode. Sammen skulle vi redde verden. I stedet har vi havnet på et sted der jeg bruker mer tid som hjemmehjelp; jeg er nødt til å se til daglig stell og sørge for at BFFen vår har det bra.

Dette går ikke lenger.

«Så kjære BFF: Jeg har nylig fått meg en ny venn, det er på tide at jeg lar deg gå.»

Så kjære BFF: Jeg har nylig fått meg en ny venn, det er på tide at jeg lar deg gå. Jeg ble kjent med Next.js gjennom et hobbyprosjekt, og den nye vennen min kan både kickflip og backflip. Teamet som bygger Next får til ting du jeg bare kunne drømt om, for eksempel:

  • ♿️ Automatisk polyfilling av funksjoner som ikke er støttet i eldre nettlesere.
  • 🏎 Pålitelig (og rask!) Hot module reloading
  • 📄 Automatisk optimalisering av statiske sider

I tillegg samarbeider folka bak tett med kjerneutviklere i både React og Chrome-teamet for å sørge for å være "up to speed" på det siste av teknologi og nettleser-kapabiliteter. Dette gjør at både sluttbrukere og utviklere får den raskeste og beste opplevelsen.

Jeg kan fremdeles hente FAQ-artikler fra Sanity, men jeg slipper å gjøre feil i både Babel og Webpack-oppsettet mitt. Kunder kan fremdeles sjekke taket sitt, men de kan gjøre det med mindre kode og færre CPU-sykler. Og ja, Next.js er ikke uten feil eller mangler, men det er milevis bedre enn alternativet.

Takk for alt!

Om du vil prate mer om Next.js, Otovo eller bestevenner er det bare å ta kontakt med @rix1 på Twitter.