In a large bowl, mix together the flour, sugar and salt. Create a well in the center of the bowl and stir in the instant yeast until completely incorporated. Slowly add in cool water while mixing with your hands to form a dough. Knead on a lightly floured surface for 10 minutes until it’s elastic and smooth. Cover with a damp cloth and let it rise in a warm place for 1 hour or until it’s doubled in size.
Cut the butter into small cubes and flatten between two sheets of parchment paper using a rolling pin to form a ¼-inch thick rectangle. Chill the butter in the refrigerator until ready to use.
On a lightly floured surface, roll out the dough to a 1/8-inch thick rectangle. Remove the butter from the refrigerator and spread it over two-thirds of the dough rectangle in an even layer. Fold one-third of the dough onto the butter and then fold again. Rotate the dough a quarter turn and roll it out again until it’s 1/8 inch thick. Repeat this process three more times, folding the dough in thirds each time, and chill it for 30 minutes before rolling. Once completed, roll out the dough to a 12-inch square and cut it into twelve 4×4 4×4-inch squares. Place a teaspoon of filling in the center of each croissant dough square and fold up the corners to form triangles.
Preheat the oven to 375°F (190°C) and transfer croissants onto a lined baking sheet. Cover loosely with plastic wrap and let them rise for at least an hour or until doubled in size. Brush with egg wash made from one beaten egg and pinch of salt, then bake for 20-25 minutes until golden brown. Allow them to cool before serving.