progressive web apps
Blir progressive webapper den neste webrevolusjonen?
Smelter sammen det beste fra to ulike verdener.
World Wide Web er i utgangspunktet en teknologiplattform som utvikles langsomt. Det kan ta år fra ny funksjonalitet første gang blir demonstrert, til det i praksis blir mulig å bruke den på weben, fordi det kreves støtte fra alle nettlesere.
Men noen ganger tar også weben store skritt framover. Dette skyldes sjelden at en ny og genial webteknologi nettopp har blitt funnet opp, men fordi noen har greid å få oppmerksomhet rundt et konsept som tar teknologien i bruk.
Som med Ajax?
Forrige gang dette skjedde var i 2005, da Jesse James Garrett presenterte konseptet Ajax (Asynchronous JavaScript + XML). Dette skjedde først fem år etter at de største nettleserne hadde fått støtte for den sentrale teknologien, XMLHttpRequest.
Det var likevel konseptet kalt Ajax som for alvor fikk webutviklere til å ta i bruk asynkron oppdatering av websider og -applikasjoner.
Noe tilsvarende kan være i ferd med å skje i disse dager med et konsept som kalles for Progressive Web Apps (PWA), eller progressive webapper. Det var i alle fall målet til Alex Russell, en utvikler som jobber med webteknologi hos Google, da han presenterte konseptet i juni i fjor, som han hadde utarbeidet i samarbeid med frilansdesigneren Frances Berriman.
Heller ikke dette konseptet utgjør noen helt ny teknologi, men kombinerer en rekke eksisterende teknologier for å kunne oppnå noe nytt.
Fra nettsted til app
I utgangspunktet er en progressiv webapp et alminnelig nettsted som man via en vanlig nettadresse (URL) kan åpne i enhver moderne nettleser. Men etter hvert som webappen blir brukt, kommer de mer mobilapp-lignende egenskapene stadig mer til syne for brukeren.
Avhengig av hva brukeren ønsker og gjør, kan den progressive webappen gradvis tilby mer funksjonalitet – under forutsetning at nettleseren som benyttes har støtte for de underliggende teknologiene. Det er ikke alltid tilfellet riktig ennå.
Et typisk scenario vil være at en bruker som har benyttet en webapplikasjon flere ganger, etter hvert blir spurt av nettleseren om webappen skal installeres på enheten. Dette vil skje helt uavhengig av noen app-markedsplass, og i praksis handler det primært om at ikoner med snarveier til appen blir plassert på hjemmeskjermen og eventuelt i appskuffen til enheten.
Dette kan man i og for seg gjøre i noen nettlesere med vanlige websider og -apper allerede i dag. Men når brukeren trykker på dette ikonet, åpnes websiden eller webappen i nettleseren. Slik er det ikke med progressive webapper.
App med webens fordeler
Når en progressiv webapp er installert på enheten, skal den i størst mulig grad opptre som en vanlig app, men med enkelte fordeler hentet fra webplattformen. Det innebærer blant annet at den kjøres i fullskjermsmodus, uten at nettleserens brukergrensesnitt (chrome) er synlig. Navigasjon og samhandling skal også være app-lignende.
Responsiv design brukes til å sikre at appen fungerer på både små smartmobiler og store pc-skjermer, samt alt imellom. For selv om progressive webapper skal være mobilvennlige, bør de kunne benyttes av pc-brukere.
Også offline
Når man starter en progressiv webapp, skal den vises nesten umiddelbart, helt uavhengig av om nettilgangen er god, dårlig eller fraværende. I bakgrunnen brukes teknologien service worker, som fungerer som en slags proxyserver på klientsiden. Første gang appen startes, sørger denne for at de viktigste ressursene blir mellomlagret på enheten og dermed kan vises også når nettilgangen er fraværende eller for dårlig til å gi brukeren en god nok opplevelse med helt oppdatert innhold.
Samtidig sørger den samme bakgrunnsfunksjonaliteten for at appen stadig oppdateres, så lenge nettilgangen er til stede. Det er altså ikke nødvendig å installere egne oppdateringer til appen.
Lenkemulighetene bevares
Helt sentralt på weben er muligheten til å lenke til ressurser. Russell går så langt at han skriver at en ressurs du ikke kan lenke til, ikke er en del av weben. Lenker kan enkelt deles, og klikker man på en lenke, åpnes den automatisk i nettleseren til enheten uten at man må installere noe som helst.
De progressive webappene er ekte «webinnbyggere», siden de utgangspunktet i utgangspunktet er vanlige webapplikasjoner som kjøres i nettleseren. Det at de er en del av weben, gjør dem også mulig å oppdage og indeksere av søkemotorer.
Selskapet som i størst grad har stilt seg bak ideen om progressive webapper, er Russells egen arbeidsgiver, Google. Det er ikke tilfeldig. Selskapet har alltid vært en stor tilhenger av weben. Googles hovedprodukt, søketjenesten, avhenger av at det meste av innhold er tilgjengelig på den åpne weben, selv om søketjenesten også støtter indeksering av innhold som bare tilbys i apper.
Selskapet har allerede viet flere utviklerkonferanser til progressive webapper, nå sist under selskapets Chrome Dev Summit, som ble arrangert i november.
Mange har i årevis sagt at de systemspesifikke mobilappene vil ta over og skyve weben ut i kulden, men det har ikke skjedd. Faktisk mener enkelte at etterspørselen etter apper er langsomt døende. Dette dokumenteres blant annet med at de fleste smartmobilbrukere, i alle fall i USA, sjelden eller aldri laster ned nye apper.
Apple kan bli en joker
Den kanskje viktigste faktoren for at progressive webapper skal ta av, er støtte fra Apple. Selskapets Safari-nettleser mangler støtte for blant annet service workers, som er en nødvendighet for sentrale deler av konseptet. Noe løfte om slik støtte, har ennå ikke kommet.
Det har likevel ikke hindret at aktører som The Washington Post allerede har lagd progressive webapper og oppgir at de har oppnådd betydelig bedre engasjement hos leserne ved hjelp av disse appene enn med vanlige websider. Forskjellen er dessuten liten mellom brukere av iOS og Android.
Noe av forbedringen i brukerengasjement tilskrives bruken av push-varslinger, som også er en sentral del av progressiv webapp-konseptet.
Selv om iOS-spesifikke mobilapper er viktig for Apple på alle måter, så er det lite trolig at selskapet ser tjent med å tilby brukerne en dårligere opplevelse enn konkurrentene for funksjonalitet som brukerne faktisk benytter seg av.
Googles egen nettleser, Chrome, har støtte for alt som trengs. Det samme har Opera og trolig også Firefox. Microsoft støtter mye av det samme i med Edge og Windows 10 Mobile, og mer kommer i neste store oppdatering.
Støtte til utviklere
Progressive webapper avhenger også av støtte i utviklerverktøyene. Google tilbyr dette allerede i utviklerverktøyene til Chrome. Under Application-fanen har man nå egne testverktøy for både service workers og manifester.
For at webapplikasjoner skal bli ansett som progressive, må de tilfredsstille en rekke krav. Blant annet kreves det at de bruker HTTPS, at de fungerer i de vanligste nettleserne, at i alle fall startsiden fungerer uten nettilgang, at hver side i appen har en egen URL og at også første gangs lasting skjer temmelig raskt selv over en 3G-forbindelse.
Målet er likevel et annet enn med Googles AMP-format (Accelerated Mobile Pages). For mens AMP handler om å levere relativt minimalistiske websider lynraskt til mobile enheter, handler progressive websider altså om å tilby en mer app-lignende brukeropplevelse. Men fart er likevel svært viktig.
Tilgjengelig er også Chrome-utvidelsen Lighthouse som kan brukes til å validere og debugge om progressive webapper tilfredsstiller kravene for at nettleseren skal kunne anse dem for å være nettopp dette.
Dette er likevel minimumskrav. Russell foreslår her flere andre faktorer som kan bringe appene fra å være brukbare til å bli veldig gode.
Test selv
Et godt utgangspunkt for å lage en første testapp, er denne siden. Her får man blant annet en gjennomgang av den grunnleggende koden for å lage et «app shell», altså delen som utgjør infrastrukturen til appen. Selve innholdet kommer i tillegg.
Noe av det essensielle som diskuteres, er rekkefølgen innholdet bør lastes i. Det er ikke noe standardsvar på dette. Men det er viktig at brukeren ikke opplever at det ikke skjer noen progresjon. Noe må derfor vises umiddelbart, mens andre elementer kan lastes litt senere og mellomlagres på enheten for framtidig bruk.
For å teste en av de eksisterende progressive webappene, får man nok den mest komplette opplevelsen ved å laste for eksempel AliExpress inn i en Android-nettleser, for eksempel Chrome. Lukk deretter fanen, åpne AliExpress på nytt og gjenta det samme én til to ganger til. Da skal man få en forespørsel om man vil legge til AliExpress på hjemmeskjermen. Velger man å gjøre dette, kan man deretter klikke på ikonet som har blitt opprettet og åpne AliExpress som en progressiv webapp. Bildet lenger opp i saken viser hvordan dette tar seg ut.