Note before you start: The caramel will need time to cool and thicken before use. I recommend making it the day before or at least 5-6 hours in advance.
Make the Caramel
In a medium saucepan, combine the sugar, water, and cream of tartar. Bring to a boil over medium heat. Once it begins to boil, do not stir, as this can cause the sugar to crystallize. Continue cooking until the caramel is a deep amber color.
Remove the pan from the heat and very slowly stream in the heavy cream, whisking constantly. Be careful; the caramel will bubble vigorously.
Whisk in the sweetened condensed milk, butter, and salt until smooth.
Transfer the caramel to a heatproof measuring cup or bowl and let it cool completely. The caramel will continue to thicken as it cools, so it's best to make it the day before or at least 5–6 hours before assembling the rolls.
Make the Cinnamon Rolls
In a small saucepan, whisk together the water and flour. Cook over medium heat, whisking constantly, for 4–5 minutes, or until thickened into a smooth paste. Transfer to a bowl and let cool until just warm before using.
In the bowl of a stand mixer fitted with the dough hook, combine the bread flour, sugar, yeast, and salt.
Add the heavy cream, milk, egg, and tangzhong. Knead on low speed for 2 minutes, or until a rough dough ball forms.
With the mixer running on low speed, add the butter 1 tablespoon at a time, allowing each addition to fully incorporate before adding more. Continue kneading for 10–12 minutes, or until the dough is smooth and elastic.
Cover the bowl with plastic wrap and let the dough rest while you prepare the filling.
In a medium bowl or the bowl of a stand mixer, beat together the butter, brown sugar, and cinnamon until smooth and spreadable.
Line a 9×13-inch metal baking pan with parchment paper.
Roll the dough into a 21×15-inch rectangle on a lightly floured surface.
Spread the cinnamon sugar filling evenly over the dough. Dollop the caramel over the filling and gently spread it into an even layer.
Using a pizza cutter, cut the dough into twelve 1 3/4-inch strips. Roll each strip away from you and place it into the prepared pan.
Cover with plastic wrap and let rise in a warm place for 1–2 hours, or until doubled in size. The rolls should look noticeably puffy, the sides should just be touching, and when gently pressed, the dough should feel airy, with tiny bubbles beneath the surface.
Near the end of the rise, preheat the oven to 325°F (162°C).
Bake for 30–40 minutes, or until the center roll reaches 185°F on an instant-read thermometer.
While the rolls bake, beat the cream cheese and butter until completely smooth.
Add the powdered sugar and mix on low speed until combined. Increase the speed to medium and beat until light and fluffy.
Mix in the caramel, heavy cream, and vanilla until smooth.
Let the rolls cool for 15–20 minutes before frosting.
Dollop the frosting over the warm rolls. Spoon additional caramel over the top and use the back of a spoon or an offset spatula to gently swirl them together. Enjoy!
Notes
*Measure your dry ingredients properly. This is my #1 baking tip! Never scoop flour into your measuring cup, as this always leads to using too much flour. Instead, use the spoon-level method. This means fluffing the flour first, then spooning it into your measuring cup/spoon. For the BEST results, use a kitchen scale!*Caramel: You'll have some caramel left over. Store it in an airtight container in the refrigerator for up to one month or 2 weeks at room temperature. Use it as a topping for ice cream, pancakes, waffles, or more cinnamon rolls!Storage: Keep leftover rolls in an airtight container at room temperature for 4-5 days.Make ahead: Transfer the kneaded dough to a lightly oiled container, cover, and refrigerate overnight. The next day, let it sit at room temperature for 1 hour before rolling it out as instructed. Once shaped, the rolls will still need to rise until puffy before baking. Alternatively, refrigerate the assembled rolls overnight, then let them come to room temperature and rise until puffy before baking.