Cresciuto nel settore giovanile dei Rangers, si è poi trasferito al St. Mirren, con cui il 27 settembre 2014, a soli 17 anni, ha esordito in prima squadra, nella partita di campionato persa per 1-2 contro il Celtic.[3] Dopo essersi messo in mostra con i Saints, il 5 gennaio 2018 viene acquistato a titolo definitivo dal Celtic, legandosi ai Bhoys fino al 2022; rimane tuttavia in prestito al club di Paisley fino al termine della stagione.[4]
Il 31 gennaio 2020 passa a titolo definitivo all'Inter Miami.[5]