<titledata-rh="true">JavaScript SDK FAQ | Waku Documentation</title><metadata-rh="true"name="viewport"content="width=device-width,initial-scale=1"><metadata-rh="true"name="twitter:card"content="summary_large_image"><metadata-rh="true"property="og:url"content="https://docs.waku.org/guides/js-waku/faq"><metadata-rh="true"property="og:locale"content="en_GB"><metadata-rh="true"name="docusaurus_locale"content="en-GB"><metadata-rh="true"name="docsearch:language"content="en-GB"><metadata-rh="true"name="keywords"content="waku, web3"><metadata-rh="true"name="image"content="https://docs.waku.org/_og/3d47a86dab7788f7bce9488949d0a6fe8f39e73f.png"><metadata-rh="true"name="docusaurus_version"content="current"><metadata-rh="true"name="docusaurus_tag"content="docs-default-current"><metadata-rh="true"name="docsearch:version"content="current"><metadata-rh="true"name="docsearch:docusaurus_tag"content="docs-default-current"><metadata-rh="true"property="og:title"content="JavaScript SDK FAQ | Waku Documentation"><metadata-rh="true"name="description"content="You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started."><metadata-rh="true"property="og:description"content="You can add the JavaScript SDK to your project using NPM, Yarn, or a CDN. Check out the installation guide to get started."><linkdata-rh="true"rel="icon"href="/theme/image/favicon.ico"><linkdata-rh="true"rel="canonical"href="https://docs.waku.org/guides/js-waku/faq"><linkdata-rh="true"rel="alternate"href="https://docs.waku.org/guides/js-waku/faq"hreflang="en-GB"><linkdata-rh="true"rel="alternate"href="https://docs.waku.org/guides/js-waku/faq"hreflang="x-default"><linkrel="alternate icon"type="image/png"href="/theme/image/favicon.png">
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-2"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-2">Why should I use Protocol Buffers for my application's message structure when using Waku?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>Protocol Buffers ensure consistent formatting, interoperability, and backward compatibility for your application's messages, with a smaller payload size than JSON. Check out the <ahref="/guides/js-waku/#message-structure">installation guide</a> and <ahref="https://protobuf.dev/overview/">Protobuf documentation</a> to learn more.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-3"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-3">What are the steps to retrieve historical messages on Waku?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>Check out the <ahref="/guides/js-waku/store-retrieve-messages">Retrieve Messages Using Store Protocol</a> guide to learn how to retrieve and filter historical messages using the <ahref="/learn/concepts/protocols#store">Store protocol</a>.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-4"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-4">How can I prevent Store peers from storing my messages?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>When <ahref="/guides/js-waku/light-send-receive#choose-a-content-topic">creating your message encoder</a>, you can configure the <strong>ephemeral</strong> option to prevent Store peers from keeping your messages on the Waku Network.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-5"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-5">How can I encrypt, decrypt, and sign messages in my Waku application?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>You can encrypt and decrypt your messages using symmetric, ECIES, and noise encryption methods. Check out the <ahref="/guides/js-waku/message-encryption">Encrypt, Decrypt, and Sign Your Messages</a> guide to get started.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-6"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-6">How do I integrate Waku into a React application?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>Waku has a specialized SDK designed for building React applications. Check out the <ahref="/guides/js-waku/use-waku-react">Build React DApps Using @waku/react</a> guide for instructions on installation and usage.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-7"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-7">How can I bootstrap and discover peers in the Waku Network for browser nodes?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>The JavaScript SDK has a <ahref="/guides/js-waku/configure-discovery#default-bootstrap-method">default bootstrap method</a> that can be configured with <ahref="/learn/concepts/static-peers">Static Peers</a> and <ahref="/learn/concepts/dns-discovery">DNS Discovery</a>. Check out the <ahref="/guides/js-waku/configure-discovery">Bootstrap Nodes and Discover Peers</a> guide for setting up peer discovery for your node.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-8"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-8">How can I integrate Waku into a NodeJS application?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>Though the JavaScript SDK isn't directly usable in NodeJS due to <ahref="/guides/js-waku/run-waku-nodejs">certain limitations</a>, we recommend running <ahref="/guides/nwaku/run-docker-compose">nwaku in a Docker container</a> and consuming its <ahref="https://waku-org.github.io/waku-rest-api/">REST API</a> in a NodeJS application.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-9"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-9">How can I debug my Waku DApp and check WebSocket connections?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>Check out the <ahref="/guides/js-waku/debug-waku-dapp">Debug Your Waku DApp and WebSocket</a> guide to discover how to use debug logs to troubleshoot your Waku DApp and resolve connection issues with nwaku WebSockets.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-10"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-10">How can I manage unexpected disconnections of my Filter subscription from Waku?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>We recommend regularly pinging peers to check for an active connection and reinitiating the subscription when it disconnects. Check out the <ahref="/guides/js-waku/manage-filter">Manage Your Filter Subscriptions</a> guide for a detailed explanation and step-by-step instructions.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-11"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-11">How can I send images and videos on the Waku Network?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>While it's possible to transmit media such as images as bytes on Waku, we recommend uploading your media to a CDN or a file system like <ahref="https://ipfs.tech/">IPFS</a> and then sharing the corresponding URL via Waku.</p></div></div></div>
<divclass="mdx-accordion-item"><inputtype="checkbox"id="accordion-item-12"><divrole="button"class="mdx-accordion-item__header"><labelclass="lsd-typography lsd-typography--h5 mdx-accordion-item__title"for="accordion-item-12">How can I connect to my own node?</label><divclass="mdx-accordion-item__icon"><divclass="icon_S7Kx m_thRi stroke_N8dm"><svgxmlns="http://www.w3.org/2000/svg"width="18"height="18"fill="none"viewBox="0 0 18 18"><pathstroke="#fff"d="M9 17.5V.5M.5 9h17"></path></svg></div></div></div><divclass="mdx-accordion-item__content-wrapper"><divclass="mdx-accordion-item__content"><p>To manually set your own node as a starting point use <ahref="/guides/js-waku/configure-discovery#configure-static-peers">Configure static peers</a>.</p></div></div></div></div><footerclass="theme-doc-footer docusaurus-mt-lg"><divclass="row margin-top--sm theme-doc-footer-edit-meta-row"><divclass="col"><ahref="https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/js-waku/faq.md"target="_blank"rel="noreferrer noopener"class="theme-edit-this-page"><divclass="icon_S7Kx m_thRi"><svgxmlns="http://www.w3.org/2000/svg"width="16"height="16"fill="none"viewBox="0 0 16 16"><pathfill="#fff"fill-rule="evenodd"d="m12.707 2.393.9.9c.526.52.526 1.367 0 1.887L4.787 14H2v-2.787l6.933-6.94 1.887-1.88c.52-.52 1.367-.52 1.887 0M3.333 12.667l.94.04 6.547-6.554-.94-.94-6.547 6.547z"clip-rule="evenodd"></path></svg></div><spanclass="lsd-typography lsd-typography--body2">Edit this page</span></a></div><divclass="col lastUpdated_JAkA"></div></div></footer></article><navclass="docusaurus-mt-lg pagination-nav"aria-label="Docs pages"><aclass="pagination-nav__link pagination-nav__link--prev"href="/guides/js-waku/manage-filter"><divclass="icon_S7Kx m_thRi"><svgxmlns="http://www.w3.org/2000/svg"width="14"height="14"fill="none"viewBox="0 0 14 14"><pathfill="#fff"d="M11.667 6.417h-7.1L7.83 3.156 7 2.333 2.334 7 7 11.667l.823-.823-3.255-3.26h7.099z"></path></svg></div><spanclass="lsd-typography lsd-typography--body2 pagination-nav__label">Manage Your Filter Subscriptions</span></a></nav></div></div><divclass="gap1_XuuQ"></div></div></div></main></div></div></div><footerclass="footer"><divclass="container container-fluid firstRow_ar1q"><divclass="footer__bottom text--center"><divclass="margin-bottom--sm"><aclass="footerLogoLink_BH7S"href="/"><imgsrc="/theme/image/logo.svg"alt="Waku"class="themedImage_kfRS themedImage--light_BL8e footer__logo"width="22"><imgsrc="/theme/image/logo.svg"alt="Waku"class="themedImage_kfRS themedImage--dark_OvIx footer__logo"width="22"></a></div><divclass="footer__copyright">Waku</div></div><divclass="row footer__links"><divclass="theme-layout-footer-column col footer__col"><divclass="footer__title">Guides</div><ulclass="footer__items clean-list"><liclass="footer__item"><aclass="footer__link-item"href="/guides/nwaku/run-docker-compose">Run a Nwaku Node</a></li><liclass="footer__item"><aclass="footer__link-item"href="/guides/js-waku/">JavaScript Waku SDK</a></li></ul></div><divclass="theme-layout-footer-column col footer__col"><divclass="footer__title">Community</div><ulclass="footer__items clean-list"><liclass="footer__item"><ahref="https://twitter.com/waku_org/"target="_blank"rel="noopener noreferrer"class="footer__link-item">X<svgwidth="13.5"height="13.5"aria-hidden="true"class="iconExternalLink_nPIU"><usehref="#theme-svg-external-link"></use></svg></a></li><liclass="footer__item"><ahref="https://discord.waku.org/"target="_blank"rel="noopener noreferrer"class="footer__link-item">Discord<svgwidth="13.5"height="13.5"aria-hidden="true"class="iconExternalLink_nPIU"><usehref="#theme-svg-external-link"></use></svg></a></li><liclass="footer__item"><ahref="https://github.com/waku-org/"target="_blank"rel="noopener noreferrer"class="footer__link-item">GitHub<svgwidth="13.5"height="13.5"aria-hidden="true"class="iconExternalLink_nPIU"><usehref="#theme-svg-external-link"></use></svg></a></li><liclass="footer__item"><ahref="https://w