Preheat your oven to 400°F (200°C). Line a baking sheet with parchment paper and set aside.
In a medium saucepan, combine water, butter, sugar, and salt. Bring to a gentle boil over medium heat. Remove from heat and immediately stir in all the flour until a smooth dough forms.
Return the pan to medium heat and stir constantly for 1–2 minutes until the dough pulls cleanly away from the sides and forms a ball. Remove from heat.
Transfer dough to a mixing bowl and let it cool for 5 minutes. Add eggs one at a time, beating well after each addition, until the dough is smooth, glossy, and thick enough to hold its shape.
Spoon the dough into a piping bag fitted with a round tip. Pipe evenly sized rounds (about 1.5 inches wide) onto the prepared baking sheet, spacing them 2 inches apart.
Bake for 25–30 minutes until deep golden brown and fully puffed. Do not open the oven door during baking.
Remove from the oven. Use a skewer to poke a small hole in the bottom of each shell to release steam, then transfer to a wire rack and cool completely.
Beat heavy cream, powdered sugar, and vanilla extract together until stiff peaks form.
Slice each cooled puff in half and spoon or pipe whipped cream into the center, or pipe filling through the steam hole using a small tip.
Dust generously with powdered sugar and serve immediately.