Migrating from Sendbird to Wibe Chat: A Step-by-Step Guide
If you're reading this, you've probably already decided Sendbird isn't the right fit. Maybe the pricing surprised you. Maybe you need voice and video without per-minute charges. Maybe you want better Flutter support.
Whatever the reason, migrating chat providers feels daunting. Here's the process that works.
Before You Start
What data to migrate? Message history (all or recent), user profiles, channel configurations, file attachments.
Downtime tolerance? Zero downtime (parallel SDKs), brief maintenance window, or gradual rollout?
Timeline? Most migrations take 1-2 weeks of engineering, plus a week for testing.
Step 1: Set Up Wibe Chat
import { WibeChatServer } from '@wibechat/server'
const wibe = new WibeChatServer({ apiKey: 'your-server-api-key' })
const channels = await fetchSendbirdChannels()
for (const channel of channels) {
await wibe.channels.create({
id: channel.channel_url,
name: channel.name,
type: channel.is_group ? 'group' : 'direct',
})
}Step 2: Migrate Users
const sendbirdUsers = await fetchAllSendbirdUsers()
for (const user of sendbirdUsers) {
await wibe.users.create({
id: user.user_id,
name: user.nickname,
avatar: user.profile_url,
})
}Step 3: Import Message History
async function importToWibeChat(channelId, messages) {
for (const msg of messages) {
await wibe.messages.import({
channelId,
userId: msg.user.user_id,
text: msg.message,
createdAt: new Date(msg.created_at),
})
}
}Import in chronological order. Wibe Chat preserves the createdAt timestamp.
Step 4: Update Client SDKs
Replace Sendbird's multi-module setup with Wibe Chat's simpler pattern:
Before (Sendbird):
import SendbirdChat from '@sendbird/chat'
import { GroupChannelModule } from '@sendbird/chat/groupChannel'
const sb = SendbirdChat.init({ appId: 'APP_ID', modules: [new GroupChannelModule()] })After (Wibe Chat):
import { WibeChat, ChatWindow } from '@wibechat/react'
<WibeChat apiKey="your-key"><ChatWindow channelId="your-channel" /></WibeChat>Step 5: Zero-Downtime Cutover
Phase A (1 week): Dual-write mode. Keep Sendbird running, send new messages to both.
Phase B (1 day): Canary release. Switch 5-10% of users to Wibe Chat. Monitor.
Phase C (1 day): Full cutover. Switch all users. Keep Sendbird read-only for 1 week as safety net.
Common Pitfalls
- Don't forget to update push notification configs (APNs/FCM)
- Test offline sync across the cutover boundary
- Update server-side webhook URLs
- Media file URLs will reference Sendbird's CDN initially — they'll keep working but eventually migrate them
Timeline
- Week 1: Setup, user migration, message import
- Week 2: SDK update, testing, canary release
- Week 3: Full cutover, monitoring, decommission Sendbird
Total: 1-2 developers for 2-3 weeks.
Frequently Asked Questions
Will I lose message history?
Can I run both SDKs at the same time?
Do you offer migration support?
How much will I save by switching?
Rishin Haris
Co-Founder & CEO
Expert in real-time communication infrastructure and developer experiences.