Soften the cream cheese and butter at room temperature until slightly soft to touch - not melted or too soft! Place the butter into a stand mixer bowl and use a whisk attachment to whisk the butter. Whisk on high speed for about 5 minutes, scraping down the sides of the mixing bowl often to get all the butter creamed.
Add the softened cream cheese next and whisk again for 2 to 3 minutes, scraping down the sides of the mixing bowl often, until the mixture is uniform and smooth.
Add the vanilla, optional cream cheese extract, salt and confectioner's sugar. Whisk on low speed first until the sugar is incorporated, then turn the speed up and whisk on high for 2 to 3 minutes, until the frosting is light and fluffy.
If your cream cheese frosting came out softer than you want it to be, don't worry! This is very fixable! Simply place the frosting into the refrigerator and let it chill anywhere from 30 minutes to 2 hours, until it has chilled. I like to make this frosting the night before and let it chill overnight. Chilling the frosting makes it easier to work with and gives it better texture.
For more flavor variations, check the post above! For storing the frosting, place it into an airtight container and refrigerator for up to 1 week. When ready to use, soften for at least 30 minutes at room temperature, then whisk again for a few minutes.