In a mixing bowl, combine the flour, sugar, salt, and instant yeast. Whisk until well blended.
Gradually add the warmed milk and the softened butter to the dry ingredients. Mix until a dough forms.
Knead the dough on a floured surface for about 5-7 minutes, until it's smooth and elastic.
Shape the kneaded dough into a ball, place it in a greased bowl, cover with plastic wrap, and let it rise in a warm place for about 1 hour or until doubled in size.
Once the dough has risen, punch it down and roll it out into a rectangle (about 18x12 inches) on a floured surface.
Take the cold, cubed butter and place it in the center of the rolled-out dough. Fold the dough over the butter, encasing it completely.
Roll out the dough again into a rectangle, then fold it into thirds like a letter. This is the first fold. Wrap the dough in plastic wrap and refrigerate for 30 minutes.
Repeat the rolling and folding process two more times, refrigerating for 30 minutes between each fold.
After completing the last fold, roll the dough into a large rectangle again. Cut the dough into strips and then twist or shape into your desired loaf shape.
Place the shaped dough in a greased loaf pan, cover it with plastic wrap, and let it rise for another 30-45 minutes until puffed.
Preheat the oven to 375°F (190°C). In a small bowl, whisk the egg with 1 tablespoon of milk for the egg wash. Brush it gently over the risen loaf.
Bake in the preheated oven for 25-30 minutes, or until golden brown and the internal temperature reaches 190°F (88°C).
Allow the croissant loaf to cool in the pan for 10 minutes, then transfer it to a wire rack to cool completely.