Xamarin è una buona opzione. È compilato AOT su iOS e gira nel runtime Mono su Android, quindi non dovrebbe essere notevolmente più lento, e usa API native, quindi non dovrebbero esserci problemi di look and feel; Gli unici problemi avrebbero a che fare con le librerie di terze parti e il supporto di altri programmatori. Non consiglierei altri framework, anche se non ho alcuna esperienza con loro; tendono a condividere la stessa UI su ogni piattaforma, il che porta a una cattiva UX perché ciascuna delle piattaforme ha un'esperienza unica. Si potrebbe guardare a React Native, che apparentemente usa widget nativi, ma penso che sia molto più limitato di Xamarin e javascript non è il migliore per le prestazioni, che è molto importante su mobile.
Ora, vale la pena notare che dovrete ancora creare UI separate per ogni piattaforma, a meno che non usiate qualcosa come Xamarin.Forms (che causerebbe il problema della "stessa UI"), quindi il vantaggio principale è che potete condividere la sezione under-the-hood dell'app, come la business logic e l'accesso API. Come tale, Xamarin è più utile quando si sta facendo qualcosa di complesso, o almeno verboso, in quella sezione. Xamarin sarebbe un gioco da ragazzi se l'app stesse controllando dei razzi, dove c'è un sacco di complessa comunicazione bidirezionale sulla rete che deve avvenire il più velocemente possibile, ma sarebbe in qualche modo inutile se l'app fosse un modo elegante di visualizzare il vostro catalogo di foto, dove essenzialmente nulla potrebbe essere condiviso.