Nato a Toronto, in Canada inizia a giocare a calcio a 4 anni, nel 2003, con il Brampton Youth, dove resta fino al 2005. A 6 anni passa nel North Mississauga, rimanendovi 8 anni. Nel 2013, a 14 anni, si trasferisce in Inghilterra, al Fulham, giocandovi 3 anni. Nel 2016 passa al Liverpool, che lo inserisce nella squadra Under-18.
Nel gennaio del 2019, dopo aver rinnovato con il Liverpool, viene girato in prestito fino al termine della stagione 2019-2020 alla squadra di Scottish Premiership del Kilmarnock.[1][2]
Il 6 agosto 2019 il prestito viene rinnovato per un altro anno,[3] salvo poi fare ritorno a Liverpool l'8 gennaio 2020.[4] Complessivamente con il club scozzese ha disputato 36 incontri mettendo a segno 2 goal.
Il 5 gennaio 2021 rinnova il proprio contratto con i reds che, contestualmente, lo hanno ceduto in prestito al Charlton.[5]
L'8 luglio 2021 viene ceduto a titolo definitivo al Basilea.[6]
L'1 settembre 2023 viene ceduto a titolo temporaneo al Preston N.E., facendo così ritorno in Inghilterra dopo due anni.[7][8]
Il 24 marzo 2018 fa il suo esordio in nazionale maggiore, nell'amichevole vinta per 1-0 a San Pedro del Pinatar, in Spagna, contro la Nuova Zelanda, sfida nella quale rimane in campo per tutti i 90 minuti.[11] Partecipa con la nazionale maggiore alla fase di qualificazione della CONCACAF Nations League 2019-2020, disputando 3 incontri. Nel maggio 2019 viene inserito nella lista dei 23 convocati dalla nazionale canadese per partecipare al torneo CONCACAF Gold Cup 2019, nel quale disputa due incontri.
Convocato per i Mondiali di Qatar 2022,[12] disputa solo l'incontro perso 1-0 contro il Belgio ai gironi.[13] Successivamente viene convocato per la Gold Cup 2023, in cui realizza la sua prima rete in nazionale maggiore nel successo per 4-2 contro Cuba che consente ai canadesi di passare il turno.[14]