---
source_url: https://www.pubnub.com/docs/sdks/javascript/faq
title: FAQ for JavaScript SDK
updated_at: 2026-06-03T11:42:37.161Z
sdk_name: PubNub JavaScript SDK
sdk_version: 11.0.1
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# FAQ for JavaScript SDK

PubNub JavaScript SDK, use the latest version: 11.0.1

Install:

```bash
npm install pubnub@11.0.1
```

## Why are there two subscribe methods?

The JavaScript SDK supports a modern, entity-based flow and retains a legacy `subscribe()` for backward compatibility.

Use the modern flow documented in [Subscribe](https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#subscribe). It creates `subscription` or `subscriptionSet` objects, adds a single listener entry point, and can optionally resume from a timetoken using a `cursor`. The legacy builder `pubnub.subscribe({ ... })` is documented in [Subscribe (old)](https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#subscribe-old) and remains for existing applications.

## Why does encryption use AES-128 when cryptoModule is configured?

If a call supplies a `customCipherKey` (for `encrypt`/`decrypt`) or a `key` (for `encryptFile`/`decryptFile`), that argument overrides the configured `cryptoModule` for that operation and uses legacy Advanced Encryption Standard (AES) with 128-bit keys. Remove those arguments to use the `cryptoModule` configuration (AES‑256‑CBC), or configure a separate `cryptoModule` instance for partial encryption scenarios.

For details, refer to [CryptoModule configuration](https://www.pubnub.com/docs/sdks/javascript/api-reference/configuration#cryptomodule).

## Terms in this document

* **Entity** - A subscribable object within a PubNub SDK that allows you to perform context-specific operations.
* **Listener** - A function or objectthat reacts to events or messages, like new chat messages or connection updates, letting your app respond in real-time.
* **Timetoken** - A unique identifier for each message that represents the number of 100-nanosecond intervals since January 1, 1970, for example, 16200000000000000.