James signs on a five-year contract, with an option to extend for a further year.

The 21-year-old Wales international made his professional debut for Swansea City in February 2018 and his senior Wales debut in November 2018, having previously represented the nation at various youth levels.