Preheat your oven to 350°F and line two muffin tins with paper liners (you'll need about 12 liners). In a medium bowl, whisk together flour, baking powder, and salt until combined.
Beat softened butter and sugar together in a large bowl for about 2 minutes until fluffy. This makes your cupcakes lighter and more tender, not dense.
Add eggs one at a time, mixing after each one, then stir in vanilla extract. Alternate adding flour mixture and milk to the wet ingredients—start with flour, then milk, then flour, then milk. Mix on low speed so you don't overwork the batter.
Divide batter evenly between your 12 liners (I use an ice cream scoop, which keeps them all the same size). Bake for 18 to 22 minutes until a toothpick comes out clean. The tops should be light golden, not brown. Don't open the oven before minute 18 or they might collapse.
Let cupcakes cool in the pan for 5 minutes, then transfer to a wire rack to cool completely before frosting. This step matters because warm cupcakes will melt your frosting.
While cupcakes cool, make the frosting by beating cream cheese and powdered sugar together for 3 minutes until smooth. Divide frosting into two bowls—add red coloring to one and blue to the other (about 1 tablespoon each). Mix thoroughly so the color spreads evenly.
Once cupcakes are totally cool, frost with either red or blue frosting using a spatula or small spreading knife. Arrange them on a platter in a patriotic pattern—alternating colors works great, or do rows of each color.