Warm your milk until it is body-temperature. Add the sugar and yeast and whisk to combine. Let it stand until the yeast is frothy and milk has cooled completely. If it's too warm it will melt the butter and undo all our good work.
Put your flour and salt in a food processor fitted with a metal blade. Add the cubed butter and briefly pulse a few times until mixture resembles chunky breadcrumbs.
Put the flour/butter in a large bowl and add the milk/yeast mixture. Gently combine using a spoon or pastry scraper until the dough just comes together. You want the butter to remain in pea-sized pieces so don't be too enthusiastic when mixing the dough!
Turn the dough out of a lightly floured work top and press together to form a square. Wrap in cling film and put in the freezer for 30 minutes or in the fridge for a couple of hours.
Lightly dust your worktop and rolling pin with flour. Roll your dough out to a rectangle roughly two to three times as long as it is wide, counter space allowing (pic. 1). Initially the dough may be quite brittle but it will come together as you roll and fold.
Fold the short sides of the dough into the middle (pic. 2).
Rotate the dough by a quarter turn. Roll out slightly to lengthen. Fold the short ends towards the middle (pic. 3 shows only left side folded in).
Flip the dough over so the seams are underneath. Roll it out again repeating steps 5-7 three more times. The dough will become more elastic as you are rolling and folding it. If at any point the butter softens too much, cover and pop in the freezer to firm it before continuing with rolling and folding.
The dough should be formed into a smallish rectangle. Wrap it twice with cling film and put in the fridge for a couple of hours or, ideally, overnight.
Roll the dough out to a rectangle three times as long as it is wide and at least 4mm thick. Trim the edges with a pastry scraper (pic.4).
Cut the dough into triangles about 30cm/12in long and 8cm/3in at the base. Score a small slit in the centre of each triangle base (pic 5). Any scraps and cut-offs can be layered on top of each other, rolled out again and used.
Gently stretch the corners and tip, then loosely roll the dough up. Place, tip side down, on a large tray lined with baking paper. Repeat with the rest of the dough, spacing the croissants a few inches apart on the tray (pic.6).
Cover loosely with greased cling film and let the croissants rise for 2-3 hours at room temperature - sorry, there are no shortcuts here!
Preheat the oven to 230C | 450F. Brush the croissants with the egg wash and bake for ten minutes then reduce temperature to 190C | 375F and bake for another 5-10 minutes or until the croissants are a deep golden brown. Cool on a wire rack before serving.