Prepare a 9x13 baking dish with non-stick cooking spray. Spread out the croissant cubes evenly in the dish. Set aside.
Whisk the whole eggs in a large mixing bowl. Then, add the milk, sugar, vanilla extract and spices and whisk until the sugar dissolves and the custard mixture is well combined.
Pour the custard mixture evenly over the croissant cubes. Use a spatula to gently toss the croisssant pieces to make sure they are all coated with the custard.
Let the bread pudding rest on the counter for 15 minutes so the custard is absorbed into the croissant pieces. Gently toss the croissants and let it rest for 15 more minutes.
Bake for 50 minutes until the custard sets and the croissants are puffy and golden brown. Allow the bread pudding to cool slightly as you make the vanilla sauce.
To prepare the vanilla sauce
Cut the butter into 4 pieces.
Then, to a small saucepan over medium heat, add the butter, milk, sugar and vanilla extract. Stir occasionally until the butter has melted.
Next, add one tablespoon of cornstarch and a pinch of salt. Remove the sauce from the heat and whisk until the cornstarch is dissolved and the sauce is smooth and glossy. If you prefer a thicker sauce, add up to one additional tablespoon of cornstarch, whisking to combine.
Serve the bread pudding with a drizzle of vanilla sauce. For a special treat, garnish each serving with whipped cream and fresh berries.
Notes
I recommend chopping the croissants into cubes and letting them dry overnight. Stale croissants will result in the best texture for the bread pudding.
The 30 minute resting period (and the toss half-way through) helps all of the croissant pieces soak up the custard, so the resulting bread pudding is moist without being soggy.
For a creamier custard, use a combination of whole milk, heavy cream or half and half.
Keep leftovers stored in an airtight container in the refrigerator for up to 5 days.