React context for Telegram WebApp

This library can be used to create React UIs in use with the new Telegram WebApp feature. This library use context to feed all your components with the current state of the Telegram props.

Usage (with Component)

Wrap your components with a TelegramWebApp component. It receives a validateHash function, which will be called to validate the hash received from Telegram.

import React from 'react';
import ReactDOM from 'react-dom';
import { TelegramWebApp } from 'react-telegram-webapp';

async function validateHash(hash) {
    const response = await fetch(`/api/validate`, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ hash }),
    });
    
    return response.ok;
}

ReactDOM.render(
  <TelegramWebApp validateHash={validateHash}>
    <MyComponent />
  </TelegramWebApp>,
  document.getElementById('root')
);

Usage (with wrapper function)

You can also wrap your components with a withTelegramWebApp function. It also receives a validateHash function, which will be called to validate the hash received from Telegram.

import React from 'react';
import { withTelegramWebApp } from 'react-telegram-webapp';

function App() {
  return <MyComponent />;
}

async function validateHash(hash) {
    const response = await fetch(`/api/validate`, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ hash }),
    });

    return response.ok;
}

export default withTelegramWebApp(App, {
    validateHash
});

Useful hooks

useStartParam – return the start params useTelegramWebApp – return the TelegramWebApp object useIsTelegramWebAppReady – returns true if the TelegramWebApp is ready. You can use this to show loading screen

Contribute

If you want to contribute to this library, please open an issue or pull request.

GitHub

View Github