| Season | Team | Apps | Min | G | A |
|---|---|---|---|---|---|
| 2026/2027 |
|
7 | 622 | 0 | 1 |
| 2024/2025 |
|
34 | 1 849 | 3 | 6 |
| 2023/2024 |
|
21 | 1 295 | 6 | 3 |
| 2020/2021 |
|
23 | 1 316 | 1 | 0 |
| 2019/2020 |
|
36 | 2 118 | 6 | 0 |
| 2017/2018 |
Swansea City
Premier League
|
11 | 269 | 0 | 1 |
| 2016/2017 |
Swansea City
Premier League
|
5 | 77 | 0 | 0 |
| Total | 137 | 7 546 | 16 | 11 | |
| Date | From | To | Fee |
|---|---|---|---|
| Aug 2025 | Free | ||
| Jul 2025 | TBC | Transfer | |
| Jul 2024 | Free | ||
| Jul 2024 | — | Transfer | |
| Aug 2019 | Swansea City | €19.1M | |
| May 2018 | Barnsley | Swansea City | End of loan |
| Jan 2018 | Swansea City | Barnsley | Loan |
| May 2016 | Bristol Rovers | Swansea City | End of loan |
| Mar 2016 | Swansea City | Bristol Rovers | Loan |
| Dec 2015 | Newport County | Swansea City | End of loan |
| Nov 2015 | Swansea City | Newport County | Loan |
| Jul 2015 | Bradford City | Swansea City | €350K |
| May 2015 | Chester | Bradford City | End of loan |
| Mar 2015 | Bradford City | Chester | Loan |
| Feb 2015 | Chester | Bradford City | End of loan |
| Jan 2015 | Bradford City | Chester | Loan |