Skip to content

Tree-shaking ​

Being a ESM-first library, mtcute supports tree-shaking out of the box.

This means that you can import only the parts of the library that you need, and the bundler will remove all the unused code.

Usage ​

To start using tree-shaking, there are a few things to keep in mind:

  • Do not use TelegramClient. Use BaseTelegramClient instead, and import the needed methods.

    For example, instead of this:

    ts
    import { TelegramClient } from '@mtcute/web'
    
    const tg = new TelegramClient({ ... })
    
    await tg.sendText(...)
    import { TelegramClient } from '@mtcute/web'
    
    const tg = new TelegramClient({ ... })
    
    await tg.sendText(...)

    you should use this:

    ts
    import { BaseTelegramClient } from '@mtcute/web'
    import { sendText } from '@mtcute/web/methods.js'
    
    const tg = new BaseTelegramClient({ ... })
    
    await sendText(tg, ...)
    import { BaseTelegramClient } from '@mtcute/web'
    import { sendText } from '@mtcute/web/methods.js'
    
    const tg = new BaseTelegramClient({ ... })
    
    await sendText(tg, ...)
  • TL serialization is currently not tree-shakeable, because it is done via a global map of constructors. There's no ETA on when (or whether at all) this will be changed, so there will be ~300 KB of non-shakeable code.

mtcute is not affiliated with Telegram.