Roberts genoot zijn voetbalopleiding bij Swansea City. In het seizoen 2015/16 stroomde hij door uit de jeugd en werd onmiddellijk verhuurd aan Yeovil. Daar speelde hij, op één wedstrijd na, alle wedstrijden. Daar werd hij verkozen tot speler van het jaar.[1] In augustus 2016 werd Roberts vervolgens verhuurd aan Bristol Rovers. In juli 2017 volgde een nieuwe uitleenbeurt bij Middlesbrough. Na slechts één competitiewedstrijd keerde hij terug naar Swansea. Hij maakte bij Swansea op 13 januari 2018 zijn debuut in de Premier League. In de wedstrijd op Newcastle United FC kwam hij vijfentwintig minuten voor tijd Mike van der Hoorn vervangen die met een blessure was uitgevallen.[2]
Roberts werd in maart 2018 voor het eerst opgeroepen voor het Welsh voetbalelftal. Bondscoach Ryan Giggs nam de verdediger op in zijn selectie voor de duels met China en Uruguay. Hij debuteerde op maandag 26 maart 2018 in de met 0–1 verloren thuiswedstrijd tegen Uruguay. Roberts kwam in de negenenvijftigste minuut Declan John vervangen.[3] Roberts scoorde zijn eerste doelpunt op 6 september 2018 in de thuiswedstrijd tegen Ierland.