Preheat the oven to 425°F. Line a baking sheet with parchment paper.
In a medium saucepan, bring the water, butter, and salt to a rolling boil.
Add the flour all at once and stir vigorously with a wooden spoon until the dough forms a smooth ball and pulls away from the sides of the pan.
Remove the pan from the heat and let the dough cool for 3–5 minutes.
Add the eggs one at a time, beating well after each addition until the dough is smooth and glossy.
Drop rounded tablespoons of dough onto the prepared baking sheet, leaving space between each puff.
Bake for 20–25 minutes, until puffed and golden. Do not open the oven during baking.
Turn off the oven, crack the door slightly, and let the shells sit inside for 10 minutes. Transfer to a wire rack and cool completely.
Whisk the pudding mix with the cold milk until thickened.
In a separate bowl, whip the heavy cream with the vanilla extract until stiff peaks form. Gently fold the whipped cream into the pudding mixture.
Slice the cooled shells in half or make a small hole in each one. Fill with the vanilla cream using a spoon or piping bag.
Dust with powdered sugar or drizzle with chocolate before serving.
