Preheat oven to 350°F and line a cupcake pan with liners.
In a bowl, whisk together flour, baking powder, baking soda, and salt until evenly combined.
In another bowl, beat butter and sugar for 2 to 3 minutes until light and fluffy.
Add eggs one at a time, mixing well after each addition. Then mix in lime zest, lime juice, and vanilla extract.
Add dry ingredients in parts, alternating with buttermilk. Mix gently until just combined and smooth.
Fill cupcake liners about two-thirds full with batter.
Bake for 18 to 20 minutes or until a toothpick inserted in the center comes out clean.
Let cupcakes cool in the pan for 5 minutes, then transfer to a rack to cool completely.
For frosting, beat butter until smooth. Add powdered sugar gradually, then mix in lime juice and zest. Adjust consistency with milk if needed.
Frost completely cooled cupcakes and garnish with extra lime zest if desired.