Prep the bread: Cut bread into 1-inch cubes. If it’s fresh, spread on a sheet pan and dry in a 300°F (150°C) oven for 10–12 minutes.
You want it slightly crisp on the outside.
Grease the dish: Butter a 9x13-inch baking dish (or similar). Add the bread cubes in an even layer.
Make the custard: In a large bowl, whisk milk, cream, eggs, granulated sugar, brown sugar, vanilla, cinnamon, and salt until smooth.
Combine: Pour custard over the bread. Gently press the bread down to help it absorb.
Let sit for 15–20 minutes while you make the caramel.
Make the caramel: In a heavy pot, sprinkle sugar in an even layer. Heat over medium, letting it melt and turn amber. Swirl gently; don’t stir.
Once deep amber, whisk in butter (it will bubble). Slowly add warm cream while whisking until smooth. Stir in salt and vanilla.
Remove from heat.
Add caramel: Drizzle about half the caramel over the soaked bread and gently toss or press so it distributes.
Bake: Cover loosely with foil and bake at 350°F (175°C) for 25 minutes. Remove foil and bake another 20–25 minutes, until the center is set and the top is golden with crisp edges.
Finish: Let rest 10 minutes. Drizzle with more caramel and a pinch of flaky salt.
Serve warm with extra sauce on the side.