             return
         }
 
-        if let currentCoachMark = currentCoachMark {
+        if let currentCoachMark = currentCoachMark, currentIndex > 0 {
             delegate?.willHide(coachMark: currentCoachMark, at: currentIndex - 1)
         }
 

    internal func createAndShowCoachMark(afterResuming: Bool = false,
                                         changing change: ConfigurationChange = .nothing) {
        if disableFlow { return }

        if !afterResuming {
            guard delegate?.willLoadCoachMark(at: currentIndex) ?? false else {

                                    afterSizeTransition: (change == .size), at: currentIndex)
        }

        // The delegate might have paused the flow, we check whether or not it's
        // the case.
        if !self.paused {
            if coachMarksViewController.instructionsRootView.bounds.isEmpty {
