Teknik

Bygga app med offline-stöd — så fungerar synk i praktiken.

Appar för fältarbete, lager och transport måste fungera utan täckning. Här är hur lokal lagring, skrivkö och konflikthantering byggs — och vad det tillför i tid och pengar.

Lästid 8 min

Kort svar

Vad krävs för att en app ska fungera offline?

Tre saker: en lokal databas i telefonen, en kö för allt som ska skickas när uppkopplingen kommer tillbaka, och en regel för vad som gäller när samma post ändrats på två håll. Det sista är det svåra.

Räkna med 15–30 procent påslag på de delar av appen som ska fungera utan täckning. Det är inte lagringen som kostar, utan synkroniseringen och testningen av allt som kan gå fel.

Offline betyder sällan hela appen

Den vanligaste missen är att formulera kravet som "appen ska fungera offline". Nästan alltid handlar det om ett par flöden: montören ska kunna registrera ett utfört arbete i ett källarutrymme, chauffören kvittera en leverans i en tunnel, lagerpersonalen skanna på en yta utan täckning. Administration, rapporter och inställningar kan kräva uppkoppling.

Att avgränsa detta i förväg är den enskilt största kostnadsbesparingen i ett offline-projekt.

Så byggs det

1. Lokal databas

Appen läser aldrig direkt från nätet, utan alltid från en lokal databas — SQLite via WatermelonDB eller Expos SQLite-modul. Gränssnittet blir därmed snabbt även med bra täckning, eftersom ingen skärm väntar på ett svar.

2. Skrivkö

Varje ändring som användaren gör sparas lokalt och läggs i en kö. Kön töms när enheten är online, i rätt ordning, och tål att appen stängs mitt i. Varje åtgärd får ett eget id så att ett omskick inte skapar dubbletter på servern.

3. Konflikthantering

Två personer ändrar samma post. Vem vinner? Alternativen i praktiken:

StrategiPassar närNackdel
Senaste skrivningen vinnerData ägs av en person åt gångenTyst dataförlust om antagandet inte håller
Fältvis sammanslagningOlika roller ändrar olika fält på samma postMer logik, svårare att testa
Händelselogg i stället för tillståndRegistreringar, tidrapporter, skanningarKräver att datamodellen byggs så från början
Manuell lösning i appenFå men viktiga konflikterKostar en skärm och en användarutbildning

För fältappar är händelselogg oftast rätt: en tidrapport eller en skanning är en händelse som inträffat, inte ett värde som skrivs över. Då kan två enheter aldrig krocka.

4. Synligt status

Användaren måste kunna se vad som är sparat lokalt och vad som nått servern. En liten statusrad räcker, men den måste finnas — annars blir supportfrågan "försvann min rapport?" den vanligaste ni får.

Vad det kostar

  • Enkel offline-läsning, cachat innehåll som visas utan täckning: 10 000–20 000 kr.
  • Offline-registrering med skrivkö för ett par flöden: 40 000–80 000 kr.
  • Full tvåvägssynk med konflikthantering och flera roller: 100 000 kr och uppåt.

Beloppen är tillägg till appen i övrigt. En fältapp med offline-stöd hamnar i praktiken oftast i spannet för en medelstor app, 100 000–350 000 kr.

Testning är halva arbetet

Offline-fel uppstår i lägen som är svåra att råka ut för av misstag: appen dödas mitt i en synk, enheten har tre streck men inget faktiskt genomflöde, klockan på telefonen går fel. Vi testar med simulerat nätverk, tvingade avbrott och två enheter som ändrar samma post samtidigt. Utan den testningen är offline-stödet ett löfte, inte en funktion.

Bygger ni för personal ute i fält är offline sällan en bonusfunktion utan förutsättningen för att appen ska användas alls. Se hur vi arbetar med appar som digitaliserar arbetsprocesser.

Vad du får med dig

  • Avgränsa vilka flöden som ska fungera offline — sällan hela appen.
  • Lokal databas, skrivkö och konfliktregel är de tre byggstenarna.
  • Händelselogg slår tillståndssynk för registreringar i fält.
  • Räkna med 15–30 procent påslag på de berörda delarna, mest till synk och testning.

Vanliga frågor

Hur mycket dyrare blir en app med offline-stöd?
Räkna med 15–30 procent på de delar som ska fungera offline. Det är inte lagringen som kostar, utan synkroniseringen, konflikthanteringen och testningen av allt som kan gå fel.
Måste hela appen fungera offline?
Nästan aldrig. Vanligtvis räcker det att de flöden som används ute i fält fungerar utan täckning, medan administration och rapporter kräver uppkoppling.

Vill du ha en siffra för just din app?

Testa kalkylatorn för en indikation på några minuter, eller boka ett samtal så går vi igenom förutsättningarna tillsammans.