Known to TV audiences for his roles in the series The Story of Tracy Beaker and Red Oaks. He rose to fame for his role as Oliver Tate in the 2010 film Submarine. He has also appeared in the 2014 comedies 22 Jump Street and Neighbors.
He appeared on the television drama Care when he was nine years old.
In Nylon Magazine's Young Hollywood Issue, he was named one of the 55 faces of the future.
He grew up with his family in Caerphilly in South Wales. He has sisters named Chelsea, Natalee and Angharad.
He played John Reed in Jane Eyre (2011), which starred Mia Wasikowska.