Skip to content

Home

Session.js is JavaScript library for programmatic usage of Session messenger by OXEN. Supports server and browser environment with built-in proxy network module. Shipped with TypeScript definitions. Tested with bun:test. Written with blazingly fast Bun, a modern runtime for JavaScript and alternative to Node.js. This package cannot be used with Node.js, it uses a better runtime instead of it. It can also be used with most bundlers that support modern syntax.

Session.js allows you to create:

  • Highly optimized Session bots (hundreds of bots in a single app)
  • Custom Session clients (web-based and native with JS backend)
  • Automation tools for Session

Features

  • On-demand polling — you decide when to get new messages and whether instance should poll them (and poll settings like frequency) or work just for sending
  • Per-instance storage and network settings — you can attach persistant storage to instance or use in-memory storage for throwaway one-time instances
  • Session.js can be used in browser, keeping private keys on client-side and doing network requests on server-side. See this in action with my full-featured Session Web client!

Getting started

Jump to getting started page to start using Session.js!

Roadmap

  • Messages
  • Automatic snodes fetching
  • Automatic swarms selection
  • Manual snode/swarm control
  • Data retrieving from swarms
  • Messages polling
  • Messages types
    • Regular chat message
    • Text
    • Attachments
      • Images
      • Files
      • Voice messages
      • Quotes
      • Web links previews
    • Service messages
    • Sync message
    • Configuration message
      • Uses legacy constructor for now
    • Read message (ReadReceipt)
    • Typing message
    • Message request response
    • Screenshot / media saved (DataExtraction)
    • Delete message (Unsend)
    • Call message
      • Just event to display placeholder warning about unsupported feature
  • Reactions
  • Closed chats
  • Open groups (SOGS)
  • Expirable messages
  • Calls
  • Messages editing (SOGS)
  • Profile editing
  • Display name
  • Avatar
  • Syncing between devices
  • ONS resolving
  • Get rid of ByteBuffer and other lazy dependencies

License

All code in Session.js (including any submodules) was written by Viktor Shchelochkov aka hloth and licensed under MIT license

Funding

You can donate here: hloth.dev/donate