In a medium saucepan, combine water, butter, and salt. Bring to a boil over medium heat, stirring until butter melts fully.
Add flour all at once and stir vigorously with a wooden spoon or spatula until the mixture pulls away from the sides of the pan and forms a smooth ball. It should look like mashed potato.
Reduce heat to low and cook the dough for 1–2 minutes, stirring constantly to dry it out slightly. This step is important so the pastry puffs properly later.
Remove from heat and let the dough cool for about 5 minutes (so the eggs don’t scramble when added).
Add the eggs one at a time, beating well after each addition. The dough will look split at first, but keep stirring until smooth before adding the next egg. The final dough should be thick but pipeable, with a slight sheen.
Transfer the dough into a piping bag fitted with a round or star tip. Pipe onto a baking tray lined with parchment paper, leaving space between each.
Bake in a preheated oven at 400°F (200°C) for 15 minutes, then reduce to 350°F (175°C) and bake another 15–20 minutes until golden brown and puffed. Do not open the oven door too early, or they may collapse.
Transfer to a wire rack to cool completely before filling with cream or custard.