Changelog: Twilio Conversations JavaScript SDK
- Latest release documentation.
- Versioning and Support Lifecycle.
Warning
The non-secure script link does not validate Sub-Resource Integrity but will download bug fix releases automatically.
The secure link provides cryptographic protection against any changes in the Twilio SDK code, which may be critical in some applications.
- .js: non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.6.4: sha256-PbYQqwNuSJxMT1n4N9pTnQ07vZXtXPm+mluEoLcG3Jw=
- .min.js: minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.6.4: sha256-5x8cybP/SUi6YtOY/KHfEAmY7dhLtcqyD/3Fc22cHMI=
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.6.4/twilio-conversations.min.js"2integrity="sha256-5x8cybP/SUi6YtOY/KHfEAmY7dhLtcqyD/3Fc22cHMI="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.6/twilio-conversations.min.js"></script>
Features
- Conversations: Made Client's method peekConversationBySidpublic
- .js: non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.6.3: sha256-Qau7qJlym/BE73gATxr8a076iFwi1X1jB3rJSGTwZPE=
- .min.js: minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.6.3: sha256-CFfUWTxezfxQ/1jH/m7YzqYVRRyzVS/X0ooXiQywqYc=
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.6.3/twilio-conversations.min.js"2integrity="sha256-CFfUWTxezfxQ/1jH/m7YzqYVRRyzVS/X0ooXiQywqYc="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.6/twilio-conversations.min.js"></script>
Features
- Conversations: Upgraded twilsock to version 0.13.10 in conversations package.
- .js: non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.6.2: sha256-PJwrSjCr5IQ01/uCJ7/yqGlhRG7Kntzfez979vgp92w=
- .min.js: minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.6.2: sha256-V5Ed2AkRSkVVlFhtk5lzCHhaW6YapKUFCi9APY5Pqqs=
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.6.2/twilio-conversations.min.js"2integrity="sha256-V5Ed2AkRSkVVlFhtk5lzCHhaW6YapKUFCi9APY5Pqqs="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.6/twilio-conversations.min.js"></script>
Features
- Twilsock: Upgraded ws to version 8.18.1.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.6.1: sha256-E1sb0oVeQjvTtZ+S9L7vxoYQdZ12F4pay81+SUtqdhE=
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.6.1: sha256-dvIsyBhuA90h9qTVN37CZ1kLwp+JZRqeV/lxv8X0SoA=
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.6.1/twilio-conversations.min.js"2integrity="sha256-dvIsyBhuA90h9qTVN37CZ1kLwp+JZRqeV/lxv8X0SoA="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.6/twilio-conversations.min.js"></script>
Features
- Added a new option for conversation creation: Introduced the Accessparameter with arestrictedoption, enabling the creation of conversations with restricted access.
Bug Fixes
- Fixed a React Native compilation issue: Resolved an unexpected }that caused a build error.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.6.0: sha256-uJB2mytJUimQ4CydQTCvw4ImbDaAUhBhMM9gdRfGpaw=
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.6.0: sha256-xPEivoMXimPOKythl5xUKOfcCMcVg8DVl0I2BmKfmqc=
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.6.0/twilio-conversations.min.js"2integrity="sha256-xPEivoMXimPOKythl5xUKOfcCMcVg8DVl0I2BmKfmqc="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.6/twilio-conversations.min.js"></script>
Features
- ESM configuration for Rollup: Implemented support for ECMAScript Modules (ESM) in Rollup, enhancing compatibility and performance.
Bug Fixes
- ensureReady: Removed unnecessary catch and reset actions when Twilsock disconnects, improving stability.
- Twilsock: Updated the wspackage to the latest version, addressing compatibility issues.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.5.0: sha256-LmJX51wpqOKimCPhYCdDGnQZJWpytnArJ+cLdSd/Mk8=
 
- SHA-256 for non-minified version 2.5.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.5.0: sha256-aBKm/Hjylgtmr/XtFMSDbUWf+2VlRHBbj4jdgy/KhRc=
 
- Base64 SHA-256 for minified version 2.5.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.5.0/twilio-conversations.min.js"2integrity="sha256-aBKm/Hjylgtmr/XtFMSDbUWf+2VlRHBbj4jdgy/KhRc="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.5/twilio-conversations.min.js"></script>
Features
- Added support for Email in Flex
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.4.0: sha256-aiDMoL8+BoPxRZL8bszYZ1vkXlYNfu+UexlzKijbO1c=
 
- SHA-256 for non-minified version 2.4.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.4.0: sha256-n/6RCcuNipqtzWOWjJ1D+UQuQ6jjm66Nu5z6FR5m/a4=
 
- Base64 SHA-256 for minified version 2.4.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.4.0/twilio-conversations.min.js"2integrity="sha256-n/6RCcuNipqtzWOWjJ1D+UQuQ6jjm66Nu5z6FR5m/a4="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.4/twilio-conversations.min.js"></script>
Features
- Added support for message channel metadata
- Internal improvements and bugfixes
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.3.0: sha256-bAwsIGWPAjLYtyaL7ChBTyiTE4R4/UT3WbR3BbBi+uQ=
 
- SHA-256 for non-minified version 2.3.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.3.0: sha256-k37Hx/3U6wN1/ai4gc1FedSzTYAyn1kW3oxTGv+EqLY=
 
- Base64 SHA-256 for minified version 2.3.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.3.0/twilio-conversations.min.js"2integrity="sha256-k37Hx/3U6wN1/ai4gc1FedSzTYAyn1kW3oxTGv+EqLY="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.3/twilio-conversations.min.js"></script>
Features
- Added support for Content API
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.2.2: sha256-77sdaO4FcNy2mV29PskLC1rwZjNkv+LwDn/TE4EBgPU=
 
- SHA-256 for non-minified version 2.2.2: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.2.2: sha256-KrOF3nMhorDCOFmy8Lpwz/Du0SElgV4KMyBvW76r0U8=
 
- Base64 SHA-256 for minified version 2.2.2: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.2.2/twilio-conversations.min.js"2integrity="sha256-KrOF3nMhorDCOFmy8Lpwz/Du0SElgV4KMyBvW76r0U8="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.2/twilio-conversations.min.js"></script>
Bug fixes
- Methods Conversation.leaveandConversation.removeParticipantwill now properly work for participants with identities containing special characters.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.2.1: sha256-NRCg6xEOzCTaac5AV0SVT/Ob63Q+nILys+Ac6RmMIp0=
 
- SHA-256 for non-minified version 2.2.1: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.2.1: sha256-BfGQUsDAH2A06f2v117v7T+4qPiRUKbjCFvu/MhNDBg=
 
- Base64 SHA-256 for minified version 2.2.1: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.2.1/twilio-conversations.min.js"2integrity="sha256-BfGQUsDAH2A06f2v117v7T+4qPiRUKbjCFvu/MhNDBg="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.2/twilio-conversations.min.js"></script>
Bug fixes
- Client.getConversationBySidwill no longer throw a deprecation warning when it shouldn't.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.2.0: sha256-IfSb09n9X6nFaXYpr5AKyMfOWyOz0lKHHO3xhzI8JaE=
 
- SHA-256 for non-minified version 2.2.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.2.0: sha256-IVvvlFjCqVxfaKZj7uHAVoOwBtl5q5EjGz4KScEIN+4=
 
- Base64 SHA-256 for minified version 2.2.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.2.0/twilio-conversations.min.js"2integrity="sha256-IVvvlFjCqVxfaKZj7uHAVoOwBtl5q5EjGz4KScEIN+4="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.2/twilio-conversations.min.js"></script>
Deprecations (will be removed in 3.0):
- Client.tokengetter has been deprecated.
- Client.createhas been deprecated, use- new Clientinstead.
- Message.getMediaByCategoryhas been deprecated, use- Message.getMediaByCategoriesinstead.
- Message.attachTemporaryUrlsForhas been deprecated, use- getTemporaryContentUrlsForMediainstead.
- Event Client.stateChangedhas been deprecated, useClient.initializedandClient.initFailedevents instead.
New features
- Change multiple media interfaces to match the mobile platform SDKs.
Bug fixes
- Client initialization no longer fails with broken conversations.
- Class name SyncErrorwill no longer get minified in minified bundles.
- Attribute parsing has been fixed for SMS participants.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.1.0: sha256-RN+13KZsLo5IcGpk1KPyAdHEZhQSVd66Di4tYINSv+g=
 
- SHA-256 for non-minified version 2.1.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.1.0: sha256-v2SFLWujVq0wnwHpcxct7bzTP8wII7sumEhAKMEqgHQ=
 
- Base64 SHA-256 for minified version 2.1.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.1.0/twilio-conversations.min.js"2integrity="sha256-v2SFLWujVq0wnwHpcxct7bzTP8wII7sumEhAKMEqgHQ="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.1/twilio-conversations.min.js"></script>
New features:
- Improved client synchronization time for users with many Conversations and Participants.
- Added bindingsproperty toParticipantandConversation.
- Added email body and history accessors to Message.
- Updated MessageBuilderto support email payload.
Bug fixes
- Attempting to use FormData in a non-browser environment will now throw an exception.
- Fixed null exceptions are thrown when attempting to execute Message.getEmailBodywhen no body is attached or when attempting to executeMessage.getEmailHistorywhen no history is attached.
- Improved type-checking errors thrown in Message.attachTemporaryUrlsFor.
- Fixed bindingsupdate always coming inparticipantUpdatedreasons.
- Various documentation improvements.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.0.1: sha256-qh6mHMySA1dWklWKE8GLSfL0vKvTTL4rppgJBU6GIcQ=
 
- SHA-256 for non-minified version 2.0.1: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.0.1: sha256-wvZyrbfbpP/U/l7WRmkS7lPBjsDcNg2Ib7SzKlF4SZo=
 
- Base64 SHA-256 for minified version 2.0.1: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.0.1/twilio-conversations.min.js"2integrity="sha256-qh6mHMySA1dWklWKE8GLSfL0vKvTTL4rppgJBU6GIcQ="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.0/twilio-conversations.min.js"></script>
- Fixed a post-install script causing issues on some platforms.
- Fixed an issue with Client.getConversationBySidreturning wrong conversations.
- Bumped required Node.js version to 14.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 2.0.0: sha256-Zi+sUnqbLqAWgi1ckoSa9ym+lCfVY6xOZvDR+/ToHgM=
 
- SHA-256 for non-minified version 2.0.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 2.0.0: sha256-/pQ4lYklKpRl6E4ruYcKqTUcLsfM2FQLUarDWVA9I0o=
 
- Base64 SHA-256 for minified version 2.0.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/2.0.0/twilio-conversations.min.js"2integrity="sha256-/pQ4lYklKpRl6E4ruYcKqTUcLsfM2FQLUarDWVA9I0o="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v2.0/twilio-conversations.min.js"></script>
Breaking changes
- nullcan no longer be passed in place of- ClientOptionsfor client instantiation.
- nullcan no longer be passed to- Conversations.updateFriendlyName.
- nullcan no longer be passed to- User.updateFriendlyName.
- Passing nulltoConversation.sendMessagewill result in the message body being an empty string.
- Client is now considered fully initialized only when the new stateChangedevent is emitted with the value"initialized".
- Accessing Client.reachabilityEnabledbefore the client is fully initialized will now throw an error.
- Accessing Client.userbefore the client is fully initialized will now return a non-initialized user. On client initialization, the user will initialize and receive theupdatedevent with all the update reasons.
- Default exports have been removed. The SDK now only supports named exports, e.g., import { Client } from "@twilio/conversations";.
New features
- Migrated to the Sessionless protocol.
- Added support for multiple media.
- Conversation.prepareMessagecould now be used to send multiple media messages.
 
- Added support for init registrations.
- The client should now be created using the constructor. The stateChangedevent should be utilized to react to client initialization.
- The factory method Client.createis now deprecated. Use the constructor instead.- If a client is created using the deprecated factory method, then Client.onWithReplayshould be used to subscribe to its events.
- If Client.onis used instead, then some events that are triggered on client initialization will get lost.
 
- If a client is created using the deprecated factory method, then 
- Client.unsetPushRegistrationIdis now deprecated. Use- Client.removePushRegistrationsinstead.
 
- The client should now be created using the constructor. The 
Other changes
- Conversation.addNonChatParticipantnow allows all valid JSON values to be passed as attributes.
- Fixed type resolution issues on Angular.
- Fixed initialization problems on React Native.
- The SDK now additionally exports the following types: ParticipantUpdatedEventArgs,MessageUpdatedEventArgs,UserUpdatedEventArgs,Paginator, andNotificationTypes.
- All events are now strictly typed when using TypeScript.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 1.2.3: sha256-fCxO5CJdh4ylmCrBWCTzsqhpE6aIbJ3L0cmt6FGGiDU=
 
- SHA-256 for non-minified version 1.2.3: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 1.2.3: sha256-fGJzzkCU7845NUd6g0dG6/p0vm5aAIIAi0Vmsply9II=
 
- Base64 SHA-256 for minified version 1.2.3: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/1.2.3/twilio-conversations.min.js"2integrity="sha256-fGJzzkCU7845NUd6g0dG6/p0vm5aAIIAi0Vmsply9II="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v1.2/twilio-conversations.min.js"></script>
Changes
- Fix compilation of TS with type exports, broken since 1.2.1.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 1.2.1: sha256-/ni6qklORrIc+z+QcqdgxSOlmaczOFLq85cJfKqoKGE=
 
- SHA-256 for non-minified version 1.2.1: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 1.2.1: sha256-2UkMXiUMrGQwt95PXoLiklv9Hgl87uLXA3G6q/9HP7I=
 
- Base64 SHA-256 for minified version 1.2.1: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/1.2.1/twilio-conversations.min.js"2integrity="sha256-2UkMXiUMrGQwt95PXoLiklv9Hgl87uLXA3G6q/9HP7I="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v1.2/twilio-conversations.min.js"></script>
Changes
- Fix IE11 issues: the SDK should now properly load and work on IE11.
- Upgraded to a modern build toolchain, reducing the bundle size.
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 1.2.0: sha256-f48Ke76doR3wMUykEyccmedAUfDqMAaEH7fe4limPAo=
 
- SHA-256 for non-minified version 1.2.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 1.2.0: sha256-lYzPQyaIqs8RXkKxfQnkDbfiosIrDKs/OsJ2VjCcMc8=
 
- Base64 SHA-256 for minified version 1.2.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/1.2.0/twilio-conversations.min.js"2integrity="sha256-lYzPQyaIqs8RXkKxfQnkDbfiosIrDKs/OsJ2VjCcMc8="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v1.2/twilio-conversations.min.js"></script>
Changes
- Fix Conversation.lastReadMessageIndexnot being set during client initialization.
- TypeScript typing for Conversation.lastReadMessageIndexgot changed tonumber \| null.
- Dependency bumps.
- Documentation improvements.
- js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 1.1.0: sha256-DFmUiLiTxQM3i9TCRl8DKUHEm48e6egBi7KlXQ5engc=
 
- SHA-256 for non-minified version 1.1.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 1.1.0: sha256-CyaWtQO775FKI8f8jyY9Oj2w97RC9r6WHooi8OzgSgE=
 
- Base64 SHA-256 for minified version 1.1.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/1.1.0/twilio-conversations.min.js"2integrity="sha256-CyaWtQO775FKI8f8jyY9Oj2w97RC9r6WHooi8OzgSgE="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v1.0/twilio-conversations.min.js"></script>
Changes
- Added support for detailed delivery receipts.
First official release for the new Conversations product
- .js Non-minified Conversations SDK bundled for browsers.
- SHA-256 for non-minified version 1.0.0: WpAJSSVar1v0rQ89XYLt4MLAOuK+kZ4Brxbadl62p9c=
 
- SHA-256 for non-minified version 1.0.0: 
- .min.js Minified Conversations SDK bundled for browsers.
- Base64 SHA-256 for minified version 1.0.0: wwGP7TgNRaTpRZj6r7CM/ZPMa/mMj44/QRLQNnQMJjU=
 
- Base64 SHA-256 for minified version 1.0.0: 
- npm Conversations Node.js SDK package.
- Docs JS SDK documentation.
Secure browser script link
1<script src="https://sdk.twilio.com/js/conversations/releases/1.0.0/twilio-conversations.min.js"2integrity="sha256-wwGP7TgNRaTpRZj6r7CM/ZPMa/mMj44/QRLQNnQMJjU="3crossorigin="anonymous"></script>
Non-secure browser script link
<script src="https://sdk.twilio.com/js/conversations/v1.0/twilio-conversations.min.js"></script>
First public release for the new Conversations product
This release was for testing only, please do not use it.