Instant messaging looks like a solved problem until the requirement is “messages must not leave our infrastructure”. At that point the questions change: who owns the message store, how does the SDK behave on a private network, and what happens when you need to audit a conversation three years later?
This article is a working checklist for evaluating IM SDKs in private-deployment scenarios. It is vendor-neutral and focuses on the criteria that tend to decide whether a project succeeds after go-live, rather than on feature checklists.
Why IM selection is harder than it looks
A messaging feature starts as “send text from A to B”. Within a quarter it usually grows into conversations, unread counts, multi-device sync, file messages, notification routing, permission rules, retention and audit. Each of those touches the data model, and in a private deployment you also own the database, the upgrade process and the incident response.
Two SDKs can look identical in a demo and behave very differently in year two. The evaluation should therefore test ownership and operations, not only the message bubble.
The ten criteria
1. Data model and storage ownership
Ask where every piece of state lives: messages, conversation metadata, relationship or contact data, read receipts, device sessions and offline queues. In a private deployment you want those in databases and object storage you can back up, query and retain on your own terms.
- Can you query the message store directly for reporting or investigation?
- Is the schema documented, or is data opaque inside the service?
- Can you export a conversation in a usable format without vendor tooling?
2. Deployment topology and network requirements
Obtain the actual component list and port matrix before signing. Typical private IM deployments include access services, logic services, a message store, a cache layer and an object store. You need to know what runs where, what talks to what, and which components require egress.
If your environment is air-gapped, also ask how offline installation and offline upgrades work. This is where many “private deployment” claims become vague.
3. Authentication and organisational integration
Most enterprises do not want a second account system. The SDK should be able to accept identities from your existing directory, and the server-side integration should be explicit about token issuance, session revocation and account lifecycle.
Test at least one of these end to end: an account disabled in your directory should lose access to new sessions; an org unit change should affect who can find whom.
4. Message semantics
Feature bullets rarely describe the hard parts. Ask about:
- Ordering and idempotency when a client retries after a network drop.
- Multi-device synchronisation, including messages sent from one device while another was offline.
- Offline messages and their retention limits.
- Read receipts, recall and edit semantics, if you need them.
- Behaviour when a user is in many large groups.
Write these into acceptance tests with concrete numbers rather than trusting documentation.
5. Extensibility
Business messaging usually needs custom message types: approval cards, order updates, alerts with actions, references to internal objects. Confirm how a custom type is defined, rendered and versioned across old and new clients.
Conversation attributes and per-conversation permissions matter too, especially if you plan to reuse one SDK for customer service and internal collaboration.
6. Observability and audit
In a private environment you are the operator. You need logs, metrics and traces that map to your systems. Check whether the SDK exposes:
- Connection and delivery metrics per node.
- Structured logs with request or message identifiers.
- Audit hooks for administrative actions such as group creation or member removal.
If audit is a compliance requirement, clarify whether message content can be searched by your compliance team, and under what access controls.
7. Upgrade path and compatibility
Ask for the release cadence, the supported version window and what a typical upgrade involves. For isolated networks, ask how many versions you can skip. For client SDKs, ask how long older app versions remain usable — mobile users update slowly.
A useful test: request the release notes for the last three versions and see whether breaking changes were documented clearly.
8. Client platform coverage
List the platforms you actually need, including Web, and check the maturity of each rather than the existence of a checkbox. Web clients have different constraints around background delivery and local storage; desktop clients need auto-update and proxy support.
9. Security controls
At minimum, confirm transport encryption, encryption at rest options, key management ownership, session and device management, and administrative role separation. If you need end-to-end encryption, clarify exactly which metadata remains visible to the server, because that affects compliance and operations.
10. Commercial model and exit
Private deployment is a long-term commitment. Understand the licensing metric, the support boundary, the cost of upgrades, and what happens if you want to leave. Data portability is part of the product, not a favour.
| Evaluation area | Questions that matter most |
|---|---|
| Data | Where is state stored, and can we query and export it? |
| Network | What is the component and port matrix? Does it work offline? |
| Identity | Can we integrate our directory and revoke sessions? |
| Operations | What metrics, logs and audit hooks exist? |
| Lifecycle | Upgrade cadence, version support, client compatibility |
| Exit | Licensing terms and data portability |
Common mistakes
- Evaluating only the client SDK. Most of the operational risk is server-side.
- Assuming “private deployment” means one package. Real environments need topology and capacity design.
- Deferring audit requirements. Retrofitting audit into a message store is expensive.
- Ignoring the second year. Upgrades, version support and client compatibility decide long-term cost.
A short proof-of-concept plan
- Deploy the smallest supported cluster in a test environment that resembles production, including network restrictions.
- Run scripted scenarios: reconnect storms, multi-device sync, large groups, offline delivery, custom message types.
- Simulate an upgrade from the previous supported version.
- Import a realistic account set and verify directory integration, session revocation and audit output.
Closing
There is no single best IM SDK. There is a best fit for your constraints: where data must live, how your identity system works, how much operational capability you have, and how long you intend to run the system.
If you are comparing a managed IM service with a privately deployed SDK, the delivery-model trade-offs are worth reviewing first (see the comparison page linked from the site navigation). Feiyan IM SDK is one option among several, and we are happy to be evaluated against these criteria.
Capabilities marked Coming soon or Roadmap are not available in the current release. Product capabilities and availability are governed by the official release notes.