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:
| Strategi | Passar när | Nackdel |
|---|---|---|
| Senaste skrivningen vinner | Data ägs av en person åt gången | Tyst dataförlust om antagandet inte håller |
| Fältvis sammanslagning | Olika roller ändrar olika fält på samma post | Mer logik, svårare att testa |
| Händelselogg i stället för tillstånd | Registreringar, tidrapporter, skanningar | Kräver att datamodellen byggs så från början |
| Manuell lösning i appen | Få men viktiga konflikter | Kostar 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.