I start by gently stirring together the warm milk, a teaspoon of sugar, and the yeast in my mixer bowl. I let this sit for about five minutes until it turns foamy on top. If it doesn't foam, my yeast is dead and I start over, because flat yeast means flat donuts.
Next, I add the remaining sugar, salt, egg, melted butter, and half the flour into the yeast mixture. I mix on low speed with the dough hook, then gradually add the rest of the flour until the dough pulls away cleanly from the bowl and feels soft, not sticky.
I cover the bowl with a clean towel and set it somewhere warm for about an hour, until it's doubled in size. I never rush this step, because a fully risen dough is what gives these donuts their light, pillowy texture once they're cooked.
Once risen, I roll the dough out on a floured surface to about half an inch thick. I use my 3-inch cutter for the donuts and the 1-inch cutter to punch out the centers, saving every donut hole because those cook up just as delicious.
I transfer the cut donuts and holes onto parchment paper, loosely cover them with greased plastic wrap, and let them rise again for about 30 minutes. This second proof is what keeps the donuts from turning dense in the air fryer.
I preheat my air fryer to 350°F, spray the basket, and lay the donuts in a single layer without crowding them. I spray the tops lightly too, then cook for about 4 minutes, flipping halfway, until they're golden brown and cooked through.
While the donuts fry in batches, I melt butter in a small saucepan, then whisk in powdered sugar, vanilla, and hot water a tablespoon at a time until it's smooth and pourable but not runny.
As soon as each batch comes out hot, I dunk the donuts straight into the glaze using two forks, letting the excess drip off. Dipping them warm is the secret the glaze sets into that classic glossy shell as it cools.