Microsoft lager mye i React, som da de tidligere i år annonserte at de byttet ut Angular med React for å lage en helt ny arkitektur for Teams-appen:
Vraka Angular for React - sånn ble Teams dobbelt så rask
Det er imidlertid ikke React for alle penga.
På torsdag lanserte Microsoft en helt ny versjon av app-butikken sin Microsoft Store, der alt sammen er bygget fra bunnen av med web-komponenter og biblioteket Lit.
Hey! Today we released the new https://t.co/g2dIFhnDWG - app store for Windows. 🎉 Proud of this work!
— Judah Gabriel (@JudahGabriel) October 5, 2023
It's built with web components, using @buildWithLit, @shoelace_style, @vite_js, @pwabuilder's PWA template, App Tools router, running on C# ASPNET backend. 😎
Web-komponenter er en web-standard som lar deg lage såkalte "custom elements" som kan brukes i HTML-kode. Dette ligner på vanlige HTML-elementer som for eksempel <div>, <article>, og så videre – med den viktige forskjellen at det er du som bestemmer hva elementene skal gjøre.
Lit er et åpen kildekode-bibliotek utviklet av Google som gjør det enklere å jobbe med web-komponenter.
Ut med React
Microsoft-utvikler Judah Gabriel skriver i diskusjonstråden på X/Twitter at de har kuttet ut den gamle React-kodebasen, siden den var basert på et "avlegs" UI-rammeverk.
Det kommer ikke frem hvilket UI-rammeverk Gabriel viser til som skal være "avlegs" – om det faktisk er React han mener, eller et annet rammeverk. Det er for øvrig ingenting i veien for å bruke web-komponenter i for eksempel React, eller lage web-komponenter basert på React, Svelte eller noe annet.
I tillegg til web-komponent-biblioteket Lit har Microsoft også brukt Shoelace, et web-komponent-basert UI-bibliotek, byggeverktøyet Vite.js og PWABuilder. Backenden kjører på C# ASP.NET.
– Mindre behov for React
Enkelte som kommenterer Gabriels tweet spør hvorfor Microsoft ikke har valgt å heller bruke noen av Microsofts egne løsninger, som Microsofts UI-bibliotek Fluent 2 med React.
Why not Fluent 2 with React? That way looks more active in development, and it's a bit unexpected to see that internal team uses something else.
— 109th (@IllusionMH) October 6, 2023
Judah Gabriel svarer at de ikke trenger React lenger. Han har tidligere bygget SPA-er ("Single Page Applications") i blant annet React, Angular, Vue og Knockout, sier han. Men:
– Det var en gang behov for SPA-rammeverk fordi web-en ikke hadde noe konsept med "self-contained" komponenter med databinding, oppdagelse av endring, og så videre.
– Nå som web-komponenter er en del av web-en, er det mindre behov for slike rammeverk, sier Gabriel.
Han sier også at de heller ikke vurderte Blazor, et annet Microsoft-verktøy, til denne applikasjonen.
– Det fyller en fin nisje: bygge fullstack-web-apper i C#. Det er fantastisk for C#-utviklere som ikke vil lære den ville vesten som web-økosystemet utgjør. Men jeg er en webutvikler nå, og jeg liker TypeScript, sier Gabriel.
«Nå som web-komponenter er en del av web-en, er det mindre behov for slike rammeverk.»
Påvirker ikke Windows-versjonen
Enkelte uttrykte bekymring for at Microsoft nå kom til å bytte ut den native Windows Store-appen som følger med i Windows. Gabriel sier disse ikke har noe å bekymre seg for.
Web-appen de nå har laget med web-komponenter er ment som web-fronten til app-butikken i Windows, og skal altså ikke erstatte denne.
Think of this as the web front to the app store on Windows. They work together.
— Judah Gabriel (@JudahGabriel) October 6, 2023
I work on the same team as the Store desktop app team - they're great folks building the best in-box app on Windows. I wish more Windows in-box apps were as well-crafted as Store.
Siden appen er bygget med PWA-builder ville den i utgangspunktet kunne installeres som en PWA også i Windows. Det kunne blitt forvirrende for brukerne, som da ville risikere å installere Microsoft Store-appen fra nettleseren og ende opp med to app-butikker i Windows – en native og en PWA.
Dette har de løst ved å blokkere Chromium-installasjoner ved å sette start_url-feltet i manifestet til null.
Les også om TV 2 som bygger web-komponenter med Svelte: