Skip to content

Kill SDK

Completely Terminate the SDK

KindlySDK.kill()

The kill() method completely terminates the SDK and clears all state. This is more destructive than endChat() which only disconnects the chat session.

What kill() does

When you call kill(), the SDK will: - ๐Ÿ”„ Disconnect the chat session (same as endChat()) - ๐Ÿงน Clear all session data including messages and context - โšก Reset SDK initialization state - ๐Ÿ”‘ Clear bot key and authentication - ๐ŸŽจ Reset configuration and themes - ๐Ÿ“ก Emit termination events for cleanup

After calling kill()

After calling kill(), the SDK returns to an uninitialized state: - โŒ You cannot call displayChat() or other SDK methods - โœ… You must call start() again before using any SDK functions - โœ… All configuration (themes, permissions, etc.) needs to be set up again

Usage Examples

Complete SDK Shutdown

// Terminate the SDK completely
KindlySDK.kill().then { _ in
    print("โœ… SDK completely terminated")
    // SDK is now in uninitialized state
}.catch { error in
    print("โŒ Kill failed: \(error)")
}

Switch to Different Bot (Alternative Method)

// Method 1: Using kill() for explicit control
KindlySDK.kill().then { _ in
    // SDK is now uninitialized - must call start() again
    KindlySDK.start(botKey: "new-bot-key")
    KindlySDK.displayChat()
}

// Method 2: Automatic switching (recommended)
KindlySDK.start(botKey: "new-bot-key")  // SDK handles cleanup automatically
KindlySDK.displayChat()

When to Use kill() vs endChat()

Use kill() when:

  • ๐Ÿ”„ App shutdown: Terminating the app or major state changes
  • ๐Ÿ”€ Complete reset: Need to clear all SDK state and start fresh
  • ๐Ÿ› Error recovery: Recovering from SDK errors or corruption
  • ๐Ÿงช Testing: Ensuring clean state between test runs

Use endChat() when:

  • ๐Ÿ’ฌ End conversation: User finishes chatting but may return later
  • ๐Ÿ”„ Temporary disconnect: Preserving SDK state for quick reconnection
  • ๐ŸŽฏ Normal flow: Standard chat lifecycle management

Comparison

Method Session SDK State Bot Key Config Next Action
endChat() โŒ Cleared โœ… Preserved โœ… Preserved โœ… Preserved displayChat()
kill() โŒ Cleared โŒ Reset โŒ Cleared โŒ Reset start() required

Return Value

The kill() method returns a Promise<Void> that resolves when the termination is complete:

KindlySDK.kill()
    .then { _ in
        // SDK termination completed successfully
        print("SDK killed successfully")
    }
    .catch { error in
        // Handle any cleanup errors
        print("Kill error: \(error)")
    }

Best Practices

  1. Always wait for completion before calling start() again:

    KindlySDK.kill().then { _ in
        // Safe to reinitialize now
        KindlySDK.start(botKey: "new-bot")
    }
    

  2. Handle errors gracefully in case cleanup fails:

    KindlySDK.kill().catch { error in
        // Log error but continue with app flow
        print("Kill failed, but continuing: \(error)")
    }
    

  3. Use automatic bot switching instead of manual kill/start when possible:

    // Preferred: Automatic cleanup
    KindlySDK.start(botKey: "new-bot")
    
    // Instead of: Manual cleanup  
    KindlySDK.kill().then { _ in
        KindlySDK.start(botKey: "new-bot")
    }
    

For normal chat lifecycle management, prefer endChat() over kill().