10.0.0-rc.7 (2026-08-21)
⚠ BREAKING CHANGES
client.instanceConfigurationServiceis replaced byclient.config,
and the exported classInstanceConfigurationServiceis renamed to
InstanceConfigurationRegistry.client.setInstanceConfigurationFunction()is removed. Register
setup functions withclient.config.setSetupFunction(key, fn).
client.setMessageComposerSetupFunction()is unchanged.- the per-class setup types are replaced by generic ones keyed by
instance. Removed:ChannelSetupFunction,ChannelSetupState,
ChannelTearDownFunction,MessageComposerSetupFunction,MessageComposerSetupState,
MessageComposerTearDownFunction,StreamChatSetupFunction,StreamChatSetupState,
StreamChatTearDownFunction,ThreadSetupFunction,ThreadSetupState,
ThreadTearDownFunction,SetInstanceConfigurationFunctions,
SetInstanceConfigurationServiceStatesandSetupFnOf. UseInstanceSetupFunction,
InstanceSetupState,InstanceSetupTearDownFunctionandInstanceSetupKey. ChannelInstanceConfigis renamed toChannelConfigand
ThreadInstanceConfigtoThreadConfig.Channel.getConfig()is removed. Read the server's channel-type
configuration fromchannel.serverConfig, or the resolved configuration from
channel.config.client.configsis renamed toclient.channelServerConfigsand
client.configsStoretoclient.channelServerConfigsStore. Keys are still cids, so
lookups translate directly. Preferchannel.serverConfig.channel.config.commandsis renamed to
channel.config.availableCommands. The server owns the list, so it is read-only and
absent from the declarative configuration tree.applyCommandValidatorOverrideis no longer exported. Command
validation is configured through the composer's configuration.MessageComposerConfiggains a requiredpolls;
AttachmentManagerConfiggains requiredenabledandcustomCdn;
LocationComposerConfiggains a requiredminShareDurationMs. A config object
built literally must supply them.linkPreviews.enablednow defaults totrue, where it defaulted to
false. It is ANDed with the channel type'surl_enrichment, sotruemeans "no
opinion, let the server decide"; the old default double-gated the feature and kept it
off even where the server had enabled it.- server flags gate the features they describe, ANDed with the
registered value rather than the client value winning:typingEventswith
typing_events,readEventswithread_events,attachmentswithuploads,
pollswithpolls,locationwithshared_locations, andlinkPreviewswith
url_enrichment. Code that set a flag totrueand assumed it took effect may now
find the feature off. - setters no longer discard a write when the server is masking the
field. Previously the setter compared against the effective value, so the write was
dropped and the earlier request was honoured once the server relented. Affects
linkPreviewsManager.enabled,textComposer.enabled,textComposer.maxLengthOnEdit,
textComposer.maxLengthOnSendandattachmentManager.maxNumberOfFilesPerMessage.