TGLiveChat
All alternativesTwelve vendors, each with a reason to stayWidget sizes measured79KB to 749KB, measuredLive chat pricingEntry prices, seat maths, branding chargesvs IntercomThe full head to headvs Tawk.toFree forever, and what it costsHow we measureSources, commands and corrections
WordPressShopifyWebflowSquarespaceWixNext.jsReactAll platforms
ThemesDocsBlogPricing
Sign inGet Started

By platform

Live chat for React

One script tag, then every message arrives in your Telegram. Including the three ways this specifically goes wrong on React, which is the part the install docs leave out.

Last checked 1 September 2026

Live chat by platform/React

The short answer

How do you add live chat to React?

In index.html before the closing body tag, or appended once from a top level effect.

With TGLiveChat that is one tag and about five minutes. The widget is roughly 26KB across 3 requests, replies arrive in Telegram rather than in another dashboard, and your visitors need no Telegram account of their own.

What React is, briefly

A JavaScript library for building user interfaces, usually as a single page application served from Vite, Create React App or similar.

The install, step by step

  1. 1The simplest correct answer is to paste the script into public/index.html before the closing body tag and stop there.
  2. 2If you need it mounted conditionally, append the script element once from an effect in your top level component.
  3. 3Guard the append with a check for an existing element by id, so a re render or a route change cannot load it twice.
  4. 4Return a cleanup function only if you genuinely need to unmount the widget, because removing and re adding it loses the open conversation.

The full walkthrough with screenshots is in the install guide.

The three ways this goes wrong on React

Every one of these is a real failure that looks like a broken widget and is not. They are the reason this page exists rather than just a link to the docs.

StrictMode double invokes effects in development

React 18 and later deliberately run effects twice in development to surface exactly this class of bug. If you append the script from an effect without an idempotency check, you will get two widgets locally and one in production, which is a confusing way to spend an afternoon.

Client side routing does not reload the page

In a single page app the widget mounts once and then survives every route change, which is what you want. It also means anything you keyed to a page load happens once, so do not expect a fresh widget state per route.

Appending on every render is the classic mistake

An effect with a missing dependency array appends a new script on every render. The symptom is a page that gets slower the longer you stay on it. Check for the element by id before appending.

What React gives you instead

There is nothing native here. Every chat option in a React app is a third party script or an npm package that wraps one. We publish a React package as well as the script tag, and for most apps the script tag in index.html is the simpler of the two.

What a chat widget costs a React page

React apps already ship a framework, a router and a state library before any of your own code. A chat widget that adds a third of a megabyte to that is competing directly with your own bundle for parse time on the main thread.

Measured widget weights, heaviest first
WidgetTransfer sizeVersus ours
Tawk.to749KB29x heavier
Zendesk Chat533KB21x heavier
Drift464KB18x heavier
LiveChat385KB15x heavier
Intercom301KB12x heavier
Crisp155KB6x heavier
LiveAgent79KB3x heavier
TGLiveChat~26KBBaseline

Competitor figures are DebugBear's measurements, published 14 July 2019 and updated 10 November 2025. Ours is measured by gzipping the files we serve, and the command is on our methodology page.

Why the replies land in Telegram

The reason most small sites end up with a dead chat widget is not the widget. It is that answering means opening a dashboard that nobody keeps open, so messages sit unread for six hours and visitors stop bothering. Telegram is already open on your phone, so a message from your website arrives the same way a message from a friend does.

Your visitors see none of that. They get a normal chat window on your React site, they need no account, and they never learn which app you answered from. The AI agent handles the questions that have obvious answers while you are asleep, and hands anything else to you.

The bottom line

Adding chat to React is one tag in the right place. Getting it to keep working is about the platform specific traps above, and about whether you will actually answer the messages once they arrive.

The free plan covers 100 conversations a month and does not ask for a card, which is a faster way to find out than reading any more of this.

Frequently asked questions

How do I add live chat to a React site?
In index.html before the closing body tag, or appended once from a top level effect. With TGLiveChat that is one script tag: connect Telegram, pick a theme, paste the tag, and messages start arriving on your phone. There is no plan requirement on the platform side.
Is there a free live chat for React?
Yes. Our free plan covers 100 conversations a month with our badge on the widget and no card required. Tawk.to is the other genuinely free option in this category, unlimited but with a heavier widget. Most other free tiers in this market are trials with a countdown on them.
Will a chat widget slow down my React site?
React apps already ship a framework, a router and a state library before any of your own code. A chat widget that adds a third of a megabyte to that is competing directly with your own bundle for parse time on the main thread. Ours is about 26KB across 3 requests. The heaviest widget DebugBear measured, Tawk.to, is 749KB. Both are third party scripts, so the honest answer is that any widget costs something and the size of the something varies by a factor of nearly thirty.
Do my visitors need Telegram?
No. They type into a normal chat window on your React site and never see Telegram at all. Telegram is where you read and answer from, on the phone already in your pocket. The confusion comes from widgets that are really deep link buttons to t.me, which is a different thing entirely.
Why does the widget not show up on my React site?
StrictMode double invokes effects in development. React 18 and later deliberately run effects twice in development to surface exactly this class of bug. If you append the script from an effect without an idempotency check, you will get two widgets locally and one in production, which is a confusing way to spend an afternoon.
What is the native React option?
There is nothing native here. Every chat option in a React app is a third party script or an npm package that wraps one. We publish a React package as well as the script tag, and for most apps the script tag in index.html is the simpler of the two.
Can I remove the branding?
Yes, on any paid plan. Pro is $19 a month and includes white label and the AI agent, with no per seat charge. There is also a one time Founder licence at $299. Several competitors bill branding removal as a separate line, which is the item people forget when they compare entry prices.
How long does the install actually take?
A few minutes if nothing surprises you. Connect Telegram, pick one of 32 themes, paste the tag where this page says to paste it, then send yourself a test message from a phone on mobile data rather than from the desk you built it on.

Sources and references

  • DebugBear: How Do Different Chat Widgets Impact Site Performance? Published 14 July 2019, updated 10 November 2025. Source of every competitor weight figure above.
  • web.dev: Largest Contentful Paint The Core Web Vital that third party scripts move most on a content page.
  • How we measure our own widget The command, the numbers, and the four figures we published wrong and corrected.

Related guides

Live chat on every platformThe same guide for eight platforms, each with its own traps.React install guideThe step by step version, in the docs.Widget sizes measuredFrom 79KB to 749KB, and what it costs your page.Alternatives comparedTwelve vendors, each with a reason to stay put.Live chat for WordPressBefore the closing body tag, added by our plugin or by a header and footer snippet plugin.Live chat for ShopifyIn theme.liquid, immediately before the closing body tag.Live chat for WebflowProject Settings, Custom Code, Footer Code.Live chat for SquarespaceSettings, Advanced, Code Injection, Footer.
TGLiveChat logoTGLiveChat

Live chat widget for your website. Every visitor message goes straight to Telegram. You reply from your phone, not a dashboard.

[email protected]

Product

  • Telegram Chat Widget
  • Themes
  • Pricing
  • Lifetime Deal
  • Docs
  • Install Guides
  • Favicon Generator
  • Changelog

Platforms

  • WordPress
  • Shopify
  • Webflow
  • Squarespace
  • Wix
  • Next.js
  • React
  • All platforms

Compare

  • vs Intercom
  • vs Tawk.to
  • vs Crisp
  • vs Elfsight
  • Intercom alternative
  • Tawk.to alternative
  • Zendesk alternative
  • All alternatives

Data

  • Widget sizes measured
  • Live chat pricing
  • Tawk.to at 749KB
  • Intercom pricing
  • How we measure
  • Editorial policy
  • For agencies
  • For ecommerce

Guides

  • Chat widget speed benchmark
  • Best widgets for small business
  • Removing Tawk.to branding
  • Drift is shutting down
  • What live chat really costs
  • Why live chat gets ignored
  • Widget loading in Next.js
  • All articles

Company

  • About
  • Contact
  • For SaaS
  • Privacy
  • Terms
  • Refund Policy
  • Acceptable Use

TGLiveChat is independent and not affiliated with, endorsed by, or sponsored by Telegram Messenger or Telegram FZ LLC. Other product names and prices belong to their owners and are quoted with the date we checked them.

© 2026 Outline Technologies LLC. All rights reserved.30 N Gould St, Ste R, Sheridan, WY 82801, US

TermsPrivacyRefundAcceptable UseMethodologyEditorial