You can make buttery, flaky croissants at home from scratch with this recipe. Go through it step-by-step and split up the work over a few days to make it easier!
Warm the milk with the water to 100ºF, then add it to the mixer bowl with the sugar, the yeast, and half the flour. Let stand for 10 minutes.
Add the rest of the flour and the salt, and knead for 3 or 4 minutes until a dough forms. If you notice the dough is too hard/firm/dry, sprinkle in a teaspoon or so of water.
Place the dough in a bowl and refrigerate for 30 minutes covered with plastic wrap.
Meanwhile, place the butter between two sheets of plastic wrap and with your rolling pin, bash/roll/work the butter into a square block (4.5-x4.5-in). Transfer to the fridge to keep chilled.
Remove the dough from the fridge (it will have risen quite a bit in the fridge) and roll it out on a floured surface to form a 8.5-x8.5-in square. Unwrap and place the butter block overtop, "kitty corner", and then wrap & pinch the dough together to form an envelope around the block and seal in the butter.
Roll out the dough to a 12x9 rectangle on a floured surface, brush off the excess flour, and fold (1st turn).
Rotate the dough 90º, then roll out again to a 12x9 rectangle and fold (2nd turn). Wrap and refrigerate overnight.
Repeat the rolling and folding process twice more to complete the 3rd and 4th turns. Wrap and refrigerate overnight.
Roll out the dough to a 12x9 rectangle, trim the edges if they are very uneven, then cut into 8 triangles. Roll the triangles to form croissants, then place on two parchment-lined baking sheets. Carefully and evenly brush with the beaten egg. Top loosely with plastic wrap and let the croissants rise for 1.5–2 hours.
Preheat the oven to 350 °F (175 °C). Brush the croissants again with a thin, even layer of egg wash. Bake for about 35 minutes, rotating halfway until they are a deep golden brown.