Add the flour, sugar, and salt to a bowl. Whisk them well so the salt and sugar spread evenly. Set the bowl aside while you wake up the yeast.
Pour the warm water into your mixer bowl and sprinkle in the yeast. Stir gently and let it sit for about 10 minutes. It should look dissolved and a little foamy, which tells you it is alive.
Add the milk, egg, and shortening to the yeast and mix for 1 minute. Then add the dry ingredients and mix until everything comes together. The dough should look smooth, soft, and just a little sticky.
Move the dough into a lightly greased bowl and cover it with a clean towel. Set it in a warm spot for 40 to 50 minutes. It is ready when it has doubled in size.
Dust a parchment-lined tray with flour. Roll the dough to about 1/4 inch thick and cut rounds with a 3-inch cutter. Place them 1/2 inch apart so they have room to puff.
Dust the cut rounds lightly with flour and cover them. Let them rest for 20 to 25 minutes until they double again. This second rise is what makes the donuts light instead of dense.
Heat about 3 inches of oil to 350°F in a heavy pot. Fry a few donuts at a time for 2 to 3 minutes per side until deep golden. Let the oil return to 350°F before each new batch.
Lift the donuts out and set them on a rack or paper towels. Let them cool completely before you fill them. Warm donuts will melt the filling and turn it runny.
Beat the cream cheese, peanut butter, sugar, and vanilla on low speed until smooth. In another bowl, whip the cold cream to soft peaks. Fold the whipped cream into the peanut butter mixture gently so it stays airy. This is my go-to peanut butter donut filling recipe, and it works in other desserts too.
Spoon the jam into one pastry bag and the peanut butter filling into the other. Poke a small hole on opposite sides of each donut with a knife. Pipe jam into one side and peanut butter filling into the other, then dust with confectioners' sugar if you like.