       offEndProgress = toProgress
     }
     
-    updateOnState(isOn: _isOn, animated: false)
+    updateOnState(isOn: _isOn, animated: false, shouldFireHaptics: false)
   }
   
   public override init(animation: Animation) {

    self.hapticGenerator = NullHapticGenerator()
    #endif
    super.init(animation: animation)
    updateOnState(isOn: _isOn, animated: false)
    self.accessibilityTraits = UIAccessibilityTraits.button
  }
  

    set {
      /// This is forwarded to a private variable because the animation needs to be updated without animation when set externally and with animation when set internally.
      guard _isOn != newValue else { return }
      updateOnState(isOn: newValue, animated: false, shouldFireHaptics: false)
    }
    get {
      return _isOn
    }
  }

  /// Set the state of the switch and specify animation and haptics
  public func setIsOn(_ isOn: Bool, animated: Bool, shouldFireHaptics: Bool = true) {
    guard isOn != _isOn else { return }
    updateOnState(isOn: isOn, animated: animated, shouldFireHaptics: shouldFireHaptics)
  }

  /// Sets the play range for the given state. When the switch is toggled, the animation range is played.
