Supporting Mobile Devices

TalkJS has been designed from the ground to work well in mobile web browsers and inside mobile apps (using a Webview).

TalkJS is responsive, so if your app is as well, the most of it should just work great out of the box. This page lists some ways you can improve the user experience on mobile.

Fixing the viewport

For more native-like user experiences on mobile devices, we recommend fixing the width and height of the viewport, so that the chat fills the screen perfectly. Additionally, you probably want to disable zoom so that touch interactions become as fast as in native apps (most mobile browsers add a 300ms tap delay unless you disable zoom).

The code below accomplishes both these steps.

content="width=device-width, initial-scale=1, maximum-scale=1"

Note: On iOS 10+, Safari will not actually disable zoom with this setting, but it will still support immediate touch interactions.

Mobile push notifications

If you embed TalkJS into a native app using Webviews, you can use our support for mobile push notifications as described here.

Cordova, PhoneGap and Ionic

TalkJS has been designed to work well inside Cordova-based apps, and you ought to be able to follow the usual web-based integration steps.

However, you need to add a few little settings to make everything work smoothly:

1. Whitelist TalkJS

On some platforms, you need to whitelist the TalkJS URIs to be able to load TalkJS.

  1. Install cordova-plugin-whitelist, and scroll down to the section about Content Security Policies.
  2. Add a Content Security Policy which allows access to https://*
  3. We depend on Google Cloud for the file sharing feature. If you use file sharing, also add

By default, Cordova will open all links inside your app, which includes external links that your users may share amongst each other. If you don't want that, install cordova-plugin-inappbrowser. Don't worry about the plugin's confusing name, it includes a feature to avoid using an in-app browser :-)

TalkJS will automatically detect the presence of this plugin and ensure that external links are opened in the device's system browser.

React Native

You can integrate TalkJS within your React Native application by embedding it inside a WebView component. Your user list storage can remain in component the state or any other state management solution compatible with React Native. Please check out our TalkJS React Native getting started guide, or view our TalkJS React Native examples for reference.


As a web-oriented solution, TalkJS has some limitations when used within a React Native WebView. Particularly, you will need a workaround to handle external links and attachments.

If you try to open a link or attachment from a chatbox in a default WebView, it will open in the same window and you won't be able to go back. We recommend implementing a workaround using the onNavigationStateChange callback. Once this callback is triggered you can open it in an external browser using React Native's Linking module.

const webview = React.createRef();
return (
source={{ html: html, baseUrl: baseUrl }}
//TalkJS initialization code
onNavigationStateChange={(event) => {
//If this is not first time URL loading
if (event.url !== uri) {
//stop current browser window
//Open link in external window

You can find an example of an app that integrates TalkJS in our talkjs-examples repo.