Chill your tools: Place a large mixing bowl and beaters in the fridge for 10 minutes.
Cold equipment helps the cream whip faster and fluffier.
Prep the KitKats: Unwrap and chop the KitKat bars into small bite-size pieces. Aim for a mix of pea-sized bits and a few larger chunks for texture.
Whip the cream: Pour the heavy cream into the chilled bowl. Beat on medium-high until medium-stiff peaks form.
The cream should stand up but still look silky, not grainy.
Make the base: In a separate bowl, whisk together the sweetened condensed milk, vanilla, and salt. If using cocoa powder, whisk it in now until fully smooth.
Fold gently: Add about one-third of the whipped cream to the condensed milk mixture and fold to lighten. Then fold in the rest just until combined.
Keep it airy—don’t overmix.
Stir in KitKats: Fold in half of the chopped KitKats, reserving the rest for layering and topping.
Make the chocolate layer: In a microwave-safe bowl, melt the semi-sweet chocolate with the oil in 20–30 second bursts, stirring between each until smooth. The oil helps the chocolate set with a softer snap, making it easier to scoop.
Start layering: Spread one-third of the ice cream base into a loaf pan or freezer-safe container (about 9x5 inches). Drizzle or spread a thin layer of melted chocolate over the surface.
Sprinkle some chopped KitKat pieces on top.
Repeat: Add another third of the base, another thin chocolate layer, and more KitKat pieces. Finish with the remaining base.
Final touch: Drizzle any remaining chocolate over the top and scatter the last of the KitKat pieces. Press them in lightly so they stick.
Freeze: Cover the pan tightly with plastic wrap or a lid.
Freeze until firm, about 6–8 hours, or overnight for best results.
Serve: Let the ice cream sit at room temperature for 5 minutes before scooping. Use a warm scoop for smooth, clean scoops with visible chocolate ribbons.