Risposta breve: la tecnologia e l'ambiente di sviluppo scelti dall'agenzia vi vincolano direttamente; il linguaggio e gli strumenti utilizzati determinano la facilità con cui troverete altri sviluppatori per subentrare, i costi di manutenzione e la compatibilità hardware dell'app. Se l'agenzia sceglie librerie proprietarie chiuse invece di tecnologie standard e diffuse, diventerete totalmente dipendenti da loro.
Nel contratto dovete prima di tutto chiarire la proprietà del codice e il formato di consegna. Il preventivo non deve limitarsi a prevedere l'app funzionante, ma specificare che il codice sorgente verrà consegnato su un repository Git con documentazione standard e un elenco chiaro di tutte le dipendenze da licenze esterne. Impedite all'agenzia di utilizzare moduli core proprietari e closed-source, oppure pretendete la piena licenza d'uso e il codice sorgente aperto per quegli stessi moduli.
Come secondo passo, definite lo standard tecnologico. Se l'app sarà solo per iOS, è preferibile usare linguaggi nativi che rappresentano lo standard industriale come Swift; se in futuro prevedete di sbarcare su Android, puntate su framework multipiattaforma molto diffusi come Flutter o React Native, per cui si trovano tantissimi freelance sul mercato. Evitate categoricamente piattaforme ibride di nicchia, obsolete o poco conosciute.
Infine, inserite clausole di handover e garanzia. Prevedete almeno 60 giorni di garanzia post-consegna e subordinate il saldo finale alla verifica e approvazione del codice da parte di un tecnico terzo indipendente o del vostro nuovo sviluppatore.