Preheat your oven to 350°F and grease a 9x11 baking dish. Cut the challah into thick cubes and place them evenly in the dish. If the bread is fresh, allow it to sit uncovered for about 30 minutes so it dries slightly.
In a large mixing bowl, whisk together heavy cream, milk, eggs, granulated sugar, brown sugar, cinnamon, nutmeg, and vanilla extract until smooth and fully combined. Pour this custard evenly over the bread cubes, pressing down gently so every piece absorbs the mixture.
Let the bread soak for several minutes to fully absorb the custard. This step ensures the center stays soft and creamy without dry spots.
In a separate bowl, mix melted butter, brown sugar, and cinnamon to create the swirl mixture. Layer spoonfuls throughout the dish, gently folding portions of the bread to distribute it evenly.
Cover the baking dish with foil and bake for 30–40 minutes. Remove the foil and continue baking for another 10–15 minutes until the top is golden and the center is set but still soft.
While the bread pudding cools slightly, whisk together softened cream cheese, powdered sugar, vanilla, and milk until smooth. Drizzle generously over the warm pudding before serving.
Serve warm for the best texture and flavor.
Notes
Do not overbake; the center should have a slight jiggle when removed.
Store leftovers covered in the refrigerator up to 4 days.