<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/build/javascript/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/build/javascript/faq"><linkdata-rh="true"rel="alternate"href="https://docs.waku.org/build/javascript/faq"hreflang="en-GB"><linkdata-rh="true"rel="alternate"href="https://docs.waku.org/build/javascript/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="/build/javascript/#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="/build/javascript/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="/build/javascript/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="/build/javascript/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="/build/javascript/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="/build/javascript/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="/build/javascript/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="/build/javascript/run-waku-nodejs">certain limitations</a>, we recommend running <ahref="/run-node/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="/build/javascript/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="/build/javascript/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>