Combine the flour, salt, sugar, and instant yeast in a large mixing bowl and mix thoroughly.
Pour in the warm milk and warm water, and stir until a dough forms.
Knead the dough on a floured surface for 10-15 minutes, until it becomes smooth and elastic.
Place the dough in a lightly oiled bowl, cover with a damp cloth, and leave to rise in a warm place for about 1 hour, or until it doubles in size.
Roll out the dough on a floured surface into a large rectangle once it has risen.
Thinly slice the cold butter and place it in the centre of the dough.
Fold the dough over the butter to completely enclose it.
Roll out the dough into a long rectangle, then fold it into thirds like a letter. Repeat this step twice more to create layers in the dough and give the croissants their flaky texture.
Wrap the dough in cling film and chill it in the fridge for at least 6 hours or preferably overnight.
Preheat the oven to 200°C/400°F.
Roll out the chilled dough on a floured surface to a thickness of about 5mm.
Cut the dough into triangles and roll each triangle up tightly from the wide end to the pointed end.
Place the croissants on a baking sheet lined with parchment paper.
Brush the beaten egg over the croissants.
Bake the croissants in the preheated oven for 15-20 minutes or until they turn golden brown and puff up.
Serve warm with butter and jam.