Prep the pan: Grease a 9x13-inch baking dish with butter.
This helps prevent sticking and adds flavor to the edges.
Cube the bread: Cut the brioche or challah into 1-inch cubes. If it’s very fresh, spread the cubes on a sheet pan and let them sit out for 30–60 minutes, or toast lightly in a 300°F (150°C) oven for 8–10 minutes to dry them out.
Make the custard: In a large bowl, whisk together eggs, milk, cream, granulated sugar, vanilla, cinnamon, and salt until smooth.
Assemble: Add the bread cubes to the bowl and toss gently to coat. Let them sit for 5 minutes to absorb.
Transfer to the greased baking dish and drizzle the melted butter over the top. Sprinkle brown sugar evenly over everything. Add nuts or raisins if using.
Rest: For best texture, cover tightly and refrigerate at least 1 hour or overnight.
If you’re short on time, a 20–30 minute rest still helps.
Bake: Preheat the oven to 350°F (175°C). Uncover the dish and bake for 35–45 minutes, until the top is golden and the center is set but still slightly soft. If it browns too quickly, tent with foil for the last 10 minutes.
Make the glaze: In a bowl, beat cream cheese until smooth.
Add powdered sugar, vanilla, a pinch of salt, and 2 tablespoons milk. Whisk until pourable, adding more milk 1 teaspoon at a time if needed.
Finish and serve: Let the French toast rest 10 minutes. Drizzle with the cream cheese glaze.
Serve warm, with extra glaze on the side.