TypeScript 7 vraker JavaScript: «Et generasjonsskifte»
Kritisk React-sårbarhet, den Rust-baserte Prettier-kompatible Oxfmt og TypeScript 7 går native, i ukas ForrigeUke.
Dette var uken for kiling, yrkesendring — Og 5 832 ting skjedde i frontend-verdenen!
Kritisk React-sårbarhet avslørt 👾
Denne uken offentliggjorde React-teamet en kritisk sikkerhetssårbarhet i React Server Components, klassifisert med den høyeste alvorlighetsgraden, CVSS 10.0.
Kort forklart gjør sårbarheten det mulig for uautentiserte angripere å kjøre vilkårlig kode på serveren (Remote Code Execution) ved å sende spesialtilpassede HTTP-forespørsler til React Server Function-endepunkter. Feilen lå i hvordan React dekoder og deserialiserer disse forespørslene.
Sårbarheten finnes i versjonene 19.0, 19.1.0, 19.1.1 og 19.2.0 av følgende pakker: react-server-dom-webpack, react-server-dom-parcel, og react-server-dom-turbopack.
Det betyr at selv apper som kun bruker React Server Components, og ikke eksplisitte Server Functions, kan være utsatt. Hvis du er berørt er det lurt å oppgradere umiddelbart 😅
Flere populære rammeverk og verktøy, blant annet Next.js, React Router, Vite RSC, Waku, Redwood SDK, Parcel og Turbopack, er indirekte berørt og egne oppgraderingsinstruksjoner er publisert for disse.
Applikasjoner som ikke bruker server-miljø eller ikke støtter React Server Components, er ikke påvirket 😎
Oxfmt: En ny Rust-basert, Prettier-kompatibel kodeformaterer i alpha 🚀
Denne uken ble Oxfmt, et verktøy for automatisk kodeformatering, lansert i alpha-versjon.
Oxfmt er bygget i Rust, og er utviklet for å fungere som en direkte erstatning for Prettier. Hovedidéen er å tilby langt raskere formatering, full kompatibilitet med eksisterende Prettier-konfigurasjon og minimal friksjon ved migrering.
- Verktøyet kan installeres som en utvikleravhengighet via ønsket pakkebehandler, og bruker samme JSON-baserte konfigurasjonsformat som Prettier.
- I mange tilfeller holder det å gi nytt navn til eksisterende konfigurasjonsfil.
- Når det gjelder kompatibilitet, matcher Oxfmt i stor grad Prettiers formatering for JavaScript og TypeScript, noe som gjør det trygt å ta i bruk i eksisterende prosjekter.
For team som allerede bruker Prettier, skal overgangen til Oxfmt i praksis være smertefri.
Den største forskjellen ligger derimot i ytelse. Ifølge innlegget er Oxfmt over 30 ganger raskere enn Prettier uten cache, over 20 ganger raskere enn Prettier med Oxc-parser og over 3 ganger raskere enn Biome, som også er Rust-basert.
Oxfmt retter seg særlig mot team med store kodebaser og treg formatering i CI, og kan på sikt bli et reelt ytelsesalternativ til både Prettier og Biome. Det kan likevel være lurt å ta det i bruk med en viss forsiktighet, spesielt i større produksjonsløp ettersom Oxfmt fortsatt er i alpha. For det første, selv om Oxfmt allerede kan brukes direkte via CLI i lokale prosjekter og CI-pipelines, er foreløpig editor-integrasjonerer mer begrensede enn for Prettier.
I tillegg støttes kun JavaScript og TypeScript i første omgang.
TypeScript 7: Farvel til JavaScript-kompilatoren 👋
Denne uken kom Microsoft med en spennende oppdatering om at utviklingen av TypeScript 7 har nådd et svært modent stadium, og etter flere år med arbeid på den native porten av TypeScript-kompilatoren er prosjektet i praksis klart for bred bruk.
Denne native-versjonen innebærer at hele TypeScript-kompilatoren og språktjenesten nå er portet til et kompilert språk, noe som betyr at TypeScript ikke lenger kjører som et JavaScript-program i Node.js, men som et selvstendig, maskinnært program direkte på operativsystemet. I dag kan den allerede testes via npm-pakken @typescript/native-preview.
- I praksis gir dette betydelig raskere kompilering, lavere minnebruk og bedre støtte for parallell prosessering.
- Microsoft rapporterer blant annet om opptil 10 ganger raskere kompilering i reelle kodebaser, samt at byggetider er redusert fra over ett minutt til under ti sekunder i flere tilfeller.
- I tillegg vil det føre til en mer responsiv editor-opplevelse ved at den native porten nå omfatter de viktigste funksjonene i språktjenesten som: autocompletion, auto-imports, “go to definition”, find-references, rename, hover-informasjon, formatering, quick fixes og symbolnavigasjon.
TypeScript 7 blir med dette ikke bare en ny versjon, men et generasjonsskifte hvor versjon 6.0 vil bli den siste JavaScript-baserte versjonen av kompilatoren. Den fungerer derfor som en bro mellom versjon 5.9 og 7.0, og vil kun ta for seg sikkerhetsfikser, kritiske regresjonsfeil, kompatibilitetsfikser mot 7.0.
Det var alt for denne gang. Ha en riktig fin uke! 👋