The 20-year-old, a Wales under-21 international who has been with the club since the age of nine, had 12 months remaining on his existing deal.
He made his npower Championship debut in the 2010/11 campaign but managed only one game on loan at Burton this season before a back injury cut short his stay.
"It's a great time to be part of Swansea City and I'm determined to work hard over the next three years to prove myself," he told swanseacity.net.
"I had an injection in my back a fortnight ago and now I've just got to rest before pre-season starts.
"I'm aiming to have a good pre-season and hopefully push myself in and around the first-team squad."