In a large mixing bowl or stand mixer, combine flour, sugar, yeast, and salt.
In a separate bowl, mix milk and water, then add to the dry ingredients. Stir to combine and knead into a dough, either by hand or using the stand mixer with a dough hook for 8–10 minutes until smooth.
Shape the dough into a ball, cover with plastic wrap, and let it rest for 1 hour at room temperature until doubled in size.
Once the dough has risen, punch it down and turn it out onto a lightly floured surface. Roll it into a large rectangle (about 12x18 inches).
Place the cold butter slices over two-thirds of the dough. Fold the dough over the butter like a letter, then roll it out again into a long rectangle. Fold it into thirds again, cover with plastic wrap, and refrigerate for 30 minutes.
Repeat the rolling and folding process 2 more times (refrigerating the dough for 30 minutes each time).
After the final fold, roll the dough into a rectangle about ¼ inch thick. Cut the dough into triangles and roll each triangle tightly from the wide end to form croissants.
Place the croissants on a baking sheet lined with parchment paper and cover them with a towel. Let them rise for 1 hour, until puffy.
Preheat the oven to 400°F (200°C).
Beat the egg and brush it over the croissants to give them a golden finish.
Bake for 20–25 minutes until golden brown and puffed. Let them cool slightly before serving.