Proof the yeast: In a large bowl, combine warm milk and sugar. Sprinkle yeast over the top and let it sit for 5–8 minutes until foamy. If it doesn’t foam, your yeast may be inactive or the milk too hot or cold.
Make the dough: Add the softened butter, egg, and salt to the yeast mixture.
Stir to combine. Add 2 1/2 cups of flour and mix until a shaggy dough forms. Gradually add the remaining flour as needed until the dough is soft and slightly tacky but not sticky.
Knead: Turn the dough onto a lightly floured surface.
Knead for 6–8 minutes until smooth and elastic. You can also use a stand mixer with a dough hook for 5–6 minutes on medium-low.
First rise: Lightly oil a clean bowl. Place the dough inside, turning to coat.
Cover with a clean towel or plastic wrap and let rise in a warm spot for 25–35 minutes, until doubled. An unheated oven with the light on works well.
Shape the rolls: Punch down the dough gently. Divide into 8–10 equal pieces.
Tuck edges under to form smooth balls, then pinch the seam closed. For even rolls, weigh pieces (about 65–75 grams each).
Prepare the air fryer basket: Line the basket with parchment or a reusable liner, lightly greased. Leave space around each roll for expansion.
Depending on your air fryer size, you may need to bake in two batches.
Second rise: Arrange rolls in the basket, leaving about an inch between them. Cover loosely with a towel and let rise for 15–20 minutes, until puffy.
Preheat and brush: Preheat the air fryer to 320°F for 3 minutes. Brush the tops of the risen rolls with melted butter for a softer crust and richer flavor.
Air fry: Cook at 320°F for 8–10 minutes.
Check at 8 minutes. Rolls are done when lightly golden and reach an internal temperature of about 190–200°F. If they brown too quickly, tent loosely with a bit of foil on top for the last couple of minutes.
Finish: Brush hot rolls with more melted butter.
Sprinkle flaky salt if you like. Let cool for 5–10 minutes before serving to set the crumb.