Mobiilisovellus: Cross-platform vai natiivi?

Mobiilisovellusta kehittäessä on jo alkuvaiheessa päätettävä, rakennetaanko mobiilisovellus cross-platform frameworkia (esim. React Native, Flutter) käyttäen yhdelle koodipohjalle vai tehdäänkö se natiivisti luoden erilliset koodipohjat eri alustoille (iOS, Android ym). Ratkaisu voisi alkuun kuulostaa yksinkertaiselta eli totta kai mennään yhdellä koodipohjalla mutta asia ei ole aina näin yksinkertainen. Erityisesti tarve saada maksimaalinen suorituskyky tai tarve käyttää hyvin platform-spesifejä ominaisuuksia voi johtaa tilanteeseen jossa natiiviratkaisujen käyttäminen on parempi tai jopa halvempi ratkaisu.

Tarpeen onkin tehdä alustava vaatimusmäärittely ennen toteutustavan lyömistä lukkoon. Mikäli sovellus on tarkoitus toteuttaa useille eri alustoille on otettava huomioon että natiiviratkaisujen käyttäminen erillisine koodipohjineen voi nostaa projektin hintaa huomattavasti. Natiiviratkaisu voi kuitenkin tässäkin tilanteessa tulla kyseeseen erityisesti jos tarvitaan maksimaalista suorituskykyä, huippuun viritettyä tietoturvaa tai tietynlaisia alustakohtaisia ominaisuuksia.

Alustavassa vaatimusmäärittelyssä tulee kiinnittää huomiota juuri siihen voidaanko sovellus toteuttaa ilman että syntyy suurta tarvetta kääntyä natiiviratkaisujen puoleen. Joskus voi jopa olla parempi tehdä kompromissi jonkin ominaisuuden suhteen kuin vain sen vuoksi hylätä ajatus cross-platform frameworkin käytöstä. Kuitenkin on syytä pitää mielessä ettei erillisissä natiivikoodipohjissa ole itsessään mitään vikaa vaan niiden tekeminen on lähinnä kustannus- ja aikataulukysymys. Toki on tässä tapauksessa muistettava että korkeampi budjetti koskee tällöin sovelluksen koko elinkaarta (ylläpito, jatkokehitys), eikä vain ensimmäiseen julkaisuun johtavaa kehitystyötä.