In a large mixing bowl, combine the bread flour, all-purpose flour, sugar, salt, and instant yeast. Mix well.
Gradually add the warm milk to the dry ingredients while stirring. Once the dough starts to come together, add the softened butter and continue to mix until a soft, slightly sticky dough forms.
Transfer the dough onto a lightly floured surface and knead for about 10-15 minutes, or until the dough becomes smooth and elastic.
Place the dough back into the mixing bowl, cover it with a damp cloth or plastic wrap, and let it rise in a warm place for about 1-2 hours, or until it doubles in size.
Once the dough has risen, gently punch it down to release the air. Divide the dough into equal-sized portions (you can shape it into rolls or loaf).
Place the dough portions onto a baking sheet lined with parchment paper, leaving enough space in between. Cover with a damp cloth or plastic wrap and let it rise for another 45-60 minutes.
Preheat your oven to 350°F (180°C).
Brush the risen dough with the beaten egg for a shiny finish.
Bake the bread in the preheated oven for approximately 25-30 minutes, or until golden brown on top.
Once baked, remove the bread from the oven and let it cool on a wire rack.