PageSourceSearch

https://www.pubnub.com/

html pubnub.com collected 2026-10-01 09:08:49 UTC 375,722 bytes, 2,459 lines download raw bytes

1<!DOCTYPE html><html lang="en" class="__variable_0f4201 __variable_d31242"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/7d8c7b021bdcbfbb-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/85a55989c080432c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/b4453bb1af72eecd-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bfb532d5b1e18ccb-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/d7b08b16873350f4-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e7c031161b7acec9-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/f77b4e4ded2b5d1a-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/fab5947736a1b125-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/pubnub_logo.svg"/><link rel="preload" as="image" href="https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fbe6afb232f174eadb71b2106718f3c6a"/><link rel="preload" as="image" href="/icons/sdks/js.svg"/><link rel="preload" as="image" href="/icons/sdks/java.svg"/><link rel="preload" as="image" href="/icons/sdks/unreal.svg"/><link rel="preload" as="image" href="/icons/sdks/kotlin.svg"/><link rel="preload" as="image" href="/icons/sdks/ruby.svg"/><link rel="preload" as="image" href="/icons/sdks/dotnet.svg"/><link rel="preload" as="image" href="/icons/sdks/swift.svg"/><link rel="preload" as="image" href="/icons/sdks/c.svg"/><link rel="stylesheet" href="/_next/static/css/ff54f34926f8dbca.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/10ea482466c0d122.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-b9f1564d49faa65c.js"/>
1<script src="/_next/static/chunks/fd9d1056-a8cbf7bcc58a7dd6.js" async=""></script>
1<script src="/_next/static/chunks/1099-db30ebf31e2e633a.js" async=""></script>
1<script src="/_next/static/chunks/main-app-be19fbf123d7f8af.js" async=""></script>
1<script src="/_next/static/chunks/7980-42f6aa9f96059933.js" async=""></script>
1<script src="/_next/static/chunks/app/error-486df153916b040c.js" async=""></script>
1<script src="/_next/static/chunks/4688-817ee60e607f64d6.js" async=""></script>
1<script src="/_next/static/chunks/7152-25220acc710e200d.js" async=""></script>
1<script src="/_next/static/chunks/app/layout-a3c23384516b2ace.js" async=""></script>
1<script src="/_next/static/chunks/app/global-error-fb42b499952841de.js" async=""></script>
1<script src="/_next/static/chunks/a90da667-4bc8929f7c1bab85.js" async=""></script>
1<script src="/_next/static/chunks/52774a7f-b863e6e6bb50ffa1.js" async=""></script>
1<script src="/_next/static/chunks/7ce798d6-a8f72c94b5f085dd.js" async=""></script>
1<script src="/_next/static/chunks/fb03831a-8388fcf59ef37390.js" async=""></script>
1<script src="/_next/static/chunks/555-8251e49e16bc4a37.js" async=""></script>
1<script src="/_next/static/chunks/8715-f2ebdc787a5c1145.js" async=""></script>
1<script src="/_next/static/chunks/2893-b63bb2e09eb13db4.js" async=""></script>
1<script src="/_next/static/chunks/457-e7fbfa34b9c40750.js" async=""></script>
1<script src="/_next/static/chunks/231-068ec427584aebf2.js" async=""></script>
1<script src="/_next/static/chunks/5378-e02a60bd77533d64.js" async=""></script>
1<script src="/_next/static/chunks/3543-f9abf3c32c71210e.js" async=""></script>
1<script src="/_next/static/chunks/7879-f28cec6628e1206d.js" async=""></script>
1<script src="/_next/static/chunks/6672-2e79a0596ee5ce52.js" async=""></script>
1<script src="/_next/static/chunks/1835-2760fa4075eadd02.js" async=""></script>
1<script src="/_next/static/chunks/718-04f54b39b94fe80e.js" async=""></script>
1<script src="/_next/static/chunks/app/%5B%5B...page%5D%5D/page-30074c95c69c7d6f.js" async=""></script>
1<link rel="preload" as="image" href="/icons/sdks/unity.svg"/><link rel="preload" as="image" href="/icons/sdks/python.svg"/><link rel="preload" as="image" href="/icons/sdks/php.svg"/><link rel="preload" as="image" href="/icons/sdks/go.svg"/><link rel="preload" as="image" href="/icons/sdks/rust.svg"/><link rel="preload" as="image" href="/icons/sdks/ios.svg"/><link rel="preload" as="image" href="/icons/sdks/rest.svg"/><link rel="preload" as="image" href="/icons/sdks/dart.svg"/><link rel="preload" as="image" href="/pubnub_logo_white.png"/><link rel="preload" as="image" href="https://cdn.builder.io/api/v1/pixel?apiKey=0ee4d50ccdc943eda308d1099e2b1915"/><meta name="apple-mobile-web-app-title" content="pubnub"/><link rel="preload" href="/fonts/material-icons/material-icons-outlined.woff2" as="font" type="font/woff2" crossorigin=""/><title>Build, manage, &amp; optimize real-time apps at scale | PubNub</title><meta name="description" content="Power your real-time app with PubNub - the world&#x27;s largest pub/sub network. Scale to 3 trillion API calls/month, with &lt;30ms global delivery. Start building now!"/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><link rel="canonical" href="https://www.pubnub.com/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/ai/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/blocks-ai/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/chat/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/collaboration/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/customer-support/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/data-streaming/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/decision-intelligence/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/digital-commerce/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/digital-health/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/fintech/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/gaming/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/geolocation/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/guides/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/illuminate/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/iot/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/live-streaming/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/news/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/product-updates/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/portal/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/push-notifications/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/real-time/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/audience-engagement/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/transport-and-logistics/"/><link rel="alternate" type="application/rss+xml" href="https://www.pubnub.com/feed/blog/category/casino/"/><meta name="google-site-verification" content="ArwFoyb7cydmFrAxPmImA0ZMQD2Ka1VcBFuwM4J0iUk"/><meta name="yandex-verification" content="7655cf9b8c32273d"/><meta name="fb:app_id" content="1699513143641850"/><meta name="globalsign-domain-verification" content="8DqtGiinnsWmU7Jx8drsM7aOLda0Uy2HVd8iE4qWWF"/><meta property="og:title" content="The complete real-time developer platform"/><meta property="og:description" content="Real-time APIs to build engaging remote experiences"/><meta property="og:url" content="https://www.pubnub.com/"/><meta property="og:site_name" content="PubNub"/><meta property="og:image" content="https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fba12fb30a1c04b2fb59076c3143c75eb"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@pubnub"/><meta name="twitter:creator" content="@pubnub"/><meta name="twitter:title" content="The complete real-time developer platform"/><meta name="twitter:description" content="Leverage the power of hosted real-time APIs to build engaging remote experiences"/><meta name="twitter:image" content="https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fba12fb30a1c04b2fb59076c3143c75eb"/><link rel="icon" href="/favicon/favicon-32x32.png" type="image/png" sizes="32x32"/><link rel="icon" href="/favicon/favicon-16x16.png" type="image/png" sizes="16x16"/><link rel="icon" href="/favicon/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/favicon/apple-touch-icon.png" sizes="180x180"/><link rel="icon" href="/favicon/favicon.ico" sizes="16x16"/><meta name="next-size-adjust"/>
1<script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script>
1</head><body class="__className_0f4201"><div class="hidden lg:block bg-navy-100" style="min-height:42px;visibility:hidden;opacity:0;transition:opacity 150ms ease-in-out"><div class="max-w-[1176px] mx-auto px-[16px] py-[8px] text-neutral-900 flex items-center justify-center space-x-[12px] leading-[20px] text-[14px] xl:max-w-[calc(100%-128px)] xl:px-0"><a class="bg-black uppercase text-neutral-50 inline-block px-[7px] pt-[6px] pb-[5px] rounded-full leading-[13px] text-[14px] border border-neutral-700" href="https://blocks.ai/" title="Introducing Blocks.ai" target="_blank">Introducing Blocks.ai</a><a class="hover:underline" href="https://blocks.ai/" title="Introducing Blocks.ai" target="_blank">The control plane and networking layer for AI agents. </a><svg xmlns="http://www.w3.org/2000/svg" class="ml-10 cursor-pointer" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.29289 5.29289C5.68342 4.90237 6.31658 4.90237 6.70711 5.29289L12 10.5858L17.2929 5.29289C17.6834 4.90237 18.3166 4.90237 18.7071 5.29289C19.0976 5.68342 19.0976 6.31658 18.7071 6.70711L13.4142 12L18.7071 17.2929C19.0976 17.6834 19.0976 18.3166 18.7071 18.7071C18.3166 19.0976 17.6834 19.0976 17.2929 18.7071L12 13.4142L6.70711 18.7071C6.31658 19.0976 5.68342 19.0976 5.29289 18.7071C4.90237 18.3166 4.90237 17.6834 5.29289 17.2929L10.5858 12L5.29289 6.70711C4.90237 6.31658 4.90237 5.68342 5.29289 5.29289Z" fill="#0F1729"></path></svg></div></div><div class="z-[200] bg-white shadow-sm border-b border-neutral-200 sticky top-[0px]"><div class="lg:relative max-w-[1176px] mx-auto px-[16px] xl:max-w-[calc(100%-128px)] xl:px-0"><div class="static flex justify-between items-center py-3 lg:py-0 md:justify-start"><div class="flex justify-start items-center lg:pr-4" style="height:42px"><a href="/" class="pn-logo" title="PubNub secure global data stream network and easy to use API for realtime Apps" data-tracking-id="header:logo"><img src="/pubnub_logo.svg" width="100" height="auto" alt="PubNub"/></a></div><nav class="navigation hidden lg:block"><ul class="flex space-x-[8px] my-[16px]"><li class="group"><span class="block px-[12px] py-[10px] text-neutral-900 cursor-pointer rounded-[6px] group-hover:bg-navy-100 group-hover:bg-navy-100">Platform</span><div class="hidden group-hover:block absolute pt-[4px] left-0"><div class="bg-white border border-navy-200 shadow-lg p-[24px] rounded-[12px] flex space-x-[20px]"><a href="/products/pubnub-platform/" class="bg-[url(&quot;/img/highlightBg.jpg&quot;)] bg-no-repeat bg-size-[100px] bg-cover w-[340px] rounded-[8px] min-h-full p-[24px] flex justify-start relative shadow-md transition-all duration-300 hover:opacity-90"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-300">info</span><div class="text-neutral-50 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Platform Overview</span><span class="block text-neutral-200 font-[400] text-[14px] leading-[20px]">Your platform for interactive experiences</span></div><span class="flex absolute bottom-[24px] left-[60px] text-neutral-50 font-[400] text-[14px] leading-[20px]">Explore our platform<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M8.08751 5L6.91251 6.175L10.7292 10L6.91251 13.825L8.08751 15L13.0875 10L8.08751 5Z" fill="#FAFAFA"></path></svg></span></a><div class=""><ul class="space-y-[16px]"><li><a href="/real-time-messaging-and-events/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">widgets</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Core Services</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Real-time communication with low-latency</span></div></a></li><li><a href="/global-network-infrastructure/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">public</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Global Network</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">
1Secure, Scalable Infrastructure</span></div></a></li><li><a href="/decision-intelligence-software/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">ads_click</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Decision Intelligence - Overview</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Power Decisions with Real-Time Intelligence</span></div></a><ul class="space-y-[16px] mt-[16px] pl-[32px]"><li><a href="/illuminate/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">lightbulb</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]">Illuminate<span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Turn Live User Data into Real-Time Results</span></div></a></li><li><a href="/products/pubnub-insights/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">insights</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]">Insights<span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Visibility into Real-Time App’s Performance</span></div></a></li></ul></li></ul></div><div class=""><ul class="space-y-[16px]"><li><a href="/integrations/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">settings</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Integrations</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Integrate best-in-class third-party services </span></div></a></li><li><a href="/ai/generative-ai/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">auto_awesome</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Generative AI</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Build AI-native, real-time apps</span></div></a></li><li><a href="/networking-mcp-server/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">storage</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">MCP Server</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Unlock real-time code with your AI</span></div></a></li><li><a href="https://blocks.ai/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><img src="https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fbe6afb232f174eadb71b2106718f3c6a" alt="" aria-hidden="true" class="w-[24px] h-[24px] object-contain"/><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center"> Blocks.ai</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">The control plane and networking layer for AI agents</span></div></a></li></ul></div></div></div></li><li class="group"><span class="block px-[12px] py-[10px] text-neutral-900 cursor-pointer rounded-[6px] group-hover:bg-navy-100 group-hover:bg-navy-100">Solutions</span><div class="hidden group-hover:block absolute pt-[4px] left-0"><div class="bg-white border border-navy-200 shadow-lg p-[24px] rounded-[12px] flex space-x-[20px]"><div class=""><div class="uppercase text-[14px] font-[600] leading-[20px] text-cherry inline-block mb-[16px] ">By Use Case</div><ul class="space-y-[16px]"><li><a href="/solutions/chat/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">forum</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Chat</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">
1Provide chat experiences your users need</span></div></a></li><li><a href="/solutions/live-audience-engagement/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">celebration</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Live Audience Engagement</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">From live events to social workouts</span></div></a></li><li><a href="/solutions/collaboration-software/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">groups</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Multi-User Collaboration</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Bring the team together</span></div></a></li><li><a href="/solutions/iot-device-control/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">settings_remote</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">IoT Device Control</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Build an IoT platform &amp; manage devices</span></div></a></li><li><a href="/solutions/data-streaming/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">smart_display</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Real-Time Workflows</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Stream Data. Orchestrate Actions</span></div></a></li><li><a href="/solutions/geolocation/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">location_on</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Geolocation &amp; Dispatch</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Geolocation APIs to track your fleet’s cars</span></div></a></li></ul></div><div class=""><div class="uppercase text-[14px] font-[600] leading-[20px] text-cherry inline-block mb-[16px] opacity-0">By Use Case</div><ul class="space-y-[16px]"><li><a href="/solutions/edge-messaging/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">share</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Edge Messaging</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Never worry about latency issues again</span></div></a></li><li><a href="/event-driven-architecture/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">rocket_launch</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Event-Driven Architecture</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Launch faster with Events, not endpoints</span></div></a></li><li><a href="/liveops-cloud-platform/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">tips_and_updates</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">LiveOps</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Real-time decisions, zero lag</span></div></a></li><li><a href="/solutions/gamification/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">toys</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Gamification</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Drive engagement in real time</span></div></a></li><li><a href="/solutions/ai-moderation/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">auto_awesome</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Auto-Moderation</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">AI-powered message filtering</span></div></a></li><li><a href="/solutions/app-optimization/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 min-w-[324px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">moving</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">App Optimization</span><span class="block text-neutral-700 font-[400] text-[14px] leading-[20px]">Maximize Efficiency – Made Easy</span></div></a></li></ul></div><div class="pl-[20px] border-l border-navy-200"><div class="uppercase text-[14px] font-[600] leading-[20px] text-cherry inline-block mb-[16px] ">By Industry</div><ul class="space-y-[16px]"><li><a href="/solutions/sports-media/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">play_circle</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Sports, Media &amp; Entertainment</span></div></a></li><li><a href="/solutions/digital-health/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">monitor_heart</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Digital Healthcare</span></div></a></li><li><a href="/solutions/igaming-betting-casino/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">monetization_on</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">iGaming, Betting &amp; Casino</span></div></a></li><li><a href="/solutions/gaming/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">sports_esports</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Gaming</span></div></a></li><li><a href="/solutions/ecommerce/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">shopping_bag</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">eCommerce</span></div></a></li><li><a href="/solutions/fintech/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">memory</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">FinTech</span></div></a></li><li><a href="/solutions/transport-delivery/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">local_shipping</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Transport, Delivery &amp; Logistics</span></div></a></li><li><a href="/solutions/call-center-automation/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">support_agent</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Call Centers &amp; Customer Care</span></div></a></li><li><a href="/solutions/social/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">groups</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Social &amp; Lifestyle</span></div></a></li><li><a href="/solutions/enterprise/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">cloud</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Enterprise SaaS</span></div></a></li></ul></div></div></div></li><li class="group"><a href="/pricing/" class="block px-[12px] py-[10px] text-neutral-900 cursor-pointer rounded-[6px] group-hover:bg-navy-100" data-tracking-id="top-navigation:pricing">Pricing</a></li><li class="group"><span class="block px-[12px] py-[10px] text-neutral-900 cursor-pointer rounded-[6px] group-hover:bg-navy-100 group-hover:bg-navy-100">Developer</span><div class="hidden group-hover:block absolute pt-[4px] "><div class="bg-white border border-navy-200 shadow-lg p-[24px] rounded-[12px] flex space-x-[20px]"><div class=""><ul class="space-y-[16px]"><li><a href="/developers/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">code</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Developer Home</span></div></a></li><li><a href="/docs" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">description</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Documentation</span></div></a></li><li><a href="/tutorials/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">play_circle</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Tutorials</span></div></a></li><li><a href="/tour/introduction/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">book</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">
1Tour</span></div></a></li><li><a href="https://status.pubnub.com/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">public</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Network</span></div></a></li></ul></div><div class="min-h-full flex flex-col pl-[24px] border-l border-navy-200"><a href="/docs/sdks" class="flex justify-start hover:bg-navy-100 rounded-[6px] px-[8px] py-[4px]"><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">build</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">SDKs</span></div></a><div class="grid grid-cols-4 gap-[8px] pt-[16px]"><a href="https://www.pubnub.com/docs/sdks/javascript" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:javascript-sdk"><img src="/icons/sdks/js.svg" alt="JavaScript SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/java" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:java-sdk"><img src="/icons/sdks/java.svg" alt="Java SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/unreal" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:unreal-engine-sdk"><img src="/icons/sdks/unreal.svg" alt="Unreal Engine SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/kotlin" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:kotlin-sdk"><img src="/icons/sdks/kotlin.svg" alt="Kotlin SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/ruby" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:ruby-sdk"><img src="/icons/sdks/ruby.svg" alt="Ruby SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/c-sharp" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:c-sdk"><img src="/icons/sdks/dotnet.svg" alt="C# SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/swift" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:swift-sdk"><img src="/icons/sdks/swift.svg" alt="Swift SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/c" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:c-sdk"><img src="/icons/sdks/c.svg" alt="C SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/unity" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:unity-sdk"><img src="/icons/sdks/unity.svg" alt="Unity SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/python" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:python-sdk"><img src="/icons/sdks/python.svg" alt="Python SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/php" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:php-sdk"><img src="/icons/sdks/php.svg" alt="PHP SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/go" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:go-sdk"><img src="/icons/sdks/go.svg" alt="GO SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/rust" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:rust-sdk"><img src="/icons/sdks/rust.svg" alt="Rust SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/objective-c" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:objective-c-sdk"><img src="/icons/sdks/ios.svg" alt="Objective-C SDK" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/rest-api" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:rest-api"><img src="/icons/sdks/rest.svg" alt="REST API" width="24" height="24"/></a><a href="https://www.pubnub.com/docs/sdks/dart" class="block rounded-[8px] p-[8px] border border-neutral-200 bg-white hover:bg-navy-100 shadow-md transform transition-all duration-300" data-tracking-id="header:dart-sdk"><img src="/icons/sdks/dart.svg" alt="Dart SDK" width="24" height="24"/></a></div></div></div></div></li><li class="group"><span class="block px-[12px] py-[10px] text-neutral-900 cursor-pointer rounded-[6px] group-hover:bg-navy-100 group-hover:bg-navy-100">Resources</span><div class="hidden group-hover:block absolute pt-[4px] "><div class="bg-white border border-navy-200 shadow-lg p-[24px] rounded-[12px] flex space-x-[20px]"><div class=""><ul class="space-y-[16px]"><li><a href="/compare/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">emoji_events</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Why PubNub Wins</span></div></a></li><li><a href="/blog/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">forum</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Blog</span></div></a></li><li><a href="/demos/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">play_circle</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Demos</span></div></a></li><li><a href="/customers/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">people</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Customers</span></div></a></li><li><a href="/ebook/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">book</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">eBooks</span></div></a></li><li><a href="/company/careers/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">star_outline</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">Careers</span></div></a></li><li><a href="/company/" class="flex rounded-[6px] px-[8px] py-[4px] hover:bg-navy-100 "><span class="material-icons-outlined w-[24px] h-[24px] text-navy-400">info</span><div class="text-neutral-900 font-[700] text-[18px] leading-[28px] pl-[12px]"><span class="flex items-center">About Us</span></div></a></li></ul></div></div></div></li></ul></nav><div class="md:hide flex-grow"></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="w-[24px] mr-[10px]"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div><div class="hidden lg:flex items-center justify-end"><a href="/company/contact-sales/" class="whitespace-nowrap inline-flex items-center justify-center px-2 py-1 border rounded-md shadow-sm text-base border-cherry bg-cherry text-neutral-50 hover:bg-red-800 hover:border-red-800" data-tracking-id="header:contact-sales">Contact Sales</a><a href="https://admin.pubnub.com/register" class="ml-2 whitespace-nowrap inline-flex items-center justify-center px-2 py-1 shadow-sm text-base font-medium text-navy border border-navy-300 bg-neutral-50 hover:bg-navy-300 rounded-md hover:border-navy" data-tracking-id="header:try-for-free">Try for free</a><a href="https://admin.pubnub.com/login" class="ml-2 whitespace-nowrap inline-flex items-center justify-center px-2 py-1 shadow-sm text-base font-medium text-navy border border-navy-300 bg-neutral-50 hover:bg-navy-300 rounded-md hover:border-navy" data-tracking-id="header:login">Login</a></div><span class="cursor-pointer lg:hidden"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></span></div></div></div><main><div class="builder-component builder-component-130f5d31390f472d81930
1d8501123303" data-name="page" data-source="Rendered by Builder.io"><div class="builder-content" builder-content-id="130f5d31390f472d81930d8501123303" builder-model="page"><div data-builder-component="page" data-builder-content-id="130f5d31390f472d81930d8501123303"><style data-emotion-css="h47494">.css-h47494{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}</style><div class="builder-blocks css-h47494" builder-type="blocks"><style data-emotion-css="5ftfx8">.css-5ftfx8.builder-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;box-sizing:border-box;margin-top:0px;}</style><div class="builder-block builder-e41f3071a4d2428a8db358523c46c3a5 builder-has-component css-5ftfx8" builder-id="builder-e41f3071a4d2428a8db358523c46c3a5"><header data-screen-label="Hero" class="relative z-[1] overflow-hidden bg-navy-950 px-5 md:px-7 xl:px-8"><div class="mx-auto flex max-w-[1220px] flex-col items-center pb-4 pt-8 text-center sm:pt-10"><div class="flex flex-col items-center gap-3 sm:flex-row sm:flex-wrap sm:justify-center sm:gap-2"><div class="flex flex-wrap items-center justify-center gap-2"><a href="#fourteen-years" class="inline-flex items-center gap-1.5 rounded-full bg-white/[.08] px-3.5 py-2 text-[14px] font-[600] uppercase leading-none tracking-[0.04em] text-white/[.82] whitespace-nowrap no-underline transition-colors hover:bg-white/[.14] focus-visible:bg-white/[.14]">14 years of real-time ops<span class="font-[500] tracking-[0.02em] text-white/50">since 2012</span></a></div><div class="inline-flex items-center" aria-label="SOC 2, SOC 3, HIPAA, GDPR, CCPA"><span class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center" title="SOC 2" aria-label="SOC 2"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[14px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">SOC 2</span></span><span class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center" title="SOC 3" aria-label="SOC 3"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[14px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">SOC 3</span></span><span class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center" title="HIPAA" aria-label="HIPAA"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[14px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">HIPAA</span></span><span class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center" title="GDPR" aria-label="GDPR"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[14px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">GDPR</span></span><span class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center" title="CCPA" aria-label="CCPA"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[14px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">CCPA</span></span></div></div><h1 class="mt-5 max-w-[920px] text-[clamp(28px,7vw,44px)] font-[800] leading-[1.14] tracking-[-0.02em] text-white lg:mt-6 lg:text-[52px] lg:leading-[1.12]">
1Global infrastructure for<br/>real-time, interactive applications</h1><p class="mt-[18px] max-w-[720px] text-[17px] leading-[1.6] text-white/[.68] lg:mt-[22px] lg:text-[18px]">You build the application. We operate the global network underneath it: pub/sub messaging, presence, data, logic, and security, at scale.</p><div class="mt-8 flex items-center justify-center gap-3 lg:mt-9"><a href="https://admin.pubnub.com/register" class="flex-1 sm:flex-none min-w-0 text-center whitespace-nowrap rounded-[8px] px-3 py-[14px] sm:px-7 text-[16px] font-[700] no-underline transition-colors cursor-pointer bg-red-600 text-white hover:bg-red-800">Start Building</a><a href="https://www.pubnub.com/docs/" target="_blank" rel="noreferrer" class="flex-1 sm:flex-none min-w-0 text-center whitespace-nowrap rounded-[8px] px-3 py-[14px] sm:px-7 text-[16px] font-[700] no-underline transition-colors cursor-pointer bg-white text-navy-900 hover:bg-navy-200">Read the docs</a></div></div></header></div><div class="builder-block builder-1f7547a0610a46f299fa341aff696608 builder-has-component css-5ftfx8" builder-id="builder-1f7547a0610a46f299fa341aff696608"><div class="min-[1246px]:hidden"><section data-screen-label="Pub/Sub animation" class="bg-navy-950 text-white"><div class="mx-auto w-full max-w-[860px] px-5"><style>
2.pn-mglobe-visual { position: relative; width: 100%; max-width: 620px; height: 186px; margin: auto; }
3@media (min-width: 641px) {
4  .pn-mglobe-visual { max-width: 460px; height: auto; aspect-ratio: 360 / 190; }
5}
6.pn-mglobe-payload {
7  position: absolute; top: 33%; left: 50%; transform: translateX(-50%);
8  width: max-content; max-width: 100%; text-align: center;
9  font-size: 0.875rem; line-height: 1.4; font-variant-numeric: tabular-nums;
10  padding: 10px 14px; border: 1px solid #344059; border-radius: 8px; background: #11182b; color: #fff;
11}
12.pn-mglobe-payload span { color: #8be1b1; }
13.pn-mglobe-visual.is-running .pn-mglobe-route { stroke-dasharray: 4 10; animation: pn-mglobe-send 2.2s linear infinite; }
14@keyframes pn-mglobe-send { to { stroke-dashoffset: -84; } }
15@media (prefers-reduced-motion: reduce) { .pn-mglobe-visual.is-running .pn-mglobe-route { animation-duration: 4.4s; } }
16</style><div data-markdown-ignore="true" class="pn-mglobe-visual"><svg viewBox="0 0 360 190" role="img" aria-label="A message fans out across the globe to four subscribers" style="width:100%;height:100%"><defs><linearGradient id="pn-mglobe-fade" x2="0" y2="1"><stop stop-color="#637293" stop-opacity=".65"></stop><stop offset="1" stop-color="#637293" stop-opacity=".06"></stop></linearGradient></defs><g fill="none" stroke="url(#pn-mglobe-fade)" stroke-width="1"><path d="M20 185a160 160 0 0 1 320 0"></path><ellipse cx="180" cy="184" rx="34" ry="158"></ellipse><ellipse cx="180" cy="184" rx="66" ry="158"></ellipse><ellipse cx="180" cy="184" rx="108" ry="158"></ellipse><ellipse cx="180" cy="74" rx="103" ry="16"></ellipse><ellipse cx="180" cy="105" rx="137" ry="20"></ellipse><ellipse cx="180" cy="145" rx="156" ry="24"></ellipse><ellipse cx="180" cy="184" rx="160" ry="28"></ellipse></g><g fill="none" stroke="#a4b6dc" stroke-width="1.5" opacity=".75"><path d="M180 150Q120 32 72 91" class="pn-mglobe-route"></path><path d="M180 150Q175 40 221 51" class="pn-mglobe-route"></path><path d="M180 150Q285 73 310 140" class="pn-mglobe-route"></path><path d="M180 150Q112 120 47 166" class="pn-mglobe-route"></path></g><g fill="#f97075"><circle cx="72" cy="91" r="3"></circle><circle cx="221" cy="51" r="3"></circle><circle cx="310" cy="140" r="3"></circle><circle cx="47" cy="166" r="3"></circle></g><circle cx="180" cy="150" r="7" fill="#CD2026"></circle><circle cx="180" cy="150" r="15" fill="none" stroke="#CD2026" opacity=".4"></circle></svg><span class="pn-mglobe-payload">{ goal: 1 }<!-- --> <span>→ delivered</span></span></div></div></section></div><div class="hidden min-[1246px]:block"><section data-screen-label="Pub/Sub animation" class="relative z-0 -mt-9 bg-navy-950"><div class="mx-auto max-w-[1107px] px-8"><div aria-label="PubSub animation — one publish reaching four subscribers" role="region" style="position:relative;overflow:hidden;aspect-ratio:3.1 / 1;-webkit-mask-image:linear-gradient(#000 78%, transparent);mask-image:linear-gradient(#000 78%, transparent)"><div style="position:absolute;left:0;top:0;width:100%;aspect-ratio:16 / 9;background:#0A0E23"></div></div></div></section></div></div><div class="builder-block builder-9052a3bbc53449189956b2264aea9422 builder-has-component css-5ftfx8" builder-id="builder-9052a3bbc53449189956b2264aea9422"><section data-screen-label="Proof strip" class="border-t border-white/[.06] px-5 md:px-7 xl:px-8" style="background:linear-gradient(180deg,#0A0E23,#0C1129)"><div class="mx-auto max-w-[1220px] pb-9 pt-8 sm:pb-10 sm:pt-9"><div class="flex flex-col gap-7"><div class="flex"><div class="box-border min-w-0 flex-1 text-center  pr-5"><div data-markdown-ignore="true" class="whitespace-nowrap font-mono text-[24px] font-[700] tabular-nums tracking-[.02em] text-white">0</div><div data-markdown-ignore="true" class="mt-1.5 font-mono text-[14px] leading-[1.35] tracking-[.1em] text-white/[.45]">MESSAGES DELIVERED SINCE YOU ARRIVED</div></div><div class="box-border min-w-0 flex-1 text-center border-l border-white/10 pl-5 "><div class="whitespace-nowrap font-mono text-[24px] font-[700] tabular-nums tracking-[.02em] text-white">99.999%</div><div class="mt-1.5 font-mono text-[14px] leading-[1.35] tracking-[.1em] text-white/[.45]">UPTIME SLA</div></div></div><div class="flex"><div class="box-border min-w-0 flex-1 text-center  pr-5"><div class="whitespace-nowrap font-mono text-[24px] font-[700] tabular-nums tracking-[.02em] text-white">&lt;500µs</div><div class="mt-1.5 font-mono text-[14px] leading-[1.35] tracking-[.1em] text-white/[.45]">IN-REGION OVERHEAD</div></div><div class="box-border min-w-0 flex-1 text-center border-l border-white/10 pl-5 pr-5"><div class="whitespace-nowrap font-mono text-[24px] font-[700] tabular-nums tracking-[.02em] text-white">1B+</div><div class="mt-1.5 font-mono text-[14px] leading-[1.35] tracking-[.1em] text-white/[.45]">ACTIVE DEVICES</div></div><div class="box-border min-w-0 flex-1 text-center border-l border-white/10 pl-5 "><div class="whitespace-nowrap font-mono text-[24px] font-[700] tabular-nums tracking-[.02em] text-white">50+</div><div class="mt-1.5 font-mono text-[14px] leading-[1.35] tracking-[.1em] text-white/[.45]">SDKS</div></div></div></div><div class="mt-[34px] flex flex-wrap items-center gap-x-7 gap-y-4"><span class="shrink-0 font-mono text-[14px] tracking-[.18em] text-white/[.35]">POWERING</span><div class="min-w-0 flex-1"><div class="overflow-hidden" style="mask-image:linear-gradient(to right, transparent, #000 6%, #000 94%, transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 6%, #000 94%, transparent)"><div class="overflow-hidden items-center"><div class="flex w-max" style="gap:56px;flex-direction:row;transform:none"><span class="flex items-center"><img src="/logos/customers/dazn.svg" alt="DAZN" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center">
16<img src="/logos/customers/swiggy.svg" alt="Swiggy" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/ticketmaster.svg" alt="Ticketmaster" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/autodesk.svg" alt="Autodesk" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/logitech.svg" alt="Logitech" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/docusign.svg" alt="DocuSign" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/yelp.svg" alt="Yelp" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/scopely.svg" alt="Scopely" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/gcash.svg" alt="GCash" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/acs.svg" alt="ACS" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/talk-shop-live.svg" alt="Talk Shop Live" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><div data-markdown-ignore="true" aria-hidden="true" style="display:contents"><span class="flex items-center"><img src="/logos/customers/dazn.svg" alt="DAZN" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/swiggy.svg" alt="Swiggy" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/ticketmaster.svg" alt="Ticketmaster" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/autodesk.svg" alt="Autodesk" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/logitech.svg" alt="Logitech" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/docusign.svg" alt="DocuSign" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/yelp.svg" alt="Yelp" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/scopely.svg" alt="Scopely" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/gcash.svg" alt="GCash" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/acs.svg" alt="ACS" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span><span class="flex items-center"><img src="/logos/customers/talk-shop-live.svg" alt="Talk Shop Live" loading="lazy" class="h-[90px] w-auto max-w-[153px] object-contain opacity-55 transition hover:opacity-100"/></span></div></div></div></div></div></div></div></section></div>
16<div class="builder-block builder-20ce7fc4c4f240aaaca7d35a50d2beb5 builder-has-component css-5ftfx8" builder-id="builder-20ce7fc4c4f240aaaca7d35a50d2beb5"><section data-screen-label="Platform architecture" class="relative z-[1] rounded-t-[24px] bg-navy-50 px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><div class="mx-auto max-w-[1220px]"><div class="max-w-[720px]"><div class="text-left "><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-navy-900 ">The PubNub platform, detailed.</h2></div><p class="mt-4 max-w-[680px] text-[16px] leading-[24px] text-[#5A5E75]">Explore the PubNub platform, starting with Programmable Pub/Sub. From there, investigate all of the PubNub platform features to build your real-time application.</p></div><div data-markdown-ignore="true" class="mt-11 hidden gap-8 xl:grid xl:grid-cols-2"><div><div class="relative cursor-pointer rounded-[18px] border-[2.5px] border-dashed px-4 pb-4 pt-[22px] transition-colors border-cherry/70 bg-cherry/[.014]"><button type="button" aria-pressed="false" class="absolute -top-[14px] left-5 whitespace-nowrap rounded-full border-[1.5px] border-cherry px-3 py-[5px] text-[14px] font-[700] uppercase leading-[14px] tracking-[0.08em] transition-colors bg-navy-50 text-cherry">06 · SECURITY</button><span class="absolute -top-[8px] right-6 bg-navy-50 px-2 text-[12px] tracking-[0.05em] text-navy-400" style="font-family:&#x27;JetBrains Mono&#x27;, monospace">dev tools &amp; integrations included</span><div class="flex flex-col gap-2"><button type="button" aria-pressed="false" class="flex items-center justify-between gap-4 rounded-[11px] border p-3.5 text-left transition-all border-navy-900/10 bg-white hover:border-navy-900/25"><span class="flex items-start gap-2.5"><span class="mt-0.5 flex-none text-[#8A90A8]"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="14" height="11" rx="1.5"></rect><path d="M6 19h6M9 15v4"></path><rect x="15" y="10" width="7" height="10" rx="1.4"></rect></svg></span><span><span class="block text-[14px] font-[700] uppercase leading-none tracking-[0.08em] text-[#8A90A8]">From your machine</span><span class="mt-1 block text-[18px] font-[800] leading-[28px] text-navy-900">Dev Tools</span></span></span><div class="flex flex-wrap items-center justify-end gap-1.5"><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">SDKs</span><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">MCP</span><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">Skills</span><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">APIs</span></div></button><div class="py-0.5 text-center text-[11px] leading-none text-cherry" aria-hidden="true">▼</div><button type="button" aria-pressed="true" class="relative overflow-hidden rounded-[12px] border-[1.5px] p-5 text-left transition-all border-cherry bg-cherry/[.07]"><span aria-hidden="true" class="pointer-events-none absolute -right-12 -top-16 h-[210px] w-[210px] rounded-full bg-[radial-gradient(circle,rgba(229,20,46,.15),transparent_66%)]"></span><span class="relative flex items-start gap-2.5"><span class="w-[22px] flex-none text-[14px] font-[700] uppercase leading-none tracking-[0.08em] text-cherry">01</span><span><span class="block text-[14px] font-[700] uppercase leading-none tracking-[0.08em] text-cherry">The core</span><span class="mt-1.5 block text-[18px] font-[800] leading-[28px] text-navy-900">Programmable Pub/Sub</span><span class="mt-1.5 block text-[14px] leading-[1.45] text-[#5A5E75]">The heart of PubNub’s technology. Sending and receiving messages between humans, devices, and AIs.</span></span></span></button><div class="grid grid-cols-2 gap-2.5"><button type="button" aria-pressed="false" class="flex w-full items-start gap-2.5 rounded-[11px] border p-3.5 text-left transition-all border-navy-900/10 bg-white hover:border-navy-900/25"><span class="w-[22px] flex-none text-[14px] font-[700] uppercase leading-[28px] tracking-[0.08em] text-cherry">02</span><span class="min-w-0"><span class="block text-[18px] font-[800] leading-[28px] text-navy-900">Presence</span><span class="mt-0.5 block text-[14px] leading-[1.4] text-[#5F6479]">who&#x27;s online, in what state</span></span></button><button type="button" aria-pressed="false" class="flex w-full items-start gap-2.5 rounded-[11px] border p-3.5 text-left transition-all border-navy-900/10 bg-white hover:border-navy-900/25"><span class="w-[22px] flex-none text-[14px] font-[700] uppercase leading-[28px] tracking-[0.08em] text-cherry">03</span><span class="min-w-0"><span class="block text-[18px] font-[800] leading-[28px] text-navy-900">Data storage</span><span class="mt-0.5 block text-[14px] leading-[1.4] text-[#5F6479]">message history, metadata, files</span></span></button><button type="button" aria-pressed="false" class="flex w-full items-start gap-2.5 rounded-[11px] border p-3.5 text-left transition-all border-navy-900/10 bg-white hover:border-navy-900/25"><span class="w-[22px] flex-none text-[14px] font-[700] uppercase leading-[28px] tracking-[0.08em] text-cherry">04</span><span class="min-w-0"><span class="block text-[18px] font-[800] leading-[28px] text-navy-900">Analytics</span><span class="mt-0.5 block text-[14px] leading-[1.4] text-[#5F6479]">historical usage and real-time activity</span></span></button><button type="button" aria-pressed="false" class="flex w-full items-start gap-2.5 rounded-[11px] border p-3.5 text-left transition-all border-navy-900/10 bg-white hover:border-navy-900/25"><span class="w-[22px] flex-none text-[14px] font-[700] uppercase leading-[28px] tracking-[0.08em] text-cherry">05</span><span class="min-w-0"><span class="block text-[18px] font-[800] leading-[28px] text-navy-900">Logic</span><span class="mt-0.5 block text-[14px] leading-[1.4] text-[#5F6479]">interpret and act on messages</span></span></button></div><div class="py-0.5 text-center text-[11px] leading-none text-cherry" aria-hidden="true">▼</div><button type="button" aria-pressed="false" class="flex items-center justify-between gap-4 roun
16ded-[11px] border p-3.5 text-left transition-all border-navy-900/10 bg-white hover:border-navy-900/25"><span class="flex items-start gap-2.5"><span class="mt-0.5 flex-none text-[#8A90A8]"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"></circle><path d="M3 12h18"></path><path d="M12 3c2.5 2.4 4 5.6 4 9s-1.5 6.6-4 9c-2.5-2.4-4-5.6-4-9s1.5-6.6 4-9z"></path></svg></span><span><span class="block text-[14px] font-[700] uppercase leading-none tracking-[0.08em] text-[#8A90A8]">To the outside world</span><span class="mt-1 block text-[18px] font-[800] leading-[28px] text-navy-900">Integrations</span></span></span><div class="flex flex-wrap items-center justify-end gap-1.5"><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">Push</span><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">Events</span><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">Kafka</span><span class="rounded-full px-2 py-[3px] text-[13px] font-[500] leading-none whitespace-nowrap border border-navy-900/[.13] text-[#3F4560]">Webhooks</span></div></button></div></div><div class="mt-2.5 rounded-[18px] border-[1.5px] border-dashed border-cherry/40 px-4 py-3"><button type="button" aria-pressed="false" class="relative flex w-full items-center justify-between gap-4 overflow-hidden rounded-[12px] border bg-[linear-gradient(165deg,#1A2044,#0A0E23_75%)] p-3.5 text-left transition-all border-white/15 hover:border-white/30"><span aria-hidden="true" class="pointer-events-none absolute -left-10 -top-14 h-[200px] w-[200px] rounded-full bg-[radial-gradient(circle,rgba(47,74,245,.28),transparent_66%)]"></span><span class="relative flex flex-none items-start gap-2.5"><span class="w-[22px] flex-none text-[14px] font-[700] uppercase leading-none tracking-[0.08em] text-[#FF7585]">07</span><span><span class="block text-[14px] font-[700] uppercase leading-none tracking-[0.08em] text-[#FF7585]">The operation</span><span class="mt-1 block text-[18px] font-[800] leading-[28px] text-white">Network</span></span></span><span class="relative flex flex-wrap items-center justify-end gap-1.5"><span class="rounded-full border border-white/[.18] px-2 py-[3px] text-[14px] leading-none text-white/[.85] whitespace-nowrap">global network</span><span class="rounded-full border border-white/[.18] px-2 py-[3px] text-[14px] leading-none text-white/[.85] whitespace-nowrap">multi-region</span><span class="rounded-full border border-white/[.18] px-2 py-[3px] text-[14px] leading-none text-white/[.85] whitespace-nowrap">region pinning</span><span class="rounded-full border border-white/[.18] px-2 py-[3px] text-[14px] leading-none text-white/[.85] whitespace-nowrap">99.999% SLA</span><span class="rounded-full bg-cherry px-3 py-[5px] text-[14px] font-[700] leading-none text-white whitespace-nowrap">runs everything above</span></span></button></div></div><div class="xl:sticky xl:top-24 xl:self-start"><div class="relative flex min-h-[775px] flex-col overflow-hidden rounded-[16px] bg-[linear-gradient(165deg,#1A2044,#0A0E23_75%)] p-7 shadow-[0_18px_50px_rgba(10,14,35,.22)]"><span aria-hidden="true" class="pointer-events-none absolute -right-[70px] -top-[70px] h-[230px] w-[230px] rounded-full" style="background:radial-gradient(circle,rgba(229,20,46,.32),transparent 65%)"></span><div class="relative"><div class="text-[14px] font-[700] uppercase tracking-[0.08em] text-white">01 · THE CORE</div><h3 class="mt-2 text-[24px] font-[800] leading-[1.15] tracking-[-0.02em] text-white">Programmable Pub/Sub</h3><p class="mt-2.5 text-[14px] leading-[1.55] text-white/[.62]">The heart of PubNub’s technology — sending and receiving messages between humans, devices, and AIs. Low-latency publish/sub
16scribe you can program: clients publish to named channels, and subscribe to the channels they care about.</p></div><div class="relative mt-6 flex flex-1 flex-col"><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white/[.06]"><div class="text-[14px] font-[700] text-white">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-white/70">Typing indicators, read receipts, and reactions in a chat app.</div></div><div class="rounded-[10px] px-4 py-3 bg-white/[.06]"><div class="text-[14px] font-[700] text-white">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-white/10"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-white">Channels</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-white/55">A route clients join — named on the fly, never provisioned</span></div><div class="flex items-baseline gap-4 py-2 border-b border-white/10"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-white">Subscriptions</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-white/55">One connection, many channels, one set of listeners</span></div><div class="flex items-baseline gap-4 py-2 border-b border-white/10"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-white">Message Actions</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-white/55">Reactions, receipts, and edits on a sent message</span></div><div class="flex items-baseline gap-4 py-2 border-b border-white/10"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-white">Signals</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-white/55">Cheap high-frequency updates like typing indicators</span></div><div class="flex items-baseline gap-4 py-2 border-b border-white/10"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-white">Message types</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-white/55">Categorize the traffic that shares a channel</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-white">Channel Groups</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-white/55">Subscribe to thousands of channels in one call</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white/[.06]"><div class="text-[14px] font-[700] text-white">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-white/70">Ordered delivery, catch-up after reconnect, and fan-out at scale</div></div><pre class="mt-6 overflow-x-auto whitespace-pre-wrap break-words rounded-[8px] border border-white/10 bg-navy-950 px-3 py-2.5 text-[14px] leading-[1.45]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace"><code><div><span class="text-[#E8EAED]">pubnub</span><span class="text-white/[.42]">.</span><span class="text-[#8FB8FF]">publish</span><span class="text-white/[.42]">({</span><span class="text-[#E5C07B]"> channel</span><span class="text-white/[.42]">: </span><span class="text-[#3ECF6E]">&quot;scores&quot;</span><span class="text-white/[.42]">, </span><span class="text-[#E5C07B]">message</span><span class="text-white/[.42]">: </span><span class="text-[#FFAB70]">score</span><span class="text-white/[.42]"> })</span></div></code></pre><a href="https://www.pubnub.com/docs/general/messages/overview" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-auto pt-[18px] text-white hover:text-[#8FB8FF]">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div></div><div class="mt-8 xl:hidden"><div class="border-t border-navy-900/10"><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-devtools" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Developer Tools</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-devtools" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">The developer-experience surface: what you run on your machine, and what your co
16ding agent runs for you. The docs call that second half AI development, and give it a top-level area.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A working real-time feature scaffolded by your coding agent in an afternoon.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">50+ SDKs</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Idiomatic clients for web, mobile, server, and embedded</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">APIs</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Plain REST when you’d rather not take an SDK</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">MCP server</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Claude and Cursor can scaffold PubNub features for you</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">PubNub Skills</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Task recipes your coding agent follows correctly</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">llms.txt</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">The documentation set in one file a model can read</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Prompt templates</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Starting points for what agents actually get asked</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Client libraries for every platform your app ships on</div></div><a href="https://www.pubnub.com/docs/sdks" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="true" aria-controls="platform-block-core" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[800] text-navy-900">Programmable Pub/Sub</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform rotate-45">+</span></button></h3><div id="platform-block-core" aria-hidden="false" class="overflow-hidden transition-[max-height] duration-300 max-h-[1400px]"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">The heart of PubNub’s technology — sending and receiving messages between humans, devices, and AIs. Low-latency publish/sub
16scribe you can program: clients publish to named channels, and subscribe to the channels they care about.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Typing indicators, read receipts, and reactions in a chat app.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Channels</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">A route clients join — named on the fly, never provisioned</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Subscriptions</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">One connection, many channels, one set of listeners</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Message Actions</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Reactions, receipts, and edits on a sent message</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Signals</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Cheap high-frequency updates like typing indicators</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Message types</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Categorize the traffic that shares a channel</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Channel Groups</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Subscribe to thousands of channels in one call</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Ordered delivery, catch-up after reconnect, and fan-out at scale</div></div><pre class="mt-6 overflow-x-auto whitespace-pre-wrap break-words rounded-[8px] border border-white/10 bg-navy-950 px-3 py-2.5 text-[14px] leading-[1.45]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace"><code><div><span class="text-[#E8EAED]">pubnub</span><span class="text-white/[.42]">.</span><span class="text-[#8FB8FF]">publish</span><span class="text-white/[.42]">({</span><span class="text-[#E5C07B]"> channel</span><span class="text-white/[.42]">: </span><span class="text-[#3ECF6E]">&quot;scores&quot;</span><span class="text-white/[.42]">, </span><span class="text-[#E5C07B]">message</span><span class="text-white/[.42]">: </span><span class="text-[#FFAB70]">score</span><span class="text-white/[.42]"> })</span></div></code></pre><a href="https://www.pubnub.com/docs/general/messages/overview" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-presence" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Presence</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-presence" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">Pub/Sub tells your application what is happening on a channel. Presence tells it who is currently participating, across every client, at scale.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A green &quot;online&quot; dot and a live viewer count that is actually correct.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Presence events</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Join, leave, and timeout as users come and go</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Occupancy</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">
16How many are on a channel right now, and which of them</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Presence state</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Custom per-channel status like “away” or “in a call”</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Heartbeat tracking, timeout tuning, and occupancy state at scale</div></div><pre class="mt-6 overflow-x-auto whitespace-pre-wrap break-words rounded-[8px] border border-white/10 bg-navy-950 px-3 py-2.5 text-[14px] leading-[1.45]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace"><code><div><span class="text-[#E8EAED]">pubnub</span><span class="text-white/[.42]">.</span><span class="text-[#8FB8FF]">hereNow</span><span class="text-white/[.42]">({</span><span class="text-[#E5C07B]"> channels</span><span class="text-white/[.42]">: [</span><span class="text-[#3ECF6E]">&#x27;scores&#x27;</span><span class="text-white/[.42]">], </span><span class="text-[#E5C07B]">includeUUIDs</span><span class="text-white/[.42]">: </span><span class="text-[#FFAB70]">true</span><span class="text-white/[.42]">, </span><span class="text-[#E5C07B]">includeState</span><span class="text-white/[.42]">: </span><span class="text-[#FFAB70]">true</span><span class="text-white/[.42]"> })</span><span class="text-white/[.42]">;</span></div></code></pre><a href="https://www.pubnub.com/docs/general/presence/overview" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-data" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Data storage</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-data" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">Real-time delivery handles what is happening now. Data storage is how the application gets at what happened before, and at the entities that were involved.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Full scroll-back history synchronized across devices, user profiles and channel directories that stay in sync, and images or documents shared in-channel.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Message history</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Replay and catch up on published messages after a dropped connection</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Metadata</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Structured data about users, channels, and memberships</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Files</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Send images and attachments on the same channels</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A message store, a metadata service, and file hosting tied to channels</div></div><pre class="mt-6 overflow-x-auto whitespace-pre-wrap break-words rounded-[8px] border border-white/10 bg-navy-950 px-3 py-2.5 text-[14px] leading-[1.45]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace"><code><div><span class="text-[#E8EAED]">pubnub</span><span class="text-white/[.42]">.</span><span class="text-[#8FB8FF]">fetchMessages</span><span class="text-white/[.42]">({</span><span class="text-[#E5C07B]"> channels</span><span class="text-white/[.42]">: [</span><span class="text-[#3ECF6E]">&#x27;scores&#x27;</span><span class="text-white/[.42]">], </span><span class="text-[#E5C07B]">count</span><span class="text-white/[.42]">: </span><span class="text-[#FFAB70]">3</span><span class="text-white/[.42]">, </span><span class="text-[#E5C07B]">includeCustomMessageType</span><span class="text-white/[.42]">: </span><span class="text-[#FFAB70]">true</span><span class="text-white/[.42]"> })</span><span class="text-white/[.42]">;</span></div></code></pre><a href="https://www.pubnub.com/docs/general/storage" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-analytics" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Analytics</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-analytics" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">Visibility into the activity your applications generate once they ship, without standing up your own telemetry pipeline.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Answering &quot;how many users were live during the match?&quot; without instrumenting it.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Usage dashboards</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Monthly active users and transaction consumption</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Operational dashboards</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Live channel and connection activity</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A telemetry pipeline, storage, and dashboards for real-time traffic</div></div><a href="https://www.pubnub.com/docs/general/operational-dashboards/basics" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-logic" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Logic</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-logic" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">Running decisions and application logic on the network, right where the messages are, with no round-trip to your servers.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Masking a banned word, or firing an alert when a sensor crosses a threshold.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Serverless</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Run your JavaScript on the message in flight — Functions</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Real-time decisions</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Query live data and act on what it shows — Illuminate</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Auto Moderation</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Mask defined words and catch spam before delivery</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A fleet of always-on workers sitting next to your message bus</div></div><pre class="mt-6 overflow-x-auto whitespace-pre-wrap break-words rounded-[8px] border border-white/10 bg-navy-950 px-3 py-2.5 text-[14px] leading-[1.45]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace"><code><div><span class="text-[rgba(156,164,183,0.82)]">// Before Publish Function on the &quot;scores&quot; channel</span></div><div><span class="text-[#FFAB70]">export default</span><span class="text-white/[.42]"> (</span><span class="text-[#FFAB70]">request</span><span class="text-white/[.42]">) =&gt; {</span></div><div><span class="text-white/[.42]">  </span><span class="text-[#E8EAED]">request</span><span class="text-white/[.42]">.</span><span class="text-[#E5C07B]">message</span><span class="text-white/[.42]">.</span><span class="text-[#E5C07B]">team</span><span class="text-white/[.42]">
16 = </span><span class="text-[#3ECF6E]">&#x27;HOME&#x27;</span><span class="text-white/[.42]">;</span></div><div><span class="text-white/[.42]">  </span><span class="text-[#FFAB70]">return</span><span class="text-white/[.42]"> </span><span class="text-[#E8EAED]">request</span><span class="text-white/[.42]">.</span><span class="text-[#8FB8FF]">ok</span><span class="text-white/[.42]">();</span></div><div><span class="text-white/[.42]">};</span></div></code></pre><a href="https://www.pubnub.com/docs/serverless/functions/overview" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-integrations" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Integrations</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-integrations" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">How your application talks to the systems outside the real-time network.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A push notification to users who closed the app, from the same publish call.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Mobile push notifications</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Reach users who closed the app</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Event forwarding</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Send events on to Kafka, SQS, Kinesis, S3, and webhooks</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Kafka connector</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Bridge PubNub and the Kafka topics you already run</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">APNs/FCM plumbing, webhook delivery, and retry logic</div></div><a href="https://www.pubnub.com/docs/general/push/send" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-security" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Security</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-security" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">One place that answers: “how is the real-time application secured?” It draws the boundary around everything, dev tools and integrations included.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Proving to a security reviewer that each user can only read their own channels.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Access control</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Per-user, per-channel permissions with expiring tokens</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Encryption</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">
16TLS by default, and end-to-end payloads we cannot read</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Audit log</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Who changed what in your account, and when</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">SSO</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Your team signs in to the admin portal with your IdP</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Data deletion</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Remove stored messages and metadata on request</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">An auth service, token issuance, key rotation, and an audit trail</div></div><a href="https://www.pubnub.com/docs/general/security/access-control" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="platform-block-network" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[18px] leading-[28px] tracking-[-0.01em] font-[700] text-[#3A3E58]">Network</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="platform-block-network" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="mb-3 text-[14px] leading-[1.5] text-navy-500">The global operation underneath the platform: the part you don’t learn to use. You verify that it meets your requirements, and stop worrying.</p><div class="flex flex-1 flex-col gap-2"><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">What you can ship with it</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">A launch-day surge from 40k to 2M users that nobody has to be paged for.</div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Features include:</div><div class="mt-1.5 flex flex-col"><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Global network</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Users connect to a nearby edge, not a far region</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Multi-region deployment</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Safeguards that keep your application running when a region fails</span></div><div class="flex items-baseline gap-4 py-2 border-b border-navy-900/[.08]"><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">Region pinning</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Keep data in a chosen region for compliance</span></div><div class="flex items-baseline gap-4 py-2 "><span class="flex-none text-[14px] font-[700] whitespace-nowrap text-navy-900">99.999% SLA</span><span class="ml-auto text-right text-[14px] leading-[1.4] text-[#5A5E75]">Contractual uptime, roughly 5 minutes a year</span></div></div></div><div class="rounded-[10px] px-4 py-3 bg-white border border-navy-900/[.09]"><div class="text-[14px] font-[700] text-navy-900">Without it you build</div><div class="mt-1.5 text-[14px] leading-[1.5] text-[#5A5E75]">Multi-region capacity, failover, edge PoPs, and 24/7 on-call</div></div><a href="https://www.pubnub.com/docs/general/setup/data-transport" target="_blank" rel="noreferrer" class="inline-flex w-fit items-center gap-1 text-[14px] font-[700] no-underline transition-colors mt-3 text-cherry hover:text-red-700">Read the Docs <span aria-hidden="true">→</span></a></div></div></div></div></div></div></div></section></div><div class="builder-block builder-ee0a7fd0002c4451a089691e45f628e4 builder-has-component css-5ftfx8" builder-id="builder-ee0a7fd0002c4451a089691e45f628e4"><section data-screen-label="Your App" class="pn-apm" style="background:#0A0E23"><style id="pn-ap-styles">
17@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0');
18.pn-ap-material-icon {
19  font-family: 'Material Symbols Outlined';
20  font-weight: normal;
21  font-style: normal;
22  font-size: 18px;
23  line-height: 1;
24  letter-spacing: normal;
25  text-transform: none;
26  display: inline-flex;
27  align-items: center;
28  justify-content: center;
29  width: 18px;
30  height: 18px;
31  white-space: nowrap;
32  word-wrap: normal;
33  direction: ltr;
34  -webkit-font-smoothing: antialiased;
35  font-variation-settings:
36    'FILL' 0,
37    'wght' 400,
38    'GRAD' 0,
39    'opsz' 24;
40}
41
42.pn-ap-nav-item {
43  color: rgba(255, 255, 255, 0.72);
44  background: transparent;
45  transition:
46    background 0.18s ease,
47    color 0.18s ease;
48}
49
50.pn-ap-nav-item .pn-ap-nav-icon {
51  color: rgba(255, 255, 255, 0.72);
52  transition: color 0.18s ease;
53}
54
55.pn-ap-nav-item.is-on {
56  color: #fff;
57  background: rgba(255, 255, 255, 0.1);
58}
59
60.pn-ap-nav-item.is-on .pn-ap-nav-icon {
61  color: #fff;
62}
63
64.pn-ap-nav-item:hover,
65.pn-ap-nav-item:focus-visible {
66  background: rgba(255, 255, 255, 0.08);
67  color: rgba(255, 255, 255, 0.95);
68}
69
70.pn-ap-nav-item:hover .pn-ap-nav-icon,
71.pn-ap-nav-item:focus-visible .pn-ap-nav-icon {
72  color: rgba(255, 255, 255, 0.95);
73}
74
75.pn-ap-nav-item.is-on:hover,
76.pn-ap-nav-item.is-on:focus-visible {
77  background: rgba(255, 255, 255, 0.14);
78}
79
80.pn-ap-nav-item:focus-visible {
81  outline: 2px solid rgba(255, 255, 255, 0.28);
82  outline-offset: -2px;
83}
84
85/* Your App — mobile (AppPreview.v5.mobile.tsx). */
86.pn-ap-window--mobile {
87  width: 100%;
88}
89
90.pn-ap-mobile-industry-nav {
91  position: sticky;
92  top: 0;
93  z-index: 5;
94  background: #0a0e23;
95  border-radius: 9px 9px 0 0;
96  overflow: hidden;
97}
98
99.pn-ap-mobile-industry-scroll {
100  display: flex;
101  gap: 4px;
102  overflow-x: auto;
103  overscroll-behavior-x: contain;
104  padding: 8px 10px;
105  scrollbar-width: none;
106}
107
108.pn-ap-mobile-industry-scroll::-webkit-scrollbar {
109  display: none;
110}
111
112.pn-ap-mobile-industry-item {
113  position: relative;
114  display: inline-flex;
115  align-items: center;
116  gap: 8px;
117  flex-shrink: 0;
118  padding: 10px 14px;
119  border-radius: 8px;
120  cursor: pointer;
121  font-family: 'Nunito Sans', sans-serif;
122  font-size: 13px;
123  font-weight: 600;
124  white-space: nowrap;
125}
126
127.pn-ap-mobile-industry-label {
128  max-width: 11rem;
129  overflow: hidden;
130  text-overflow: ellipsis;
131}
132
133.pn-ap-mobile-pubnub-tabs {
134  display: grid;
135  grid-template-columns: 1fr 1fr;
136  gap: 0;
137  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
138}
139
140.pn-ap-mobile-pubnub-tab {
141  appearance: none;
142  border: none;
143  background: transparent;
144  color: rgba(255, 255, 255, 0.62);
145  font-family: 'Nunito Sans', sans-serif;
146  font-size: 13px;
147  font-weight: 600;
148  line-height: 1;
149  padding: 12px 10px;
150  cursor: pointer;
151  border-bottom: 2px solid transparent;
152  transition:
153    color 0.18s ease,
154    border-color 0.18s ease,
155    background 0.18s ease;
156}
157
158.pn-ap-mobile-pubnub-tab.is-on {
159  color: #fff;
160  border-bottom-color: #e5142e;
161  background: rgba(255, 255, 255, 0.04);
162}
163
164.pn-ap-mobile-pubnub-tab:focus-visible {
165  outline: 2px solid rgba(255, 255, 255, 0.28);
166  outline-offset: -2px;
167}
168
169.pn-ap-mobile-title-bar {
170  display: flex;
171  align-items: center;
172  gap: 8px;
173  padding: 12px 16px;
174  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
175}
176
177.pn-ap-mobile-title-text {
178  font-family: var(--font-caveat), cursive;
179  font-size: 15px;
180  font-weight: 400;
181  line-height: 1.15;
182  color: #9aa6bf;
183  transform: translateY(1px);
184}
185
186.pn-ap-mobile-wireframe {
187  width: 100%;
188  overflow: visible;
189}
190
191.pn-ap-mobile-wireframe--clip {
192  overflow: clip;
193  overflow-clip-margin: 24px;
194}
195
196.pn-ap-desktop-wireframe--clip {
197  overflow: clip;
198  overflow-clip-margin: 40px;
199}
200
201/* Draggable with/without PubNub split in the Your App content pane. */
202.pn-ap-split {
203  position: relative;
204  flex: 1;
205  width: 100%;
206  height: 100%;
207  min-width: 0;
208  min-height: 0;
209  overflow: visible;
210  touch-action: none;
211}
212
213.pn-ap-split-clip {
214  position: absolute;
215  inset: 0;
216  overflow: hidden;
217  border-radius: 0 10px 10px 0;
218  pointer-events: none;
219}
220
221.pn-ap-split-layer nav,
222.pn-ap-split-layer .pn-ap-nav-item {
223  pointer-events: auto;
224}
225
226.pn-ap-split-layer {
227  position: absolute;
228  inset: 0;
229  overflow: hidden;
230  pointer-events: none;
231  display: flex;
232  flex-direction: column;
233}
234
235.pn-ap-split-without {
236  z-index: 1;
237}
238
239.pn-ap-split-with {
240  z-index: 2;
241}
242
243.pn-ap-split-glow {
244  position: absolute;
245  top: 0;
246  bottom: 0;
247  max-width: 180px;
248  transform: translateX(-100%);
249  pointer-events: none;
250  z-index: 3;
251  background: linear-gradient(
252    270deg,
253    rgba(229, 20, 46, 0.22) 0%,
254    rgba(229, 20, 46, 0.1) 28%,
255    rgba(229, 20, 46, 0.03) 55%,
256    transparent 100%
257  );
258}
259
260.pn-ap-split-handle {
261  position: absolute;
262  top: 0;
263  bottom: 0;
264  z-index: 6;
265  width: 40px;
266  cursor: ew-resize;
267  touch-action: none;
268}
269
270.pn-ap-split-handle-line {
271  position: absolute;
272  top: 0;
273  bottom: 0;
274  width: 2px;
275  background: #e5142e;
276  pointer-events: none;
277  z-index: 4;
278}
279
280.pn-ap-split-handle-grip {
281  position: absolute;
282  top: 50%;
283  left: 2px;
284  width: 36px;
285  height: 32px;
286  margin-top: -16px;
287  border-radius: 0 5px 5px 0;
288  background: #e5142e;
289  display: flex;
290  align-items: center;
291  justify-content: center;
292}
293
294.pn-ap-split-handle-logo {
295  display: block;
296  width: 19px;
297  height: 14px;
298  flex-shrink: 0;
299  background: #fff;
300  pointer-events: none;
301  user-select: none;
302  -webkit-mask-image: url(/pubnub-pn-mark.png);
303  mask-image: url(/pubnub-pn-mark.png);
304  -webkit-mask-size: contain;
305  mask-size: contain;
306  -webkit-mask-repeat: no-repeat;
307  mask-repeat: no-repeat;
308  -webkit-mask-position: center;
309  mask-position: center;
310}
311
312.pn-ap-split-handle:focus-visible {
313  outline: none;
314}
315
316.pn-ap-split-handle:focus-visible .pn-ap-split-handle-grip {
317  outline: 2px solid rgba(255, 255, 255, 0.55);
318  outline-offset: 2px;
319}
320
321/* Hint chevrons flanking the grip: ‹ on the "with" side, › past the grip. */
322.pn-ap-split-chevron {
323  position: absolute;
324  top: 50%;
325  width: 8px;
326  height: 12px;
327  margin-top: -6px;
328  color: #9aa6bf;
329  pointer-events: none;
330}
331
332.pn-ap-split-chevron--left {
333  left: -18px;
334}
335
336.pn-ap-split-chevron--right {
337  left: 48px;
338}
339
340.pn-ap-split-handle.is-hinting .pn-ap-split-chevron--left {
341  animation: pn-ap-chevron-nudge-left 2.4s ease-in-out infinite;
342}
343
344.pn-ap-split-handle.is-hinting .pn-ap-split-chevron--right {
345  animation: pn-ap-chevron-nudge-right 2.4s ease-in-out infinite;
346}
347
348@keyframes pn-ap-chevron-nudge-left {
349  0%,
350  100% {
351    transform: translateX(0);
352  }
353  50% {
354    transform: translateX(-3px);
355  }
356}
357
358@keyframes pn-ap-chevron-nudge-right {
359  0%,
360  100% {
361    transform: translateX(0);
362  }
363  50% {
364    transform: translateX(3px);
365  }
366}
367
368/* "add PubNub to your app" — right edge hugs the divider, sits just above the grip. */
369.pn-ap-split-annotation-anchor {
370  position: absolute;
371  bottom: calc(50% + 22px);
372  z-index: 5;
373  transform: translateX(calc(-100% - 12px));
374  pointer-events: none;
375}
376
377.pn-ap-split-annotation.is-pulsing {
378  animation: pn-ap-annot-pulse 2.4s ease-in-out infinite;
379}
380
381@keyframes pn-ap-annot-pulse {
382  0%,
383  100% {
384    opacity: 1;
385  }
386  50% {
387    opacity: 0.7;
388  }
389}
390
391.pn-ap-split-annotation.is-fading-out {
392  animation: pn-ap-annot-fade-out 0.9s ease forwards;
393}
394
395@keyframes pn-ap-annot-fade-out {
396  to {
397    opacity: 0;
398    visibility: hidden;
399  }
400}
401
402/* App mark beside "Your … App" — industry accent on both sides of the split. */
403.pn-ap-window-mark {
404  background: var(--pn-ap-mark) !important;
405}
406
407/* Without PubNub — sidebar, chat and skeletons use the navy wireframe scale. */
408.pn-ap-window.is-wire .pn-ap-nav-item {
409  color: #8a92ab;
410}
411
412.pn-ap-window.is-wire .pn-ap-nav-item .pn-ap-nav-icon {
413  color: #8a92ab;
414}
415
416.pn-ap-window.is-wire .pn-ap-nav-item.is-on {
417  color: #c4cad9;
418  background: #1e2135;
419}
420
421.pn-ap-window.is-wire .pn-ap-nav-item.is-on .pn-ap-nav-icon {
422  color: #c4cad9;
423}
424
425.pn-ap-window.is-wire .pn-ap-nav-item:hover,
426.pn-ap-window.is-wire .pn-ap-nav-item:focus-visible {
427  background: #12162b;
428  color: #c4cad9;
429}
430
431.pn-ap-window.is-wire .pn-ap-nav-item:hover .pn-ap-nav-icon,
432.pn-ap-window.is-wire .pn-ap-nav-item:focus-visible .pn-ap-nav-icon {
433  color: #c4cad9;
434}
435
436.pn-ap-window.is-wire .pn-ap-nav-item.is-on:hover,
437.pn-ap-window.is-wire .pn-ap-nav-item.is-on:focus-visible {
438  background: #252a42;
439}
440
441.pn-ap-window.is-wire .pn-ap-nav-item:focus-visible {
442  outline-color: #424969;
443}
444
445.pn-ap-window.is-wire .pn-ap-bubble {
446  background: #1e2135;
447  border: 1px solid #353b56;
448}
449
450.pn-ap-window.is-wire .pn-ap-bubble.is-me {
451  background: #252a42;
452  border-color: #424969;
453}
454
455.pn-ap-window.is-wire .pn-ap-line {
456  background: #2e3450;
457}
458
459.pn-ap-window.is-wire .pn-ap-meta {
460  color: #68708b;
461}
462
463.pn-ap-window.is-wire .pn-ap-tick {
464  color: #68708b;
465}
466
467.pn-ap-window.is-wire .pn-ap-thread-time {
468  color: #68708b;
469}
470
471.pn-ap-window.is-wire .pn-ap-stale {
472  color: #68708b;
473}
474
475.pn-ap-window.is-wire .pn-ap-typing {
476  background: #252a42;
477}
478
479.pn-ap-window.is-wire .pn-ap-typing-dot {
480  background: #8a92ab;
481}
482
483.pn-ap-window.is-wire .pn-ap-reaction {
484  box-shadow: 0 0 0 1px #353b56;
485}
486
487.pn-ap-window.is-wire .pn-ap-reaction-n {
488  color: #c4cad9;
489}
490
491.pn-ap-window.is-wire .pn-ap-poll-track {
492  background: #252a42;
493}
494
495.pn-ap-window.is-wire .pn-v5-transport-map {
496  background: #141829 !important;
497}
498
499.pn-ap-window.is-wire .pn-v5-transport-map .pn-v5-map-basemap {
500  opacity: 0.2;
501}
502
503.pn-ap-window.is-wire .pn-ap-promo {
504  border-color: #353b56;
505  background: rgba(18, 22, 43, 0.96);
506}
507
508.pn-ap-window.is-wire .pn-ap-promo-x {
509  color: #68708b;
510}
511
512.pn-ap-window.is-wire .pn-ap-tick.is-delivered {
513  color: #34d399;
514}
515
516.pn-ap-window.is-wire .pn-ap-presence.is-on {
517  background: #34d399;
518}
519
520.pn-ap-window.is-wire .pn-ap-xp {
521  color: #34d399;
522}
523
524.pn-ap-window.is-wire .pn-ap-thread-badge {
525  background: #2e3450;
526  color: #c4cad9;
527}
528
529.pn-v5-crown-push {
530  position: absolute;
531  top: 8px;
532  left: 8px;
533  right: 8px;
534  z-index: 6;
535  display: flex;
536  align-items: center;
537  gap: 10px;
538  padding: 10px 12px;
539  box-sizing: border-box;
540  border-radius: 12px;
541  border: 1px solid #353b56;
542  background: rgba(18, 22, 43, 0.96);
543  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
544  pointer-events: none;
545}
546
547.pn-v5-crown-push.is-enter {
548  animation: pn-v5-crown-push-in 0.42s cubic-bezier(0.22, 1, 0.36, 1) both;
549}
550
551.pn-ap.is-static .pn-v5-crown-push.is-enter {
552  animation: none;
553}
554
555@keyframes pn-v5-crown-push-in {
556  from {
557    opacity: 0;
558    transform: translateY(-12px) scale(0.96);
559  }
560  to {
561    opacity: 1;
562    transform: none;
563  }
564}
565
566.pn-v5-crown-push-icon {
567  flex-shrink: 0;
568  width: 34px;
569  height: 34px;
570  border-radius: 8px;
571  display: flex;
572  align-items: center;
573  justify-content: center;
574  font-size: 18px;
575  line-height: 1;
576  background: #252a42;
577  border: 1px solid #424969;
578}
579
580.pn-v5-crown-push-copy {
581  min-width: 0;
582  display: flex;
583  flex-direction: column;
584  gap: 3px;
585}
586
587.pn-v5-crown-push-title {
588  font-family: 'Nunito Sans', sans-serif;
589  font-size: 13px;
590  font-weight: 800;
591  line-height: 1.2;
592  color: #e8ebf4;
593}
594
595.pn-v5-crown-push-body {
596  font-family: 'Nunito Sans', sans-serif;
597  font-size: 11px;
598  font-weight: 600;
599  line-height: 1.2;
600  color: #8a92ab;
601}
602
603.pn-ap,
604.pn-ap-feed {
605  box-sizing: border-box;
606  height: 100%;
607  min-height: 0;
608}
609
610.pn-ap-feed {
611  position: relative;
612  overflow: hidden;
613  display: flex;
614  flex-direction: column;
615  justify-content: flex-end;
616  gap: 14px;
617  padding: 8px 20px 48px;
618}
619
620.pn-ap-msg {
621  position: relative;
622  width: max-content;
623  max-width: 78%;
624  flex-shrink: 0;
625}
626
627.pn-ap-msg.is-me {
628  align-self: flex-end;
629}
630
631.pn-ap-msg.is-them {
632  align-self: flex-start;
633}
634
635.pn-ap-msg-anchor {
636  position: relative;
637  width: max-content;
638  max-width: 100%;
639}
640
641.pn-ap-bubble {
642  display: flex;
643  flex-direction: column;
644  gap: 8px;
645  width: max-content;
646  max-width: 100%;
647  box-sizing: border-box;
648  flex-shrink: 0;
649  border-radius: 16px;
650  padding: 22px 26px;
651  background: rgba(255, 255, 255, 0.07);
652}
653
654.pn-ap-bubble.is-me {
655  background: rgba(255, 255, 255, 0.11);
656  align-items: flex-end;
657}
658
659.pn-ap-bubble.is-enter {
660  animation: pn-ap-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
661}
662
663.pn-ap.is-static .pn-ap-bubble.is-enter {
664  animation: none;
665}
666
667@keyframes pn-ap-in {
668  from {
669    opacity: 0;
670    transform: translateY(14px);
671  }
672  to {
673    opacity: 1;
674    transform: none;
675  }
676}
677
678.pn-ap-line {
679  display: block;
680  height: 7px;
681  border-radius: 999px;
682  background: rgba(255, 255, 255, 0.22);
683  flex-shrink: 0;
684}
685
686.pn-ap-meta {
687  position: absolute;
688  top: 100%;
689  margin-top: 2px;
690  display: flex;
691  align-items: center;
692  gap: 4px;
693  font-family: 'Nunito Sans', sans-serif;
694  font-size: 12px;
695  font-weight: 600;
696  line-height: 1;
697  letter-spacing: 0.01em;
698  color: rgba(255, 255, 255, 0.48);
699  pointer-events: none;
700  white-space: nowrap;
701}
702
703.pn-ap-msg.is-me .pn-ap-meta {
704  right: 6px;
705}
706
707.pn-ap-msg.is-them .pn-ap-meta {
708  left: 6px;
709}
710
711.pn-ap-tick {
712  display: flex;
713  color: rgba(255, 255, 255, 0.45);
714}
715
716.pn-ap-tick.is-delivered {
717  color: #34d399;
718}
719
720.pn-ap-avatar {
721  position: relative;
722  display: block;
723}
724
725.pn-ap-presence {
726  position: absolute;
727  right: -1px;
728  bottom: -1px;
729  width: 8px;
730  height: 8px;
731  border-radius: 50%;
732  background: #34d399;
733  box-shadow: 0 0 0 2px #0a0e23;
734  pointer-events: none;
735  animation-name: pn-ap-presence;
736  animation-timing-function: ease-in-out;
737  animation-iteration-count: infinite;
738}
739
740.pn-ap.is-static .pn-ap-presence {
741  animation: none;
742  opacity: 0;
743}
744
745.pn-ap.is-static .pn-ap-presence.is-on {
746  opacity: 1;
747}
748
749@keyframes pn-ap-presence {
750  0%,
751  58% {
752    opacity: 1;
753    transform: scale(1);
754  }
755  68%,
756  100% {
757    opacity: 0;
758    transform: scale(0.6);
759  }
760}
761
762.pn-health-alert-in {
763  animation: pn-ap-in 0.4s ease-out both;
764}
765
766.pn-health-ekg {
767  animation: pn-health-ekg 1.4s ease-in-out infinite;
768}
769
770@keyframes pn-health-ekg {
771  0%,
772  100% {
773    opacity: 0.55;
774  }
775  50% {
776    opacity: 0.95;
777  }
778}
779
780.pn-ap-thread {
781  position: relative;
782}
783
784.pn-ap-thread-meta {
785  position: absolute;
786  top: 10px;
787  right: 12px;
788  display: flex;
789  flex-direction: column;
790  align-items: flex-end;
791  gap: 5px;
792  pointer-events: none;
793}
794
795.pn-ap-thread-time {
796  font-family: 'Nunito Sans', sans-serif;
797  font-size: 11px;
798  font-weight: 600;
799  line-height: 1;
800  letter-spacing: 0.01em;
801  color: rgba(255, 255, 255, 0.4);
802  white-space: nowrap;
803}
804
805.pn-ap-thread-badge {
806  min-width: 16px;
807  height: 16px;
808  padding: 0 4px;
809  box-sizing: border-box;
810  border-radius: 999px;
811  background: #34d399;
812  color: #0a0e23;
813  font-family: 'Nunito Sans', sans-serif;
814  font-size: 10px;
815  font-weight: 700;
816  line-height: 16px;
817  text-align: center;
818}
819
820.pn-ap-reaction {
821  position: absolute;
822  bottom: -8px;
823  z-index: 1;
824  display: flex;
825  align-items: center;
826  justify-content: center;
827  gap: 4px;
828  min-width: 22px;
829  height: 22px;
830  padding: 0 6px;
831  box-sizing: border-box;
832  border-radius: 999px;
833  background: #0a0e23;
834  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.2);
835  font-size: 13px;
836  line-height: 1;
837  pointer-events: none;
838}
839
840.pn-ap-reaction-n {
841  font-family: 'Nunito Sans', sans-serif;
842  font-size: 12px;
843  font-weight: 700;
844  color: rgba(255, 255, 255, 0.78);
845}
846
847.pn-ap-msg.is-me .pn-ap-reaction {
848  left: 6px;
849}
850
851.pn-ap-msg.is-them .pn-ap-reaction {
852  right: 6px;
853}
854
855.pn-ap-reaction.is-enter {
856  animation: pn-ap-react 0.38s cubic-bezier(0.22, 1, 0.36, 1) both;
857}
858
859.pn-ap.is-static .pn-ap-reaction.is-enter {
860  animation: none;
861}
862
863@keyframes pn-ap-react {
864  from {
865    opacity: 0;
866    transform: scale(0.4);
867  }
868  to {
869    opacity: 1;
870    transform: none;
871  }
872}
873
874.pn-ap-typing {
875  position: absolute;
876  right: 20px;
877  bottom: 48px;
878  z-index: 2;
879  display: flex;
880  align-items: center;
881  justify-content: center;
882  gap: 5px;
883  width: 58px;
884  height: 36px;
885  box-sizing: border-box;
886  border-radius: 16px;
887  background: rgba(255, 255, 255, 0.14);
888  pointer-events: none;
889  animation: pn-ap-in 0.32s cubic-bezier(0.22, 1, 0.36, 1) both;
890}
891
892.pn-ap.is-static .pn-ap-typing {
893  animation: none;
894}
895
896.pn-ap-typing-dot {
897  width: 6px;
898  height: 6px;
899  border-radius: 50%;
900  background: rgba(255, 255, 255, 0.62);
901  animation: pn-ap-dot 1.15s ease-in-out infinite;
902}
903
904.pn-ap-typing-dot:nth-child(2) {
905  animation-delay: 0.16s;
906}
907
908.pn-ap-typing-dot:nth-child(3) {
909  animation-delay: 0.32s;
910}
911
912.pn-ap.is-static .pn-ap-typing-dot {
913  animation: none;
914  opacity: 0.45;
915}
916
917.pn-ap.is-static .pn-ap-typing-dot:nth-child(2) {
918  opacity: 0.85;
919}
920
921.pn-ap.is-compact .pn-ap-feed {
922  gap: 26px;
923  padding: 4px 10px 40px;
924}
925
926.pn-ap.is-compact .pn-ap-bubble {
927  padding: 10px 12px;
928  border-radius: 12px;
929  gap: 5px;
930}
931
932.pn-ap.is-compact .pn-ap-line {
933  height: 5px;
934}
935
936.pn-ap-bar-words {
937  display: flex;
938  align-items: center;
939  gap: 6px;
940  flex-wrap: nowrap;
941}
942
943.pn-ap-censor {
944  font-family: 'Nunito Sans', sans-serif;
945  font-size: 11px;
946  font-weight: 700;
947  line-height: 1;
948  letter-spacing: 0.08em;
949  color: #8a92ab;
950}
951
952.pn-ap-cursor {
953  display: inline-block;
954  margin-left: 1px;
955  font-family: 'Nunito Sans', sans-serif;
956  font-size: 13px;
957  font-weight: 400;
958  line-height: 1;
959  color: #8a92ab;
960  animation: pn-ap-cursor-blink 1s step-end infinite;
961}
962
963.pn-ap.is-static .pn-ap-cursor {
964  animation: none;
965}
966
967@keyframes pn-ap-cursor-blink {
968  50% {
969    opacity: 0;
970  }
971}
972
973.pn-ap-automod-label {
974  display: block;
975  margin-top: 4px;
976  font-family: 'Nunito Sans', sans-serif;
977  font-size: 9px;
978  font-weight: 600;
979  line-height: 1;
980  letter-spacing: 0.03em;
981  text-transform: lowercase;
982  color: #68708b;
983}
984
985.pn-ap-msg.is-me .pn-ap-automod-label {
986  text-align: right;
987  padding-right: 2px;
988}
989
990.pn-ap.is-compact .pn-ap-typing {
991  right: 10px;
992  bottom: 10px;
993  width: 44px;
994  height: 28px;
995}
996
997.pn-ap.is-compact.is-live .pn-ap-feed {
998  padding: 4px 10px 40px;
999}
1000
1001.pn-ap.is-compact.is-live .pn-ap-typing {
1002  left: 10px;
1003  right: auto;
1004  bottom: 14px;
1005}
1006
1007.pn-ap.is-compact .pn-ap-reaction {
1008  min-width: 18px;
1009  height: 18px;
1010  font-size: 12px;
1011}
1012
1013.pn-ap-feed.is-quiet {
1014  justify-content: flex-end;
1015  padding: 8px 12px 40px;
1016  gap: 26px;
1017}
1018
1019/* Mobile chat frame — fixed height; bubbles scroll/animate inside without resizing the box. */
1020.pn-ap-chat-short {
1021  box-sizing: border-box;
1022  height: 172px;
1023}
1024
1025.pn-ap-chat-short--gaming {
1026  height: 196px;
1027}
1028
1029.pn-ap.is-compact.is-short {
1030  flex: 1;
1031  min-height: 0;
1032  height: 100%;
1033}
1034
1035.pn-ap.is-compact.is-short .pn-ap-feed {
1036  gap: 10px;
1037  padding: 4px 10px 36px;
1038  height: 100%;
1039  justify-content: flex-end;
1040}
1041
1042.pn-ap.is-compact.is-short .pn-ap-bubble {
1043  padding: 8px 10px;
1044  gap: 4px;
1045}
1046
1047.pn-ap.is-compact.is-short .pn-ap-feed.is-quiet {
1048  gap: 10px;
1049  padding: 8px 10px 36px;
1050  justify-content: flex-end;
1051}
1052
1053.pn-ap-stale {
1054  position: absolute;
1055  left: 50%;
1056  bottom: 12px;
1057  transform: translateX(-50%);
1058  font-family: 'Nunito Sans', sans-serif;
1059  font-size: 12px;
1060  font-weight: 500;
1061  line-height: 16px;
1062  color: rgba(255, 255, 255, 0.48);
1063  text-align: center;
1064  white-space: nowrap;
1065  pointer-events: none;
1066}
1067
1068.pn-ap-floats {
1069  position: absolute;
1070  inset: 0;
1071  z-index: 2;
1072  pointer-events: none;
1073  overflow: hidden;
1074}
1075
1076.pn-ap-float {
1077  position: absolute;
1078  bottom: 40px;
1079  font-size: 20px;
1080  line-height: 1;
1081  transform: translateX(-50%);
1082  animation: pn-ap-float-up 4.2s ease-out forwards;
1083}
1084
1085.pn-ap-floats.is-static .pn-ap-float {
1086  animation: none;
1087  opacity: 0.9;
1088}
1089
1090@keyframes pn-ap-float-up {
1091  0% {
1092    opacity: 0;
1093    transform: translate(-50%, 10px) scale(0.55);
1094  }
1095  14% {
1096    opacity: 1;
1097    transform: translate(-50%, 0) scale(1);
1098  }
1099  100% {
1100    opacity: 0;
1101    transform: translate(calc(-50% + var(--drift, 14px)), -230px) scale(1.15);
1102  }
1103}
1104
1105.pn-ap-promo {
1106  position: absolute;
1107  left: 12px;
1108  bottom: 40px;
1109  z-index: 3;
1110  display: flex;
1111  align-items: center;
1112  gap: 10px;
1113  max-width: calc(100% - 96px);
1114  padding: 10px 26px 10px 12px;
1115  box-sizing: border-box;
1116  border-radius: 8px;
1117  border: 1.5px solid rgba(255, 255, 255, 0.28);
1118  background: rgba(10, 14, 35, 0.9);
1119  pointer-events: none;
1120}
1121
1122.pn-ap-promo-x {
1123  position: absolute;
1124  top: 6px;
1125  right: 6px;
1126  width: 14px;
1127  height: 14px;
1128  color: rgba(255, 255, 255, 0.55);
1129  display: flex;
1130  align-items: center;
1131  justify-content: center;
1132}
1133
1134.pn-ap-poll {
1135  padding: 10px 12px 12px;
1136  box-sizing: border-box;
1137  display: flex;
1138  flex-direction: column;
1139  gap: 8px;
1140}
1141
1142.pn-ap-poll-row {
1143  display: flex;
1144  align-items: center;
1145  gap: 8px;
1146}
1147
1148.pn-ap-poll-track {
1149  flex: 1;
1150  min-width: 0;
1151  height: 6px;
1152  border-radius: 999px;
1153  background: rgba(255, 255, 255, 0.14);
1154  overflow: hidden;
1155}
1156
1157.pn-ap-poll-fill {
1158  display: block;
1159  height: 100%;
1160  border-radius: 999px;
1161  transition: width 0.5s ease;
1162}
1163
1164.pn-ap-xp {
1165  position: absolute;
1166  z-index: 4;
1167  font-family: 'Nunito Sans', sans-serif;
1168  font-size: 16px;
1169  font-weight: 800;
1170  line-height: 1;
1171  color: #34d399;
1172  pointer-events: none;
1173  white-space: nowrap;
1174  text-shadow: 0 1px 8px rgba(10, 14, 35, 0.85);
1175  transform: translate(-50%, -50%);
1176}
1177
1178.pn-ap-score-roll {
1179  display: inline-block;
1180  overflow: hidden;
1181  height: 1em;
1182  line-height: 1;
1183  vertical-align: top;
1184  width: 1ch;
1185  min-width: 1ch;
1186  text-align: center;
1187}
1188
1189.pn-ap-score-roll-stack {
1190  display: block;
1191  will-change: transform;
1192}
1193
1194.pn-ap-score-roll-stack.is-rolled {
1195  transform: translateY(-1em);
1196}
1197
1198.pn-ap-score-roll.is-anim .pn-ap-score-roll-stack {
1199  transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
1200}
1201
1202.pn-ap-score-roll-digit {
1203  display: block;
1204  height: 1em;
1205  line-height: 1;
1206}
1207
1208.pn-ap-xp.is-pop {
1209  animation: pn-ap-xp 2.4s cubic-bezier(0.22, 1, 0.36, 1) both;
1210}
1211
1212@keyframes pn-ap-xp {
1213  0% {
1214    opacity: 0;
1215    transform: translate(-50%, 8px) scale(0.86);
1216  }
1217  16% {
1218    opacity: 1;
1219    transform: translate(-50%, -6px) scale(1);
1220  }
1221  72% {
1222    opacity: 1;
1223    transform: translate(-50%, -22px) scale(1);
1224  }
1225  100% {
1226    opacity: 0;
1227    transform: translate(-50%, -40px) scale(1);
1228  }
1229}
1230
1231.pn-ap-rank-list {
1232  position: relative;
1233}
1234
1235.pn-ap-rank-row {
1236  position: absolute;
1237  left: 0;
1238  right: 0;
1239  transition: top 0.9s cubic-bezier(0.22, 1, 0.36, 1);
1240}
1241
1242.pn-ap-rank-list.is-static .pn-ap-rank-row {
1243  transition: none;
1244}
1245
1246.pn-ap-bid-list {
1247  position: relative;
1248}
1249
1250.pn-ap-bid-row {
1251  position: absolute;
1252  left: 0;
1253  right: 0;
1254  transition:
1255    top 1.15s cubic-bezier(0.22, 1, 0.36, 1),
1256    transform 1.15s cubic-bezier(0.22, 1, 0.36, 1);
1257}
1258
1259.pn-ap-bid-list.is-static .pn-ap-bid-row {
1260  transition: none;
1261}
1262
1263.pn-ap-bid-row.is-new-leader {
1264  z-index: 1;
1265  animation: pn-ap-bid-leader 1.15s cubic-bezier(0.22, 1, 0.36, 1) both;
1266}
1267
1268@keyframes pn-ap-bid-leader {
1269  0% {
1270    transform: translateY(10px) scale(0.985);
1271  }
1272  100% {
1273    transform: none;
1274  }
1275}
1276
1277/* ── Tablet + phone "Your App" heading (AppPreview.v5.mobile.tsx) ────────────
1278   The heading block is the shared `SectionHeading` component; this file only
1279   styles the `.tab1b` industry pill row and the With PubNub on/off switch that
1280   sit above the industry window on narrow screens. The window body below reuses
1281   the desktop-derived `.pn-ap-window--mobile` chrome. */
1282.pn-apm {
1283  font-family: 'Nunito Sans', sans-serif;
1284}
1285
1286.pn-apm-inner {
1287  max-width: 640px;
1288  margin: 0 auto;
1289  padding: 40px 16px 48px;
1290}
1291
1292/* Tablet (641–1245px, below the 1246px desktop switch): drop the phone width cap so the
1293   whole "Your App" block spans the section full-width, with DESIGN tablet padding. */
1294@media (min-width: 641px) {
1295  .pn-apm-inner {
1296    max-width: none;
1297    padding: 72px 28px;
1298  }
1299}
1300
1301/* The heading block (eyebrow + title + intro) is the shared `SectionHeading` component,
1302   so no heading rules live here — only the industry pills and switch below. */
1303
1304/* Industry pills are the shared `.tab1b` (dark tone); the inner row scrolls
1305   horizontally when they overflow a narrow screen. The wrapper is positioned so
1306   the edge-fade overlays can pin to its left/right edges. */
1307.pn-apm-industry {
1308  position: relative;
1309  margin-top: 24px;
1310}
1311
1312.pn-apm-industry-scroll {
1313  scroll-behavior: smooth;
1314  /* Scrollable, but the native scrollbar is hidden — the edge fades are the affordance. */
1315  scrollbar-width: none;
1316  -ms-overflow-style: none;
1317}
1318
1319.pn-apm-industry-scroll::-webkit-scrollbar {
1320  display: none;
1321}
1322
1323/* Scroll affordance: a subtle canvas-colored fade over whichever edge still has
1324   pills to scroll to. Toggled via `data-visible` from the scroll position. */
1325.pn-apm-industry-fade {
1326  position: absolute;
1327  top: 0;
1328  bottom: 0;
1329  width: 40px;
1330  pointer-events: none;
1331  opacity: 0;
1332  transition: opacity 150ms ease;
1333  z-index: 2;
1334}
1335
1336.pn-apm-industry-fade[data-visible='true'] {
1337  opacity: 1;
1338}
1339
1340.pn-apm-industry-fade--left {
1341  left: 0;
1342  background: linear-gradient(to right, #0a0e23, rgba(10, 14, 35, 0));
1343}
1344
1345.pn-apm-industry-fade--right {
1346  right: 0;
1347  background: linear-gradient(to left, #0a0e23, rgba(10, 14, 35, 0));
1348}
1349
1350/* With PubNub on/off switch. */
1351.pn-apm-switch-row {
1352  display: flex;
1353  justify-content: flex-start;
1354  margin-top: 16px;
1355}
1356
1357.pn-apm-switch {
1358  display: inline-flex;
1359  align-items: center;
1360  gap: 10px;
1361  appearance: none;
1362  border: none;
1363  background: transparent;
1364  padding: 6px;
1365  cursor: pointer;
1366  font: inherit;
1367}
1368
1369.pn-apm-switch-track {
1370  position: relative;
1371  width: 44px;
1372  height: 24px;
1373  border-radius: 999px;
1374  background: #353b56;
1375  flex-shrink: 0;
1376  transition: background 0.18s ease;
1377}
1378
1379.pn-apm-switch-thumb {
1380  position: absolute;
1381  top: 3px;
1382  left: 3px;
1383  width: 18px;
1384  height: 18px;
1385  border-radius: 50%;
1386  background: #fff;
1387  transition: transform 0.18s ease;
1388}
1389
1390.pn-apm-switch.is-on .pn-apm-switch-track {
1391  background: #e5142e;
1392}
1393
1394.pn-apm-switch.is-on .pn-apm-switch-thumb {
1395  transform: translateX(20px);
1396}
1397
1398.pn-apm-switch-label {
1399  font-size: 14px;
1400  font-weight: 700;
1401  color: #fff;
1402}
1403
1404.pn-apm-switch:focus-visible {
1405  outline: 2px solid rgba(255, 255, 255, 0.28);
1406  outline-offset: 2px;
1407  border-radius: 8px;
1408}
1409
1410@keyframes pnPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}
1411
1412/* Text links with a trailing arrow — the arrow slides on hover / keyboard focus. Used by the
1413   preview footnote and the embedded SDK band (docs links, "All SDKs →"). */
1414.pn-arrow-link__arrow {
1415  display: inline-block;
1416  transition: transform 0.2s ease;
1417}
1418
1419.pn-arrow-link:hover .pn-arrow-link__arrow,
1420.pn-arrow-link:focus-visible .pn-arrow-link__arrow {
1421  transform: translateX(12px);
1422}
1423
1424@media (prefers-reduced-motion: reduce) {
1425  .pn-arrow-link__arrow { transition: none; }
1426  .pn-arrow-link:hover .pn-arrow-link__arrow,
1427  .pn-arrow-link:focus-visible .pn-arrow-link__arrow { transform: none; }
1428}
1429</style><div class="pn-apm-inner"><div class="text-left "><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-[#FF7585]">Your app + PubNub</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] text-white mt-3">Turn your app into a realtime experience</h2><p class="mb-0 mt-4 max-w-[680px] text-[16px] leading-[24px] text-white/[.62]">See what adding live updates can unlock in your application.</p></div><div class="sr-only"><p>Interactive demo: toggle “With PubNub” on or off to see the live, real-time features PubNub adds to five kinds of application. Each example is an animated app mockup; the real-time capabilities it demonstrates are:</p><ul><li>Sports &amp; media: live score and match-minute updates, goal alerts, live fan polls (e.g. “Who scores next?”), and in-app chat with a live viewer count.</li><li>Transportation (ride-hailing): live driver status from request through arrival, continuously updated ETAs, in-app payment, and real-time promotions.</li><li>eCommerce (live shopping): a live video stream, live stock countdowns, instant add-to-cart, personalized offers, and live chat.</li><li>Gaming: live points and XP, real-time leaderboard rank changes, auto-translated and moderated chat, and achievement push notifications.</li><li>Healthcare (digital health): live patient risk scores, connected-device readings, and last-updated timestamps that refresh in real time.</li></ul></div><div class="pn-apm-industry" role="group" aria-label="App industries"><div class="pn-apm-industry-scroll flex items-center gap-2.5 overflow-x-auto"><button type="button" class="inline-flex h-10 flex-shrink-0 items-center whitespace-nowrap rounded-[10px] border px-[18px] text-sm font-semibold leading-none transition-colors duration-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/30 border-[#e5142e] bg-[rgba(229,20,46,0.22)] text-white" aria-pressed="true">Sports &amp; media</button><button type="button" class="inline-flex h-10 flex-shrink-0 items-center whitespace-nowrap rounded-[10px] border px-[18px] text-sm font-semibold leading-none transition-colors duration-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/30 border-[#353b56] bg-white/5 text-white/70 hover:border-[#4a516e] hover:bg-white/10 hover:text-white" aria-pressed="false">Transportation</button><button type="button" class="inline-flex h-10 flex-shrink-0 items-center whitespace-nowrap rounded-[10px] border px-[18px] text-sm font-semibold leading-none transition-colors duration-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/30 border-[#353b56] bg-white/5 text-white/70 hover:border-[#4a516e] hover:bg-white/10 hover:text-white" aria-pressed="false">eCommerce</button><button type="button" class="inline-flex h-10 flex-shrink-0 items-center whitespace-nowrap rounded-[10px] border px-[18px] text-sm font-semibold leading-none transition-colors duration-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/30 border-[#353b56] bg-white/5 text-white/70 hover:border-[#4a516e] hover:bg-white/10 hover:text-white" aria-pressed="false">Gaming</button><button type="button" class="inline-flex h-10 flex-shrink-0 items-center whitespace-nowrap rounded-[10px] border px-[18px] text-sm font-semibold leading-none transition-colors duration-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/30 border-[#353b56] bg-white/5 text-white/70 hover:border-[#4a516e] hover:bg-white/10 hover:text-white" aria-pressed="false">Healthcare</button></div>
1429<div class="pn-apm-industry-fade pn-apm-industry-fade--left" data-visible="false" aria-hidden="true"></div><div class="pn-apm-industry-fade pn-apm-industry-fade--right" data-visible="false" aria-hidden="true"></div></div><div class="pn-apm-switch-row"><button type="button" role="switch" aria-checked="true" class="pn-apm-switch is-on"><span class="pn-apm-switch-track" aria-hidden="true"><span class="pn-apm-switch-thumb"></span></span><span class="pn-apm-switch-label">With PubNub</span></button></div><div class="pn-ap-window pn-ap-window--mobile is-wire" style="margin-top:20px;box-sizing:border-box;border:1px solid #68708B;border-radius:10px;background:#0A0E23;overflow:hidden"><div class="pn-ap-mobile-title-bar"><span class="pn-ap-window-mark" aria-hidden="true" style="--pn-ap-mark:#7A4E78;width:14px;height:14px;border-radius:3px;background:#7A4E78;display:inline-block;flex-shrink:0"></span><span class="pn-ap-mobile-title-text">Your Sports App with PubNub</span></div><div data-markdown-ignore="true" class="pn-ap-mobile-wireframe pn-ap-mobile-wireframe--clip"><div class="pn-ap-shop pn-ap-shop--stacked" aria-hidden="true" style="display:flex;flex-direction:column;gap:12px;padding:14px 16px 18px;font-family:&#x27;Nunito Sans&#x27;, sans-serif;color:#C4CAD9"><div style="box-sizing:border-box;border:1px solid #353B56;border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;width:100%;flex-shrink:0;background:#12162B"><div style="display:grid;grid-template-columns:minmax(0, 1fr) auto minmax(0, 1fr);align-items:center;gap:10px"><div style="display:flex;align-items:center;gap:8px;min-width:0"><span style="width:28px;height:28px;border-radius:6px;background:#252A42;display:block;flex-shrink:0"></span><span style="flex:1;min-width:0"><span style="display:block;width:70%;height:8px;border-radius:999px;background:#2E3450;flex-shrink:0"></span></span></div><span style="display:inline-flex;align-items:center;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:20px;font-weight:800;line-height:1;color:#8A92AB;font-variant-numeric:tabular-nums;letter-spacing:0.04em;white-space:nowrap"><span>1</span><span style="margin:0 6px;color:#68708B;font-weight:600">-</span><span>1</span></span><div style="display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0"><span style="flex:1;min-width:0;display:flex;justify-content:flex-end"><span style="display:block;width:58%;height:8px;border-radius:999px;background:#2E3450;flex-shrink:0"></span></span><span style="width:28px;height:28px;border-radius:6px;background:#252A42;display:block;flex-shrink:0"></span></div></div><div style="display:grid;grid-template-columns:minmax(0, 1fr) auto minmax(0, 1fr);align-items:center;gap:10px"><span style="font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:12px;font-weight:600;line-height:1.2;color:#68708B;font-variant-numeric:tabular-nums;white-space:nowrap">23&#x27;</span><span style="width:1px"></span><span style="font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:12px;font-weight:600;line-height:1.2;color:#68708B;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right">54&#x27;</span></div></div><div style="min-height:200px;display:flex;flex-direction:column"><div style="box-sizing:border-box;border:1px solid #353B56;border-radius:8px;position:relative;display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;background:#141829"><div style="position:absolute;inset:0;z-index:0;pointer-events:none;display:flex;align-items:center;justify-content:center;padding:42px 28px 44px;box-sizing:border-box"><svg viewBox="0 0 210 136" preserveAspectRatio="xMidYMid meet" width="100%" height="100%" aria-hidden="true" style="display:block;max-height:100%"><rect x="4" y="4" width="202" height="128" rx="3" fill="#1A2235"></rect><rect x="8" y="8" width="32.333333333333336" height="120" fill="#12162B"></rect><rect x="40.333333333333336" y="8" width="32.333333333333336" height="120" fill="transparent"></rect><rect x="72.66666666666667" y="8" width="32.333333333333336" height="120" fill="#12162B"></rect><rect x="105" y="8" width="32.333333333333336" height="120" fill="transparent"></rect><rect x="137.33333333333334" y="8" width="32.333333333333336" height="120" fill="#12162B"></rect><rect x="169.66666666666669" y="8" width="32.333333333333336" height="120" fill="transparent"></rect><rect x="10" y="10" width="190" height="116" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect><path d="M105 10v116" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></path><circle cx="105" cy="68" r="16" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></circle><rect x="10" y="38" width="28" height="60" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect><rect x="10" y="50" width="12" height="36" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect><path d="M38 52.5a16 16 0 0 1 0 31" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></path><rect x="172" y="38" width="28" height="60" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect><rect x="188" y="50" width="12" height="36" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect><path d="M172 52.5a16 16 0 0 0 0 31" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></path><path d="M10 14a6 6 0 0 1 6-4M200 14a6 6 0 0 0-6-4M10 122a6 6 0 0 0 6 4M200 122a6 6 0 0 1-6 4" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></path><rect x="4" y="58" width="6" height="20" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect><rect x="200" y="58" width="6" height="20" fill="none" stroke="#353B56" stroke-width="1" vector-effect="non-scaling-stroke"></rect></svg></div><span style="position:absolute;top:10px;left:10px;z-index:3;display:flex;align-items:center;gap:8px"><span style="display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 10px;border-radius:999px;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:14px;font-weight:700;letter-spacing:0.08em;line-height:1;text-transform:uppercase;background:#252A42;box-sizing:border-box"><i style="width:7px;height:7px;border-radius:50%;background:#8A92AB;display:block;flex-shrink:0;animation:pnPulse 1.6s ease-in-out infinite"></i>LIVE</span><span style="display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:14px;font-weight:700;letter-spacing:0.02em;line-height:1;text-transform:none;background:rgba(122, 78, 120, 0.44);visibility:inherit"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M1.5 7s2.1-3.6 5.5-3.6S12.5 7 12.5 7s-2.1 3.6-5.5 3.6S1.5 7 1.5 7z" stroke="currentColor" stroke-width="1.4"></path><circle cx="7" cy="7" r="1.7" fill="currentColor"></circle></svg>201,847</span></span><span style="position:absolute;top:10px;right:10px;z-index:3;display:flex;align-items:center;gap:8px"><span style="display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:14px;font-weight:700;letter-spacing:0.02em;line-height:1;text-transform:none;background:rgba(122, 78, 120, 0.44);font-variant-numeric:tabular-nums;color:#C4CAD9">80:58</span></span><div style="visibility:inherit"><div class="pn-ap-floats"></div></div><div class="pn-ap-promo" style="visibility:hidden"><span style="width:28px;height:28px;border-radius:8px;background:#7A4E78;color:#C4CAD9;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M4.2 2.4 7 3.6 9.8 2.4 12.2 4.2 10.4 5.4v6.2H3.6V5.4L1.8 4.2z" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"></path></svg></span><span style="min-width:0;display:flex;flex-direction:column;gap:4px;flex:1"><span style="display:block;width:72%;height:8px;border-radius:999px;background:#2E3450;flex-shrink:0"></span><span style="font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:12px;font-weight:700;line-height:1.2;color:#8A92AB">20% off</span></span><span class="pn-ap-promo-x" aria-hidden="true">
1429<svg width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 2 8 8M8 2 2 8" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path></svg></span></div><div style="flex:1;min-height:0"></div><div style="position:relative;z-index:2;padding:0 12px 12px;flex-shrink:0"><span style="position:relative;display:block;width:100%;height:4px;border-radius:999px;background:#252A42"><i style="position:absolute;left:0;top:0;bottom:0;width:89.96296296296296%;border-radius:999px;background:#8A92AB;display:block"></i><i style="position:absolute;left:89.96296296296296%;top:50%;width:8px;height:8px;margin-left:-4px;margin-top:-4px;border-radius:50%;background:#8A92AB;display:block"></i></span></div></div></div><div class="pn-ap-chat-short" style="box-sizing:border-box;border:1px solid #353B56;border-radius:8px;display:flex;flex-direction:column;overflow:hidden;flex-shrink:0"><div aria-hidden="true" style="display:flex;align-items:center;justify-content:flex-end;height:44px;padding:0 10px;box-sizing:border-box;border-bottom:1px solid #353B56;flex-shrink:0"><span style="display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:rgba(122, 78, 120, 0.44);font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:12px;font-weight:700;line-height:1;color:#C4CAD9;font-variant-numeric:tabular-nums;letter-spacing:0.02em"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="12" cy="8.2" r="3.1" stroke="currentColor" stroke-width="1.6"></circle><path d="M5.4 19c0-3.1 2.9-5.1 6.6-5.1s6.6 2 6.6 5.1" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg>12,480<!-- --> <!-- -->active</span></div><div style="flex:1;min-height:0;display:flex;flex-direction:column"><div class="pn-ap is-compact is-live is-short" aria-hidden="true" style="flex:1;min-height:0;height:100%"><div class="pn-ap-feed"><div class="pn-ap-msg is-them"><div class="pn-ap-bubble is-them"><span class="pn-ap-line" style="width:36px"></span></div><div class="pn-ap-meta"><span>14:02</span><span class="pn-ap-tick"><svg width="14" height="10" viewBox="0 0 14 10" fill="none" aria-hidden="true"><path d="M2.2 5.2 4.6 7.5 11.6 1.6" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></div></div></div></div></div></div><div class="pn-ap-poll" style="box-sizing:border-box;border:1px solid #353B56;border-radius:8px;flex-shrink:0;visibility:inherit"><span style="font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:14px;font-weight:700;line-height:1.2;color:#8A92AB">Who scores next?</span><div class="pn-ap-poll-row"><span style="width:52px;flex-shrink:0"><span style="display:block;width:64%;height:6px;border-radius:999px;background:#2E3450;flex-shrink:0"></span></span><span class="pn-ap-poll-track"><i class="pn-ap-poll-fill" style="width:38%;background:#2E3450"></i></span><span style="width:32px;text-align:right;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:12px;font-weight:700;color:#8A92AB;font-variant-numeric:tabular-nums;flex-shrink:0">38<!-- -->%</span></div><div class="pn-ap-poll-row"><span style="width:52px;flex-shrink:0"><span style="display:block;width:48%;height:6px;border-radius:999px;background:#2E3450;flex-shrink:0"></span></span><span class="pn-ap-poll-track"><i class="pn-ap-poll-fill" style="width:62%;background:rgba(122, 78, 120, 0.44)"></i></span><span style="width:32px;text-align:right;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:12px;font-weight:700;color:#8A92AB;font-variant-numeric:tabular-nums;flex-shrink:0">62<!-- -->%</span></div></div></div></div></div><div class="pn-ap-footnote" style="margin-top:16px;text-align:center;padding:0 4px"><p style="margin:0;font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:14px;line-height:22px;color:#68708B">These are just a few examples of what you can build with PubNub. Don’t see your use case?<!-- --> <a href="https://www.pubnub.com/docs/" target="_blank" rel="noreferrer" class="pn-arrow-link" style="font-family:&#x27;Nunito Sans&#x27;, sans-serif;font-size:14px;line-height:22px;color:#8A92AB;text-decoration:none">Explore our Docs<span class="pn-arrow-link__arrow" aria-hidden="true"> <!-- -->→</span></a></p></div></div></section></div><div class="builder-block builder-a4098cca9fcf413e8697c6ce2482a862 builder-has-component css-5ftfx8" builder-id="builder-a4098cca9fcf413e8697c6ce2482a862"><section data-screen-label="Programmable Pub/Sub" class="pps-root relative z-[1] -mt-6 rounded-t-[24px] bg-[#FAFAFA] px-5 py-16 font-sans md:px-7 md:py-[72px] xl:px-8 xl:py-24"><style>
1430/* ---- shared tab1b pill (light tone), used by chips + mobile tabs ---- */
1431.pps-root .tab1b-row {
1432  display: flex;
1433  align-items: center;
1434  gap: 10px;
1435  overflow-x: auto;
1436  scrollbar-width: none;
1437  -ms-overflow-style: none;
1438  -webkit-overflow-scrolling: touch;
1439}
1440.pps-root .tab1b-row::-webkit-scrollbar { display: none; }
1441.pps-root .tab1b {
1442  flex-shrink: 0;
1443  position: relative;
1444  box-sizing: border-box;
1445  display: inline-flex;
1446  align-items: center;
1447  gap: 8px;
1448  height: 40px;
1449  padding: 0 18px;
1450  border: 1px solid var(--t1b-border);
1451  border-radius: 10px;
1452  background: var(--t1b-bg);
1453  color: var(--t1b-fg);
1454  font: 600 14px/1 var(--t1b-font, inherit);
1455  white-space: nowrap;
1456  cursor: pointer;
1457  overflow: hidden;
1458  transition: color 0.18s ease, background 0.18s ease, border-color 0.18s ease;
1459}
1460.pps-root .tab1b:hover,
1461.pps-root .tab1b:focus-visible {
1462  color: var(--t1b-fg-hover);
1463  background: var(--t1b-bg-hover);
1464  border-color: var(--t1b-border-hover);
1465  outline: none;
1466}
1467.pps-root .tab1b.is-on {
1468  color: var(--t1b-on-fg);
1469  background: var(--t1b-on-bg);
1470  border-color: var(--t1b-on-border);
1471}
1472.pps-root .tab1b:focus-visible {
1473  outline: 2px solid var(--t1b-ring);
1474  outline-offset: 2px;
1475}
1476.pps-root .tab1b--mono { --t1b-font: var(--mono, 'JetBrains Mono', monospace); }
1477.pps-root .tab1b--light {
1478  --t1b-bg: #fff;
1479  --t1b-fg: var(--ink2, #404040);
1480  --t1b-border: var(--line, #d9d9d9);
1481  --t1b-bg-hover: #fff;
1482  --t1b-fg-hover: var(--ink, #171717);
1483  --t1b-border-hover: var(--ink, #171717);
1484  --t1b-on-bg: color-mix(in srgb, var(--cherry, #cd2026) 8%, #fff);
1485  --t1b-on-fg: var(--cherry, #cd2026);
1486  --t1b-on-border: var(--cherry, #cd2026);
1487  --t1b-ring: color-mix(in srgb, var(--cherry, #cd2026) 45%, transparent);
1488}
1489
1490/* ---- arrow link (docs) ---- */
1491.pps-root .pn-arrow-link__arrow {
1492  display: inline-block;
1493  transition: transform 0.2s ease;
1494}
1495.pps-root .pn-arrow-link:hover .pn-arrow-link__arrow,
1496.pps-root .pn-arrow-link:focus-visible .pn-arrow-link__arrow {
1497  transform: translateX(12px);
1498}
1499
1500/* ==========================================================================
1501   Programmable Pub/Sub stage. Light-band tokens match the section
1502   (#FAFAFA / #171717 / #CD2026); the code cards use the v5 dark panel. Every
1503   keyframe's first frame equals the element's resting state so `both` fill
1504   keeps it hidden through its delay.
1505   ========================================================================== */
1506.ps-stage {
1507  --cherry: #cd2026;
1508  --ink: #171717;
1509  --ink2: #404040;
1510  --muted: #737373;
1511  --line: #d9d9d9;
1512  --panel: #0d1330;
1513  --green: #22a06b;
1514  --mono: 'JetBrains Mono', monospace;
1515  --sans: 'Nunito Sans', sans-serif;
1516  --ease: cubic-bezier(0.22, 1, 0.36, 1);
1517  position: relative;
1518  font-family: var(--sans);
1519  color: var(--ink);
1520}
1521
1522.ps-grid {
1523  display: grid;
1524  grid-template-columns: 380px minmax(0, 1fr);
1525  gap: 24px;
1526  align-items: start;
1527}
1528
1529/* ---------- client code card ---------- */
1530
1531.ps-code {
1532  position: relative;
1533  background: var(--panel);
1534  border: 1px solid rgba(255, 255, 255, 0.09);
1535  border-radius: 14px;
1536  box-shadow: 0 18px 50px rgba(10, 14, 35, 0.22);
1537  color: #e8eaed;
1538  font-family: var(--mono);
1539  font-size: 14px;
1540  line-height: 20px;
1541  overflow: hidden;
1542}
1543
1544.ps-code__head {
1545  display: flex;
1546  align-items: center;
1547  gap: 10px;
1548  padding: 10px 16px;
1549  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
1550  font-size: 12px;
1551  font-weight: 600;
1552  line-height: 22px;
1553  color: rgba(255, 255, 255, 0.55);
1554  letter-spacing: 0.02em;
1555}
1556
1557.ps-code__count {
1558  margin-left: auto;
1559  font-variant-numeric: tabular-nums;
1560}
1561
1562.ps-stamp {
1563  margin-left: auto;
1564  padding: 0 10px;
1565  border: 1px solid rgba(62, 207, 110, 0.35);
1566  border-radius: 999px;
1567  background: rgba(62, 207, 110, 0.12);
1568  color: #3ecf6e;
1569  font-size: 12px;
1570  font-weight: 600;
1571  line-height: 20px;
1572  opacity: 0;
1573  animation: ps-stamp 2.2s var(--ease) 0.4s both;
1574}
1575
1576.ps-stamp + .ps-code__count { margin-left: 0; }
1577
1578@keyframes ps-stamp {
1579  0% { opacity: 0; transform: translateY(4px); }
1580  12% { opacity: 1; transform: none; }
1581  84% { opacity: 1; }
1582  100% { opacity: 0; }
1583}
1584
1585.ps-code__body {
1586  box-sizing: content-box;
1587  padding: 14px 16px 16px;
1588  overflow: hidden;
1589  transition: height 0.5s var(--ease);
1590}
1591
1592.ps-code pre,
1593.ps-fncard pre {
1594  margin: 0;
1595  font: inherit;
1596}
1597
1598.ps-line {
1599  display: block;
1600  margin: 0 -6px;
1601  padding: 0 6px;
1602  border-radius: 4px;
1603  white-space: pre;
1604}
1605
1606.ps-line--new { animation: ps-line-new 1.4s var(--ease) both; }
1607
1608@keyframes ps-line-new {
1609  0% { background: rgba(229, 20, 46, 0.34); }
1610  100% { background: transparent; }
1611}
1612
1613.tk-obj { color: #e8eaed; }
1614.tk-method { color: #8fb8ff; }
1615.tk-prop { color: #e5c07b; }
1616.tk-str { color: #3ecf6e; }
1617.tk-kw { color: #ffab70; }
1618.tk-num { color: #ffab70; }
1619.tk-plain { color: rgba(232, 234, 237, 0.85); }
1620.tk-punct { color: rgba(255, 255, 255, 0.42); }
1621
1622/* ---------- scene ---------- */
1623
1624.ps-view {
1625  position: relative;
1626  width: 100%;
1627  aspect-ratio: 768 / 432;
1628  min-width: 0;
1629}
1630
1631.ps-scene {
1632  position: absolute;
1633  left: 0;
1634  top: 0;
1635  width: 768px;
1636  height: 432px;
1637  transform-origin: 0 0;
1638}
1639
1640.ps-svg {
1641  position: absolute;
1642  inset: 0;
1643  display: block;
1644  width: 100%;
1645  height: 100%;
1646  overflow: visible;
1647}
1648
1649.ps-gridmask {
1650  -webkit-mask-image: radial-gradient(ellipse 96% 86% at 50% 50%, #000 40%, transparent 94%);
1651  mask-image: radial-gradient(ellipse 96% 86% at 50% 50%, #000 40%, transparent 94%);
1652}
1653
1654.ps-region {
1655  fill: rgba(205, 32, 38, 0.02);
1656  stroke: rgba(23, 23, 23, 0.22);
1657  stroke-width: 1;
1658  stroke-dasharray: 4 5;
1659}
1660
1661.ps-wire {
1662  fill: none;
1663  stroke: #cbcbcb;
1664  stroke-width: 1.3;
1665  stroke-linecap: round;
1666  stroke-linejoin: round;
1667}
1668
1669.ps-wire--faint {
1670  stroke-dasharray: 3 4;
1671  stroke: #d6d6d6;
1672}
1673
1674.ps-wire--enter { animation: ps-fade-in 0.6s var(--ease) 0.3s both; }
1675
1676@keyframes ps-fade-in {
1677  0% { opacity: 0; }
1678  100% { opacity: 1; }
1679}
1680
1681/* absolutely positioned scene items are centred on (left, top) */
1682.ps-app,
1683.ps-node,
1684.ps-label,
1685.ps-sub,
1686.ps-occ-wrap,
1687.ps-recv,
1688.ps-ring,
1689.ps-fnglow,
1690.ps-hold {
1691  position: absolute;
1692  transform: translate(-50%, -50%);
1693  box-sizing: border-box;
1694}
1695
1696.ps-label {
1697  font: 600 12px/1 var(--mono);
1698  letter-spacing: 0.04em;
1699  color: var(--muted);
1700  white-space: nowrap;
1701}
1702
1703.ps-label--region {
1704  transform: none;
1705  letter-spacing: 0.16em;
1706  text-transform: uppercase;
1707  color: #9a9a9a;
1708}
1709
1710/* above .ps-ring and .ps-fnglow, whose pulses expand through these labels' band */
1711.ps-label--node { z-index: 2; }
1712
1713.ps-app {
1714  display: flex;
1715  align-items: center;
1716  justify-content: center;
1717  border: 1.2px solid var(--ink);
1718  border-radius: 10px;
1719  background: #fff;
1720  font: 14px/1 var(--sans);
1721  color: var(--ink);
1722  z-index: 2;
1723}
1724
1725.ps-node {
1726  display: flex;
1727  align-items: center;
1728  justify-content: center;
1729  border-radius: 50%;
1730  background: #fff;
1731  font: 700 12px/1 var(--mono);
1732  z-index: 2;
1733}
1734
1735.ps-node--fn {
1736  border: 1.4px solid var(--cherry);
1737  color: var(--cherry);
1738}
1739
1740.ps-node--hub {
1741  border: 1.2px solid var(--ink);
1742  color: var(--ink);
1743}
1744
1745.ps-node--hist { border: 1.2px solid var(--ink); }
1746
1747.ps-hist {
1748  display: flex;
1749  flex-direction: column-reverse;
1750  gap: 3px;
1751}
1752
1753.ps-hist__bar {
1754  display: block;
1755  width: 14px;
1756  height: 3px;
1757  border-radius: 2px;
1758  background: var(--cherry);
1759}
1760
1761.ps-hist__bar--empty { background: #e4e4e4; }
1762
1763.ps-hist__bar--new {
1764  opacity: 0;
1765  animation: ps-pop 0.4s var(--ease) both;
1766}
1767
1768@keyframes ps-pop {
1769  0% { opacity: 0; transform: scale(0.6); }
1770  100% { opacity: 1; transform: none; }
1771}
1772
1773.ps-occ-wrap {
1774  z-index: 3;
1775  width: 22px;
1776  height: 22px;
1777}
1778
1779.ps-occ {
1780  position: absolute;
1781  inset: 0;
1782  display: flex;
1783  align-items: center;
1784  justify-content: center;
1785  border: 1px solid var(--line);
1786  border-radius: 999px;
1787  background: #fff;
1788  font: 700 12px/1 var(--mono);
1789  color: var(--ink);
1790  box-shadow: 0 2px 8px rgba(23, 23, 23, 0.08);
1791}
1792
1793.ps-occ--out { animation: ps-fade-out 0.3s var(--ease) 1.9s both; }
1794
1795.ps-occ--in {
1796  opacity: 0;
1797  animation: ps-pop 0.45s var(--ease) 1.9s both;
1798}
1799
1800@keyframes ps-fade-out {
1801  0% { opacity: 1; }
1802  100% { opacity: 0; }
1803}
1804
1805.ps-sub {
1806  display: flex;
1807  align-items: center;
1808  gap: 8px;
1809  padding: 0 12px;
1810  border: 1px solid var(--line);
1811  border-radius: 10px;
1812  background: #fff;
1813  font: 14px/1 var(--sans);
1814  color: var(--ink);
1815  z-index: 2;
1816}
1817
1818.ps-sub__dot {
1819  display: block;
1820  width: 8px;
1821  height: 8px;
1822  border-radius: 50%;
1823  background: var(--green);
1824  flex: 0 0 8px;
1825}
1826
1827.ps-sub--enter { animation: ps-sub-enter 0.6s var(--ease) 0.3s both; }
1828
1829@keyframes ps-sub-enter {
1830  0% { opacity: 0; transform: translate(-30%, -50%); }
1831  100% { opacity: 1; transform: translate(-50%, -50%); }
1832}
1833
1834.ps-sub--joining .ps-sub__dot {
1835  background: #c4c4c4;
1836  animation: ps-online 0.3s var(--ease) 1.9s both;
1837}
1838
1839@keyframes ps-online {
1840  0% { background: #c4c4c4; }
1841  100% { background: var(--green); }
1842}
1843
1844.ps-sub--offline { animation: ps-offline 3.2s var(--ease) 0.3s both; }
1845
1846.ps-sub--offline .ps-sub__dot { animation: ps-dot-offline 3.2s var(--ease) 0.3s both; }
1847
1848@keyframes ps-offline {
1849  0% { opacity: 1; }
1850  15% { opacity: 0.38; }
1851  85% { opacity: 0.38; }
1852  100% { opacity: 1; }
1853}
1854
1855@keyframes ps-dot-offline {
1856  0% { background: var(--green); }
1857  15% { background: #c4c4c4; }
1858  85% { background: #c4c4c4; }
1859  100% { background: var(--green); }
1860}
1861
1862/* ---------- Function card on the network ---------- */
1863
1864.ps-leader {
1865  position: absolute;
1866  width: 2px;
1867  background: var(--cherry);
1868  opacity: 0.55;
1869  z-index: 1;
1870}
1871
1872.ps-leader--enter { animation: ps-fade-in 0.4s var(--ease) both; }
1873
1874.ps-fncard {
1875  position: absolute;
1876  z-index: 3;
1877  box-sizing: border-box;
1878  padding: 8px 12px 10px;
1879  border: 1px solid var(--line);
1880  border-radius: 12px;
1881  background: #fff;
1882  box-shadow: 0 6px 20px rgba(23, 23, 23, 0.06);
1883  color: #3f4560;
1884  font: 400 12px/18px var(--mono);
1885}
1886
1887.ps-fncard--enter { animation: ps-card-enter 0.5s var(--ease) both; }
1888
1889@keyframes ps-card-enter {
1890  0% { opacity: 0; transform: translateY(10px); }
1891  100% { opacity: 1; transform: none; }
1892}
1893
1894.ps-fncard__head {
1895  display: flex;
1896  align-items: center;
1897  gap: 8px;
1898  margin-bottom: 6px;
1899  font-weight: 600;
1900  color: var(--muted);
1901  white-space: nowrap;
1902}
1903
1904.ps-fncard__glyph {
1905  display: inline-flex;
1906  align-items: center;
1907  justify-content: center;
1908  width: 18px;
1909  height: 18px;
1910  border: 1.2px solid var(--cherry);
1911  border-radius: 50%;
1912  color: var(--cherry);
1913  font-weight: 700;
1914  background: #fff;
1915}
1916
1917.ps-fncard .ps-line {
1918  margin: 0;
1919  padding: 0;
1920}
1921
1922/* light-theme tokens for the card on the canvas */
1923.ps-fncard .tk-obj,
1924.ps-fncard .tk-plain,
1925.ps-fncard .tk-prop { color: #3f4560; }
1926.ps-fncard .tk-method { color: #2a5bd7; }
1927.ps-fncard .tk-str { color: #2a8a9a; }
1928.ps-fncard .tk-kw,
1929.ps-fncard .tk-num { color: var(--cherry); }
1930.ps-fncard .tk-punct { color: #9a9a9a; }
1931
1932.ps-fncard__sub {
1933  margin-top: 6px;
1934  font-family: var(--sans);
1935  line-height: 16px;
1936  color: var(--muted);
1937}
1938
1939/* ---------- chapter layer: dots, rings, pills ---------- */
1940
1941.ps-layer {
1942  position: absolute;
1943  inset: 0;
1944  pointer-events: none;
1945}
1946
1947.ps-dot {
1948  position: absolute;
1949  left: 0;
1950  top: 0;
1951  width: 12px;
1952  height: 12px;
1953  border-radius: 50%;
1954  background: var(--cherry);
1955  box-shadow: 0 0 0 3px rgba(205, 32, 38, 0.16);
1956  offset-rotate: 0deg;
1957  offset-distance: 0%;
1958  opacity: 0;
1959  z-index: 4;
1960  animation: ps-travel 1s cubic-bezier(0.4, 0, 0.2, 1) both;
1961}
1962
1963.ps-dot--small {
1964  width: 8px;
1965  height: 8px;
1966  box-shadow: none;
1967}
1968
1969.ps-dot--static {
1970  animation: none;
1971  opacity: 1;
1972}
1973
1974@keyframes ps-travel {
1975  0% { offset-distance: 0%;
1975 opacity: 0; }
1976  10% { opacity: 1; }
1977  92% { opacity: 1; }
1978  100% { offset-distance: 100%; opacity: 0; }
1979}
1980
1981.ps-dot__label {
1982  position: absolute;
1983  left: 50%;
1984  bottom: 14px;
1985  transform: translateX(-50%);
1986  padding: 0 8px;
1987  border: 1px solid var(--line);
1988  border-radius: 999px;
1989  background: #fff;
1990  font: 600 12px/20px var(--mono);
1991  color: var(--ink);
1992  white-space: nowrap;
1993}
1994
1995.ps-hold {
1996  width: 12px;
1997  height: 12px;
1998  border-radius: 50%;
1999  background: var(--cherry);
2000  box-shadow: 0 0 0 3px rgba(205, 32, 38, 0.16);
2001  opacity: 0;
2002  z-index: 4;
2003  animation: ps-hold 0.5s linear both;
2004}
2005
2006@keyframes ps-hold {
2007  0% { opacity: 0; }
2008  4% { opacity: 1; }
2009  96% { opacity: 1; }
2010  100% { opacity: 0; }
2011}
2012
2013.ps-hold__label {
2014  opacity: 0;
2015  animation: ps-label-pop 0.3s var(--ease) both;
2016}
2017
2018@keyframes ps-label-pop {
2019  0% { opacity: 0; transform: translateX(-50%) scale(0.7); }
2020  100% { opacity: 1; transform: translateX(-50%); }
2021}
2022
2023.ps-ring {
2024  width: 60px;
2025  height: 60px;
2026  border: 1.2px solid var(--ink);
2027  border-radius: 50%;
2028  opacity: 0;
2029  z-index: 1;
2030  animation: ps-ring 0.8s ease-out both;
2031}
2032
2033@keyframes ps-ring {
2034  0% { opacity: 0; transform: translate(-50%, -50%) scale(1); }
2035  10% { opacity: 0.7; }
2036  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.9); }
2037}
2038
2039.ps-fnglow {
2040  width: 36px;
2041  height: 36px;
2042  border-radius: 50%;
2043  background: rgba(205, 32, 38, 0.14);
2044  box-shadow: 0 0 0 0 rgba(205, 32, 38, 0.55);
2045  opacity: 0;
2046  z-index: 1;
2047  animation: ps-fnglow 0.9s ease-out both;
2048}
2049
2050.ps-fnglow--static {
2051  animation: none;
2052  opacity: 1;
2053  box-shadow: 0 0 0 10px rgba(205, 32, 38, 0.12);
2054}
2055
2056@keyframes ps-fnglow {
2057  0% { opacity: 0; box-shadow: 0 0 0 0 rgba(205, 32, 38, 0.55); }
2058  20% { opacity: 1; }
2059  100% { opacity: 0; box-shadow: 0 0 0 22px rgba(205, 32, 38, 0); }
2060}
2061
2062.ps-recv {
2063  display: flex;
2064  align-items: center;
2065  gap: 5px;
2066  height: 26px;
2067  padding: 0 10px 0 8px;
2068  border: 1px solid var(--line);
2069  border-radius: 13px;
2070  background: #fff;
2071  box-shadow: 0 2px 8px rgba(23, 23, 23, 0.08);
2072  font: 600 12px/1 var(--sans);
2073  color: var(--ink);
2074  white-space: nowrap;
2075  opacity: 0;
2076  z-index: 5;
2077  animation: ps-recv 1.5s var(--ease) both;
2078}
2079
2080.ps-recv__mark {
2081  display: flex;
2082  width: 13px;
2083  height: 13px;
2084  color: var(--green);
2085}
2086
2087.ps-recv__mark svg {
2088  display: block;
2089  width: 13px;
2090  height: 13px;
2091}
2092
2093@keyframes ps-recv {
2094  0% { opacity: 0; transform: translate(-50%, -30%); }
2095  12% { opacity: 1; transform: translate(-50%, -50%); }
2096  82% { opacity: 1; transform: translate(-50%, -50%); }
2097  100% { opacity: 0; transform: translate(-50%, -50%); }
2098}
2099
2100/* ---------- chips, docs link, caption ---------- */
2101
2102.ps-bar {
2103  display: flex;
2104  flex-wrap: wrap;
2105  align-items: center;
2106  gap: 10px;
2107  margin-top: 24px;
2108}
2109
2110/* The chip's shape, colours and states come from the shared .tab1b;
2111   .ps-chip only carries the autoplay progress bar below. */
2112.ps-chip__bar {
2113  position: absolute;
2114  left: 0;
2115  bottom: 0;
2116  height: 2px;
2117  width: 0;
2118  background: var(--cherry);
2119}
2120
2121.ps-chip.is-done .ps-chip__bar {
2122  width: 100%;
2123  opacity: 0.45;
2124}
2125
2126.ps-chip.is-on .ps-chip__bar { animation: ps-bar linear both; }
2127
2128@keyframes ps-bar {
2129  from { width: 0; }
2130  to { width: 100%; }
2131}
2132
2133.ps-replay {
2134  display: inline-flex;
2135  align-items: center;
2136  gap: 8px;
2137  height: 36px;
2138  padding: 0 16px;
2139  border: 1px solid var(--cherry);
2140  border-radius: 999px;
2141  background: var(--cherry);
2142  color: #fff;
2143  font: 700 14px/1 var(--sans);
2144  cursor: pointer;
2145  animation: ps-pop 0.4s var(--ease) both;
2146  transition: background 0.2s ease, border-color 0.2s ease;
2147}
2148
2149.ps-replay:hover,
2150.ps-replay:focus-visible {
2151  background: #b31c21;
2152  border-color: #b31c21;
2153  outline: none;
2154}
2155
2156.ps-replay svg {
2157  display: block;
2158  width: 14px;
2159  height: 14px;
2160}
2161
2162.ps-docs {
2163  display: inline-flex;
2164  align-items: center;
2165  gap: 8px;
2166  margin-left: auto;
2167  color: var(--cherry);
2168  font: 14px/1 var(--sans);
2169  text-decoration: none;
2170}
2171
2172.ps-caption {
2173  margin: 14px 0 0;
2174  min-height: 24px;
2175  font: 400 16px/24px var(--sans);
2176  color: var(--ink2);
2177}
2178
2179.ps-kicker {
2180  margin-right: 12px;
2181  font: 600 12px/1 var(--mono);
2182  letter-spacing: 0.22em;
2183  text-transform: uppercase;
2184  color: var(--muted);
2185  vertical-align: 1px;
2186}
2187
2188.ps-sr {
2189  position: absolute;
2190  width: 1px;
2191  height: 1px;
2192  margin: -1px;
2193  padding: 0;
2194  overflow: hidden;
2195  clip: rect(0 0 0 0);
2196  white-space: nowrap;
2197  border: 0;
2198}
2199
2200/* ==========================================================================
2201   Mobile vertical stage (.psm) — phone + tablet, below the 1246px desktop
2202   breakpoint. Additive only; reuses the .ps-* primitives above.
2203   ========================================================================== */
2204
2205.psm {
2206  max-width: 560px;
2207  margin: 0 auto;
2208}
2209
2210.psm-tabs {
2211  position: relative;
2212  margin-bottom: 16px;
2213}
2214
2215.psm-tabs-scroll {
2216  scroll-behavior: smooth;
2217}
2218
2219/* Scroll affordance: a subtle section-canvas (#FAFAFA) fade over whichever edge still
2220   has tabs to scroll to. Toggled via data-visible from the scroll position — same
2221   behaviour as the "Your App" industry pills, in this section's light colours. */
2222.psm-tabs-fade {
2223  position: absolute;
2224  top: 0;
2225  bottom: 0;
2226  width: 40px;
2227  pointer-events: none;
2228  opacity: 0;
2229  transition: opacity 150ms ease;
2230  z-index: 2;
2231}
2232
2233.psm-tabs-fade[data-visible='true'] {
2234  opacity: 1;
2235}
2236
2237.psm-tabs-fade--left {
2238  left: 0;
2239  background: linear-gradient(to right, #fafafa, rgba(250, 250, 250, 0));
2240}
2241
2242.psm-tabs-fade--right {
2243  right: 0;
2244  background: linear-gradient(to left, #fafafa, rgba(250, 250, 250, 0));
2245}
2246
2247.psm-code { margin-bottom: 0; }
2248
2249.psm .ps-code__body { padding-top: 16px; }
2250
2251.psm-view {
2252  position: relative;
2253  width: 100%;
2254  max-width: 400px;
2255  margin: 0 auto 22px;
2256  aspect-ratio: 340 / 470;
2257  min-width: 0;
2258}
2259
2260.psm-scene {
2261  position: absolute;
2262  left: 0;
2263  top: 0;
2264  width: 340px;
2265  height: 470px;
2266  transform-origin: 0 0;
2267}
2268
2269.psm-cap { transform: translateY(-50%); }
2270
2271.psm-cap--above { transform: translate(-50%, -100%); }
2272
2273.psm-cap--left { transform: translate(-100%, -50%); }
2274
2275.psm-sub {
2276  gap: 6px;
2277  padding: 0 8px;
2278  font-size: 12px;
2279}
2280
2281.psm-caption {
2282  min-height: 48px;
2283  margin-top: 18px;
2284}
2285
2286.psm-foot {
2287  display: flex;
2288  flex-direction: column;
2289  gap: 14px;
2290  margin-top: 18px;
2291  padding-top: 18px;
2292  border-top: 1px solid var(--line);
2293}
2294
2295.psm-diy {
2296  margin: 0;
2297  font: 400 15px/22px var(--sans);
2298  color: var(--ink2);
2299}
2300
2301.psm-docs { margin-left: 0; }
2302
2303/* ---------- frozen frame (reduced motion) ---------- */
2304
2305.ps-stage.is-static *,
2306.ps-stage.is-static *::before,
2307.ps-stage.is-static *::after {
2308  animation: none !important;
2309  transition: none !important;
2310}
2311
2312.ps-stage.is-static .ps-chip.is-done .ps-chip__bar { width: 100%; }
2313</style><div class="mx-auto max-w-[1220px]"><div class="mb-7"><div><div class="text-left "><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-navy-900 ">Connect. Send.<br/>Receive. Instantly.</h2></div></div><p class="mt-4 max-w-[480px] text-[18px] font-normal leading-[28px] text-[#171717] [text-wrap:pretty]">
2313Low-latency publish/subscribe you can program: filter, group, annotate, persist, and moderate messages on the network itself.</p></div><div class="ps-stage psm"><div data-markdown-ignore="true" class="psm-tabs"><div class="psm-tabs-scroll tab1b-row" role="tablist" aria-label="Programmable Pub/Sub chapters"><button type="button" role="tab" aria-selected="true" class="psm-tab tab1b tab1b--light tab1b--mono is-on">publish() + subscribe()</button><button type="button" role="tab" aria-selected="false" class="psm-tab tab1b tab1b--light tab1b--mono">fn · Before Publish</button><button type="button" role="tab" aria-selected="false" class="psm-tab tab1b tab1b--light tab1b--mono">hereNow()</button><button type="button" role="tab" aria-selected="false" class="psm-tab tab1b tab1b--light tab1b--mono">fetchMessages()</button></div><div class="psm-tabs-fade psm-tabs-fade--left" data-visible="false" aria-hidden="true"></div><div class="psm-tabs-fade psm-tabs-fade--right" data-visible="false" aria-hidden="true"></div></div><div data-markdown-ignore="true" class="psm-view" role="img" aria-label="Programmable Pub/Sub demo — a small app publishing, subscribing, running a Function, tracking presence and replaying history"><div class="psm-scene" style="transform:scale(1)" aria-hidden="true"><svg class="ps-svg" viewBox="0 0 340 470" preserveAspectRatio="none"><defs><pattern id="psm-grid" width="24" height="24" patternUnits="userSpaceOnUse"><path d="M 24 0 L 0 0 0 24" fill="none" stroke="#DCDCDC" stroke-width="0.6"></path></pattern></defs><g class="ps-gridmask"><rect width="340" height="470" fill="url(#psm-grid)"></rect></g><rect class="ps-region" x="24" y="104" width="292" height="220" rx="16"></rect><path class="ps-wire" d="M170,68 V208"></path><path class="ps-wire" d="M170,268 V360 H56 V404"></path><path class="ps-wire" d="M170,268 V360 H128 V404"></path><path class="ps-wire" d="M170,268 V360 H200 V404"></path><path class="ps-wire" d="M188,220 H272 V170"></path><path class="ps-wire ps-wire--faint" d="M272,170 V360 H200 V404"></path></svg><div class="ps-label ps-label--region" style="left:40px;top:118px">PubNub</div><div class="ps-app" style="left:170px;top:46px;width:150px;height:44px">Your app</div><div class="ps-label psm-cap psm-cap--left" style="left:144px;top:152px">function</div><div class="ps-node ps-node--fn" style="left:170px;top:152px;width:36px;height:36px">fn</div><div class="ps-label psm-cap" style="left:208px;top:238px">channel</div><div class="ps-node ps-node--hub" style="left:170px;top:238px;width:60px;height:60px">scores</div><div class="ps-occ-wrap" style="left:194px;top:212px"><span class="ps-occ">3</span></div><div class="ps-node ps-node--hist" style="left:272px;top:152px;width:36px;height:36px"><span class="ps-hist"><i class="ps-hist__bar ps-hist__bar--new" style="animation-delay:2500ms"></i><i class="ps-hist__bar ps-hist__bar--empty"></i><i class="ps-hist__bar ps-hist__bar--empty"></i></span></div><div class="ps-label psm-cap psm-cap--above" style="left:272px;top:124px">history</div><div class="ps-sub psm-sub" style="left:56px;top:424px;width:70px;height:40px"><i class="ps-sub__dot"></i>web</div><div class="ps-sub psm-sub" style="left:128px;top:424px;width:70px;height:40px"><i class="ps-sub__dot"></i>iOS</div><div class="ps-sub psm-sub" style="left:200px;top:424px;width:70px;height:40px"><i class="ps-sub__dot"></i>Android</div><div class="ps-layer"><div class="ps-dot" style="offset-path:path(&#x27;M170,68 V208&#x27;);animation-delay:400ms;animation-duration:1200ms"><span class="ps-dot__label">{ goal: 1 }</span></div><div class="ps-ring" style="left:170px;top:238px;animation-delay:1600ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path(&#x27;M170,268 V360 H56 V404&#x27;);animation-delay:1750ms;animation-duration:1100ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path(&#x27;M170,268 V360 H128 V404&#x27;);animation-delay:1840ms;animation-duration:1100ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path(&#x27;M170,268 V360 H200 V404&#x27;);animation-delay:1930ms;animation-duration:1100ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path(&#x27;M188,220 H272 V170&#x27;);animation-delay:1750ms;animation-duration:800ms"></div><div class="ps-recv" style="left:56px;top:392px;animation-delay:2850ms"><span class="ps-recv__mark" aria-hidden="true"><svg viewBox="0 0 24 24">
2313<path fill="currentColor" d="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"></path></svg></span>received</div><div class="ps-recv" style="left:128px;top:392px;animation-delay:2850ms"><span class="ps-recv__mark" aria-hidden="true"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"></path></svg></span>received</div><div class="ps-recv" style="left:200px;top:392px;animation-delay:2850ms"><span class="ps-recv__mark" aria-hidden="true"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"></path></svg></span>received</div></div></div></div><div class="ps-code psm-code" aria-label="app.js"><div class="ps-code__body"><pre><code><span class="ps-line ps-line--new"><span class="tk-obj">pubnub</span><span class="tk-punct">.</span><span class="tk-method">addListener</span><span class="tk-punct">(</span><span class="tk-punct">{</span></span><span class="ps-line ps-line--new">  <span class="tk-prop">message</span><span class="tk-punct">:</span> <span class="tk-punct">(</span><span class="tk-obj">e</span><span class="tk-punct">)</span> <span class="tk-punct">=</span><span class="tk-punct">&gt;</span> <span class="tk-method">render</span><span class="tk-punct">(</span><span class="tk-obj">e</span><span class="tk-punct">.</span><span class="tk-plain">message</span><span class="tk-punct">)</span><span class="tk-punct">,</span></span><span class="ps-line ps-line--new"><span class="tk-punct">}</span><span class="tk-punct">)</span></span><span class="ps-line ps-line--new"><span class="tk-obj">pubnub</span><span class="tk-punct">.</span><span class="tk-method">channel</span><span class="tk-punct">(</span><span class="tk-str">&#x27;scores&#x27;</span><span class="tk-punct">)</span></span><span class="ps-line ps-line--new">  <span class="tk-punct">.</span><span class="tk-method">subscription</span><span class="tk-punct">(</span><span class="tk-punct">)</span><span class="tk-punct">.</span><span class="tk-method">subscribe</span><span class="tk-punct">(</span><span class="tk-punct">)</span></span><span class="ps-line ps-line--new"> </span><span class="ps-line ps-line--new"><span class="tk-kw">await</span> <span class="tk-obj">pubnub</span><span class="tk-punct">.</span><span class="tk-method">publish</span><span class="tk-punct">(</span><span class="tk-punct">{</span></span><span class="ps-line ps-line--new">  <span class="tk-prop">channel</span><span class="tk-punct">:</span> <span class="tk-str">&#x27;scores&#x27;</span><span class="tk-punct">,</span></span><span class="ps-line ps-line--new">  <span class="tk-prop">message</span><span class="tk-punct">:</span> <span class="tk-punct">{</span> <span class="tk-prop">goal</span><span class="tk-punct">:</span> <span class="tk-num">1</span> <span class="tk-punct">}</span></span><span class="ps-line ps-line--new"><span class="tk-punct">}</span><span class="tk-punct">)</span></span></code></pre></div></div><p class="ps-caption psm-caption">Clients publish to named channels, and subscribe to the channels they care about.</p><div class="psm-foot"><p class="psm-diy"><span class="ps-kicker">You didn&#x27;t build</span>ordered delivery, catch-up after reconnect, and fan-out at scale</p><a class="pn-arrow-link ps-docs psm-docs" href="https://www.pubnub.com/docs/general/messages/overview" target="_blank" rel="noreferrer">Read the Pub/Sub docs<!-- --> <span class="pn-arrow-link__arrow" aria-hidden="true">→</span></a></div><p class="ps-sr">Send and receive: the app publishes a message to the scores channel and three subscribed devices receive it.</p></div></div></section></div><div class="builder-block builder-e5b476703b724032936ddc041cdb7fb0 builder-has-component css-5ftfx8" builder-id="builder-e5b476703b724032936ddc041cdb7fb0"><section data-screen-label="Customer stories" class="relative z-[1] rounded-t-[24px] bg-[#0A0E23] px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><div class="mx-auto max-w-[1220px] [container-type:inline-size]"><div class="md:[zoom:min(1,tan(atan2(100cqw,1220px)))]"><p class="m-0 text-[16px] font-[500] uppercase leading-none tracking-[0.04em] text-[#FF7585]">IN PRODUCTION</p><div class="mt-5 flex items-center justify-between gap-4"><h2 class="m-0 text-[28px] font-[700] leading-[1.15] tracking-[-0.01em] text-white [text-wrap:balance] md:text-[32px]">Behind the moments that matter.</h2><a href="https://www.pubnub.com/customers/" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2.5 whitespace-nowrap text-[15px] font-[500] leading-none text-white no-underline transition-colors hover:text-[#FF7585] focu
2313s-visible:text-[#FF7585] hidden shrink-0 md:inline-flex">All customer stories<svg aria-hidden="true" viewBox="0 0 16 16" class="h-3 w-3 shrink-0 transition-transform duration-200 group-hover:translate-x-1 group-focus-visible:translate-x-1"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></div><p class="m-0 text-[16px] leading-[1.5] text-white/80 mt-3 max-w-[560px]">Reported customer results, not platform-wide guarantees.</p><a href="https://www.pubnub.com/customers/" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2.5 whitespace-nowrap text-[15px] font-[500] leading-none text-white no-underline transition-colors hover:text-[#FF7585] focus-visible:text-[#FF7585] mt-[18px] md:hidden">All customer stories<svg aria-hidden="true" viewBox="0 0 16 16" class="h-3 w-3 shrink-0 transition-transform duration-200 group-hover:translate-x-1 group-focus-visible:translate-x-1"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><div class="mt-10 overflow-hidden rounded-[24px] border border-white/[.12]"><a href="https://www.pubnub.com/customers/dazn/" target="_blank" rel="noreferrer" aria-label="Read the DAZN story" class="group relative flex min-w-0 flex-col text-inherit no-underline transition-colors duration-200 hover:bg-white/[.04] focus-visible:bg-white/[.04] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[#FF7585] md:grid md:grid-cols-[minmax(0,1.15fr)_minmax(0,1fr)]"><div class="flex min-w-0 flex-col p-6 md:p-10"><div class="flex flex-wrap items-center justify-between gap-x-4 gap-y-3" style="min-height:50px"><span class="relative block shrink-0 overflow-hidden" style="width:50px;height:50px"><img src="/logos/customers/dazn.svg" alt="DAZN" loading="lazy" class="absolute block max-w-none" style="width:150px;height:75px;left:-50px;top:-12.5px"/></span><span class="shrink-0 whitespace-nowrap rounded-full border border-[#FF7585]/70 bg-cherry/[.16] px-2.5 py-[5px] text-[11px] font-[500] uppercase leading-[12px] text-[#FF7585]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">Sports, Media, Entertainment</span></div><div class="mt-8"><p class="m-0 flex flex-wrap items-baseline gap-x-2.5 gap-y-1 whitespace-nowrap font-[700] leading-none tracking-[-0.01em] text-white"><span class="text-[36px] md:text-[40px]">212M</span><span class="text-[20px]">Requests per minute</span></p><p class="m-0 mt-3 text-[13px] leading-none text-white" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">FIFA Club World Cup 2025</p></div><h3 class="m-0 mt-7 hidden text-[24px] font-[700] leading-[1.2] tracking-[-0.01em] text-white [text-wrap:balance] md:block">More than watching. Being part of it.</h3><p class="m-0 text-[16px] leading-[1.5] text-white/80 mt-3 hidden md:block">DAZN used PubNub to bring chat, reactions, and social viewing to football fans.</p><span class="inline-flex items-center gap-2.5 whitespace-nowrap text-[15px] font-[500] leading-none text-white transition-colors group-hover:text-[#FF7585] group-focus-visible:text-[#FF7585] mt-6 self-start">Read the DAZN story<svg aria-hidden="true" viewBox="0 0 16 16" class="h-3 w-3 shrink-0 transition-transform duration-200 group-hover:translate-x-1 group-focus-visible:translate-x-1"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></div><div class="relative hidden aspect-[1434/888] overflow-hidden md:block md:aspect-auto"><img src="/customers/image.jpg" alt="DAZN app on a phone streaming a live match with a 1,000,000 viewer count and fan reactions" loading="lazy" class="absolute inset-0 h-full w-full object-cover transition-transform duration-500 ease-out group-hover:scale-[1.03] group-focus-visible:scale-[1.03]"/></div></a><div class="grid border-t border-white/[.12] md:grid-cols-3"><a href="https://www.pubnub.com/customers/gameloft/" target="_blank" rel="noreferrer" aria-label="Read the Gameloft story" class="group relative flex min-w-0 flex-col text-inherit no-underline transition-colors duration-200 hover:bg-white/[.04] focus-visible:bg-white/[.04] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[#FF7585] h-full p-6 md:p-10 "><div class="flex flex-wrap items-center justify-between gap-x-4 gap-y-3" style="min-height:34px"><span class="relative block shrink-0 overflow-hidden" style="width:158.17490494296578px;height:32px"><img src="/logos/customers/gameloft.svg" alt="Gameloft" loading="lazy" class="absolute block max-w-none" style="width:197.1102661596958px;height:121.67300380228137px;left:-19.46768060836502px;top:-44.89733840304182px"/></span><span class="shrink-0 whitespace-nowrap rounded-full border border-[#FF7585]/70 bg-cherry/[.16] px-2.5 py-[5px] text-[11px] font-[500] uppercase leading-[12px] text-[#FF7585]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">Gaming</span></div><div class="mt-9"><p class="m-0 flex flex-wrap items-baseline gap-x-2.5 gap-y-1 whitespace-nowrap font-[700] leading-none tracking-[-0.01em] text-white"><span class="text-[36px] md:text-[40px]">15%</span><span class="text-[20px]">less dev time</span></p></div><p class="m-0 text-[16px] leading-[1.5] text-white/80 mt-4">Ship the feature. Skip the plumbing.</p><span class="inline-flex items-center gap-2.5 whitespace-nowrap text-[15px] font-[500] leading-none text-white transition-colors group-hover:text-[#FF7585] group-focus-visible:text-[#FF7585] mt-auto self-start pt-8">Read the Gameloft story<svg aria-hidden="true" viewBox="0 0 16 16" class="h-3 w-3 shrink-0 transition-transform duration-200 group-hover:translate-x-1 group-focus-visible:translate-x-1"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></a>
2313<a href="https://www.pubnub.com/customers/swiggy/" target="_blank" rel="noreferrer" aria-label="Read the Swiggy story" class="group relative flex min-w-0 flex-col text-inherit no-underline transition-colors duration-200 hover:bg-white/[.04] focus-visible:bg-white/[.04] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[#FF7585] h-full p-6 md:p-10 border-t border-white/[.12] md:border-l md:border-t-0"><div class="flex flex-wrap items-center justify-between gap-x-4 gap-y-3" style="min-height:34px"><span class="relative block shrink-0 overflow-hidden" style="width:107.68421052631581px;height:31px"><img src="/logos/customers/swiggy.svg" alt="Swiggy" loading="lazy" class="absolute block max-w-none" style="width:163.1578947368421px;height:95.97523219814242px;left:-27.736842105263158px;top:-32.631578947368425px"/></span><span class="shrink-0 whitespace-nowrap rounded-full border border-[#FF7585]/70 bg-cherry/[.16] px-2.5 py-[5px] text-[11px] font-[500] uppercase leading-[12px] text-[#FF7585]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">Customer Service</span></div><div class="mt-9"><p class="m-0 flex flex-wrap items-baseline gap-x-2.5 gap-y-1 whitespace-nowrap font-[700] leading-none tracking-[-0.01em] text-white"><span class="text-[20px]">Up to</span><span class="text-[36px] md:text-[40px]">70%</span><span class="text-[20px]">tickets automated</span></p></div><p class="m-0 text-[16px] leading-[1.5] text-white/80 mt-4">Answers before the question lands.</p><span class="inline-flex items-center gap-2.5 whitespace-nowrap text-[15px] font-[500] leading-none text-white transition-colors group-hover:text-[#FF7585] group-focus-visible:text-[#FF7585] mt-auto self-start pt-8">Read the Swiggy story<svg aria-hidden="true" viewBox="0 0 16 16" class="h-3 w-3 shrink-0 transition-transform duration-200 group-hover:translate-x-1 group-focus-visible:translate-x-1"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></a><a href="https://www.pubnub.com/customers/manadr-mobile-health/" target="_blank" rel="noreferrer" aria-label="Read the ManaDr story" class="group relative flex min-w-0 flex-col text-inherit no-underline transition-colors duration-200 hover:bg-white/[.04] focus-visible:bg-white/[.04] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[#FF7585] h-full p-6 md:p-10 border-t border-white/[.12] md:border-l md:border-t-0"><div class="flex flex-wrap items-center justify-between gap-x-4 gap-y-3" style="min-height:34px"><span class="relative block shrink-0 overflow-hidden" style="width:150.45px;height:34px"><img src="/logos/customers/manadr.svg" alt="ManaDr" loading="lazy" class="absolute block max-w-none" style="width:178.5px;height:85px;left:-13.6px;top:-25.5px"/></span><span class="shrink-0 whitespace-nowrap rounded-full border border-[#FF7585]/70 bg-cherry/[.16] px-2.5 py-[5px] text-[11px] font-[500] uppercase leading-[12px] text-[#FF7585]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">Digital Health</span></div><div class="mt-9"><p class="m-0 flex flex-wrap items-baseline gap-x-2.5 gap-y-1 whitespace-nowrap font-[700] leading-none tracking-[-0.01em] text-white"><span class="text-[36px] md:text-[40px]">250,000</span><span class="text-[20px]">patients reached</span></p></div><p class="m-0 text-[16px] leading-[1.5] text-white/80 mt-4">Care that reaches you the moment it matters.</p><span class="inline-flex items-center gap-2.5 whitespace-nowrap text-[15px] font-[500] leading-none text-white transition-colors group-hover:text-[#FF7585] group-focus-visible:text-[#FF7585] mt-auto self-start pt-8">Read the ManaDr story<svg aria-hidden="true" viewBox="0 0 16 16" class="h-3 w-3 shrink-0 transition-transform duration-200 group-hover:translate-x-1 group-focus-visible:translate-x-1"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></a></div></div></div></div></section></div><div class="builder-block builder-b236ba83714f47ac9cb53fea3bcd1ba6 builder-has-component css-5ftfx8" builder-id="builder-b236ba83714f47ac9cb53fea3bcd1ba6"><section data-screen-label="What that unlocks" class="relative z-[1] -mt-6 rounded-t-[24px] bg-white px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><style>
2314@keyframes pnSweep{from{background-position:250% 0}to{background-position:-250% 0}}
2315@keyframes pnPulse{0%,100%{opacity:1}50%{opacity:.4}}
2316.pn-viz-sweep{background:linear-gradient(100deg,transparent 30%,rgba(205,32,38,.10) 50%,transparent 70%);background-size:250% 100%;animation:pnSweep 3.2s linear infinite}
2317.pn-viz-dot{animation:pnPulse 1.6s infinite}
2318@media(prefers-reduced-motion:reduce){.pn-viz-sweep{animation-duration:6.4s}.pn-viz-dot{animation-duration:3.2s}}
2319</style><div class="mx-auto max-w-[1220px]"><div class="max-w-[720px]"><div class="text-left "><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-navy-900 ">What PubNub promises you.</h2></div></div><div data-markdown-ignore="true" class="mt-11 hidden items-start gap-12 xl:grid xl:grid-cols-[1.05fr_1fr]"><div class="flex flex-col"><button type="button" aria-pressed="true" class="group relative flex w-full items-baseline gap-5 border-t border-navy-900/[.09] py-6 pl-2 pr-4 text-left transition-colors first:border-t-0"><span aria-hidden="true" class="absolute -left-6 bottom-5 top-5 w-[3px] rounded-[2px] bg-gradient-to-b from-cherry to-[#FF7585] transition-opacity opacity-100"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-cherry">01</span><span class="text-[18px] leading-[28px] tracking-[-0.01em] transition-colors font-[700] text-navy-900">Build and ship interactive features faster</span></button><button type="button" aria-pressed="false" class="group relative flex w-full items-baseline gap-5 border-t border-navy-900/[.09] py-6 pl-2 pr-4 text-left transition-colors first:border-t-0"><span aria-hidden="true" class="absolute -left-6 bottom-5 top-5 w-[3px] rounded-[2px] bg-gradient-to-b from-cherry to-[#FF7585] transition-opacity opacity-0"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">02</span><span class="text-[18px] leading-[28px] tracking-[-0.01em] transition-colors font-[600] text-navy-500">Keep every user, device, and service in sync</span></button><button type="button" aria-pressed="false" class="group relative flex w-full items-baseline gap-5 border-t border-navy-900/[.09] py-6 pl-2 pr-4 text-left transition-colors first:border-t-0"><span aria-hidden="true" class="absolute -left-6 bottom-5 top-5 w-[3px] rounded-[2px] bg-gradient-to-b from-cherry to-[#FF7585] transition-opacity opacity-0"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">03</span><span class="text-[18px] leading-[28px] tracking-[-0.01em] transition-colors font-[600] text-navy-500">Scale globally without rebuilding</span></button><button type="button" aria-pressed="false" class="group relative flex w-full items-baseline gap-5 border-t border-navy-900/[.09] py-6 pl-2 pr-4 text-left transition-colors first:border-t-0"><span aria-hidden="true" class="absolute -left-6 bottom-5 top-5 w-[3px] rounded-[2px] bg-gradient-to-b from-cherry to-[#FF7585] transition-opacity opacity-0"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">04</span><span class="text-[18px] leading-[28px] tracking-[-0.01em] transition-colors font-[600] text-navy-500">
2319Save on infrastructure and operations teams</span></button><button type="button" aria-pressed="false" class="group relative flex w-full items-baseline gap-5 border-t border-navy-900/[.09] py-6 pl-2 pr-4 text-left transition-colors first:border-t-0"><span aria-hidden="true" class="absolute -left-6 bottom-5 top-5 w-[3px] rounded-[2px] bg-gradient-to-b from-cherry to-[#FF7585] transition-opacity opacity-0"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">05</span><span class="text-[18px] leading-[28px] tracking-[-0.01em] transition-colors font-[600] text-navy-500">Get peace of mind across your entire live application layer</span></button></div><div class="xl:sticky xl:top-24 xl:self-start"><div class="relative flex min-h-[440px] flex-col overflow-hidden rounded-[18px] bg-[#0A0E23] p-8 shadow-[0_24px_60px_rgba(10,14,35,.28)]"><span aria-hidden="true" class="pointer-events-none absolute -right-6 -top-8 text-[170px] font-[900] leading-none text-white/[.045]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">01</span><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-white/60">Your benefits</div><p class="mb-6 mt-2.5 text-[15.5px] leading-[1.65] max-w-[440px] text-white/[.85]">Faster development, shorter time to market, and more engineering capacity devoted to the customer experience. Begin with programmable pub/sub and add capabilities as your application requires.</p><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-white/60">Runs on</div><div class="mt-2.5 flex flex-wrap gap-1.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-white/10 bg-white/[.07] text-white/[.82]">Pub/Sub Messaging</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-white/10 bg-white/[.07] text-white/[.82]">Message Persistence</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-white/10 bg-white/[.07] text-white/[.82]">Data Sync</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-white/10 bg-white/[.07] text-white/[.82]">50+ SDKs</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-white/10 bg-white/[.07] text-white/[.82]">MCP Server</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-white/10 bg-white/[.07] text-white/[.82]">Skills</span></div><div class="relative mt-6 overflow-hidden rounded-[12px] border border-white/[.09] bg-[#0D1330] px-[18px] py-3.5"><span aria-hidden="true" class="pointer-events-none absolute inset-0 pn-viz-sweep"></span><div class="relative flex items-center gap-2.5"><span aria-hidden="true" class="pn-viz-dot h-[7px] w-[7px] rounded-full bg-[#6FDE9B]"></span><span class="text-[13px] tracking-[0.14em] text-white/70" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">FIRST PUBLISH</span><span class="ml-auto text-[16px] font-[700] text-[#FF7585]" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">28ms</span></div><div class="relative mt-2.5 whitespace-pre-line text-[12px] leading-[1.9] text-white/60" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace">$ pubnub publish -c orders.live
2320→ delivered · 4 subscribers · 28ms
2321→ persisted · replay available</div></div></div></div></div><div class="mt-8 xl:hidden"><div class="border-t border-navy-900/[.09]"><div class="border-b border-navy-900/[.09]"><h3 class="m-0"><button type="button" aria-expanded="true" aria-controls="promise-ship-faster" class="flex w-full items-center gap-3 py-5 text-left"><span class="flex-1 text-[17px] leading-[1.3] tracking-[-0.01em] font-[700] text-navy-900">Build and ship interactive features faster</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform rotate-45">+</span></button></h3><div id="promise-ship-faster" aria-hidden="false" class="overflow-hidden transition-[max-height] duration-300 max-h-[900px]"><div class="pb-6 pr-2"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Your benefits</div><p class="mb-6 mt-2.5 text-[15.5px] leading-[1.65] text-navy-500">Faster development, shorter time to market, and more engineering capacity devoted to the customer experience. Begin with programmable pub/sub and add capabilities as your application requires.</p><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Runs on</div><div class="mt-2.5 flex flex-wrap gap-1.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Pub/Sub Messaging</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Message Persistence</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Data Sync</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">50+ SDKs</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">MCP Server</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Skills</span></div></div></div></div><div class="border-b border-navy-900/[.09]"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="promise-in-sync" class="flex w-full items-center gap-3 py-5 text-left"><span class="flex-1 text-[17px] leading-[1.3] tracking-[-0.01em] font-[600] text-navy-500">Keep every user, device, and service in sync</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="promise-in-sync" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-6 pr-2"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Your benefits</div><p class="mb-6 mt-2.5 text-[15.5px] leading-[1.65] text-navy-500">Consistent application state and reliable, responsive experiences across users, devices, and networks: each participant gets the right update, at the right time, with the right context.</p><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Runs on</div><div class="mt-2.5 flex flex-wrap gap-1.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Presence</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Data Sync</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Message Actions</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Files</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Channel Groups</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Subscribe Filters</span></div></div></div></div><div class="border-b border-navy-900/[.09]"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="promise-scale-globally" class="flex w-full items-center gap-3 py-5 text-left"><span class="flex-1 text-[17px] leading-[1.3] tracking-[-0.01em] font-[600] text-navy-500">Scale globally without rebuilding</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="promise-scale-globally" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-6 pr-2"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Your benefits</div><p class="mb-6 mt-2.5 text-[15.5px] leading-[1.65] text-navy-500">Global scalability and predictable performance without any infrastru
2321cture redesign. PubNub operates the regional deployment, traffic distribution, capacity, and failover.</p><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Runs on</div><div class="mt-2.5 flex flex-wrap gap-1.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Global PoPs</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Multi-region</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Region pinning</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">99.999% SLA</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">14 years of ops</span></div></div></div></div><div class="border-b border-navy-900/[.09]"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="promise-save-infra-ops" class="flex w-full items-center gap-3 py-5 text-left"><span class="flex-1 text-[17px] leading-[1.3] tracking-[-0.01em] font-[600] text-navy-500">Save on infrastructure and operations teams</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="promise-save-infra-ops" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-6 pr-2"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Your benefits</div><p class="mb-6 mt-2.5 text-[15.5px] leading-[1.65] text-navy-500">No infrastructure work and no operational distractions, so your whole team stays focused on the product. You keep control of your app, data models, and logic.</p><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Runs on</div><div class="mt-2.5 flex flex-wrap gap-1.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Managed global network</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Automated scaling</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Operational monitoring</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Global failover</span></div></div></div></div><div class="border-b border-navy-900/[.09]"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="promise-peace-of-mind" class="flex w-full items-center gap-3 py-5 text-left"><span class="flex-1 text-[17px] leading-[1.3] tracking-[-0.01em] font-[600] text-navy-500">Get peace of mind across your entire live application layer</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="promise-peace-of-mind" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-6 pr-2"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Your benefits</div><p class="mb-6 mt-2.5 text-[15.5px] leading-[1.65] text-navy-500">A single secure, compliant layer for everything live in your application. Access control, encryption, and region controls are set once and enforced across messaging, presence, data, and logic, not stitched across disconnected components.</p><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[13px] font-[600] uppercase leading-none tracking-[0.16em] text-navy-400">Runs on</div><div class="mt-2.5 flex flex-wrap gap-1.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Functions</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Illuminate</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Insights</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Events &amp; Actions</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Mobile Push</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">Access Manager</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">E2E Encryption</span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="rounded-[7px] px-2.5 py-1 text-[12px] font-[600] leading-none border border-navy-900/[.08] bg-navy-900/[.04] text-navy-500">SSO</span></div></div></div></div></div></div></div></section></div><div class="builder-block builder-88650f453fea429d9f4e8453709bc831 builder-has-component css-5ftfx8" builder-id="builder-88650f453fea429d9f4e8453709bc831"><section data-screen-label="The real engineering problem" class="relative z-[1] hidden rounded-t-[24px] xl:block bg-[#0A0E23] px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><style>
2322input[type='range'].trep-range {
2323  -webkit-appearance: none;
2324  appearance: none;
2325  width: 100%;
2326  height: 4px;
2327  border-radius: 2px;
2328  outline: none;
2329  cursor: pointer;
2330  margin: 0;
2331}
2332input[type='range'].trep-range::-webkit-slider-thumb {
2333  -webkit-appearance: none;
2334  width: 22px;
2335  height: 22px;
2336  border-radius: 50%;
2337  background: #fff;
2338  border: 3px solid #5b8def;
2339  box-shadow: 0 0 0 6px rgba(91, 141, 239, 0.18);
2340  cursor: grab;
2341  transition: box-shadow 0.15s;
2342}
2343input[type='range'].trep-range:active::-webkit-slider-thumb {
2344  cursor: grabbing;
2345  box-shadow: 0 0 0 10px rgba(91, 141, 239, 0.24);
2346}
2347@keyframes trep-thumb-pulse {
2348  0% {
2349    box-shadow: 0 0 0 6px rgba(91, 141, 239, 0.18), 0 0 0 0 rgba(91, 141, 239, 0.5);
2350  }
2351  70% {
2352    box-shadow: 0 0 0 6px rgba(91, 141, 239, 0.18), 0 0 0 14px rgba(91, 141, 239, 0);
2353  }
2354  100% {
2355    box-shadow: 0 0 0 6px rgba(91, 141, 239, 0.18), 0 0 0 0 rgba(91, 141, 239, 0);
2356  }
2357}
2358input[type='range'].trep-range.trep-range-pulse::-webkit-slider-thumb {
2359  animation: trep-thumb-pulse 2s ease-out infinite;
2360}
2361input[type='range'].trep-range.trep-range-pulse::-moz-range-thumb {
2362  animation: trep-thumb-pulse 2s ease-out infinite;
2363}
2364input[type='range'].trep-range.trep-range-pulse:hover::-webkit-slider-thumb,
2365input[type='range'].trep-range.trep-range-pulse:focus::-webkit-slider-thumb,
2366input[type='range'].trep-range.trep-range-pulse:active::-webkit-slider-thumb {
2367  animation: none;
2368}
2369input[type='range'].trep-range.trep-range-pulse:hover::-moz-range-thumb,
2370input[type='range'].trep-range.trep-range-pulse:focus::-moz-range-thumb,
2371input[type='range'].trep-range.trep-range-pulse:active::-moz-range-thumb {
2372  animation: none;
2373}
2374input[type='range'].trep-range::-moz-range-thumb {
2375  width: 16px;
2376  height: 16px;
2377  border-radius: 50%;
2378  background: #fff;
2379  border: 3px solid #5b8def;
2380  box-shadow: 0 0 0 6px rgba(91, 141, 239, 0.18);
2381  cursor: grab;
2382}
2383</style><div class="mx-auto max-w-[1220px]"><div data-markdown-ignore="true" class="hidden xl:grid xl:grid-cols-2 xl:items-start xl:gap-x-[72px] xl:gap-y-14"><div class="flex min-w-0 flex-col gap-7"><div class="flex flex-col gap-3.5"><div class="text-left "><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-[#FF7585]">THE REAL ENGINEERING PROBLEM</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-white mt-3">Real-time is easy.<br/>At demo scale.</h2></div><p class="m-0 text-[16px] leading-[24px] text-[#a4a9bd]">Publish, subscribe, messages appear: any team can ship that in a weekend, and for the ten people in the room it works perfectly. The real engineering problem is everything that surfaces between the demo and a global audience.</p></div>
2383<div class="flex flex-col gap-4 rounded-[14px] border border-[#23273a] bg-[linear-gradient(180deg,#12152a_0%,#0e1122_100%)] px-6 pb-5 pt-[22px]"><div class="flex flex-col gap-1.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] uppercase tracking-[0.2em] text-[#8a90a8]">CONCURRENT USERS</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[120px] text-[44px] font-[600] leading-none text-white [font-variant-numeric:tabular-nums]">32</div></div><div class="flex flex-col gap-2"><input class="trep-range" type="range" min="0" max="1000" aria-label="Concurrent users" style="background:linear-gradient(90deg,#5b8def 0%,#5b8def 10.10%,#262a3d 10.10%,#262a3d 100%)" value="101"/><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="flex justify-between text-[12px] text-[#6d7390]"><span>10 · the demo</span><span>100</span><span>1K</span><span>10K</span><span>100K</span><span>1M++</span></div></div><div class="relative mt-1 grid grid-cols-4"><div class="relative flex flex-col items-center gap-2"><div class="absolute left-1/2 top-[6px] h-px transition-[background] duration-300" style="right:-50%;background:#2a2f45;display:block"></div><div class="relative z-[1] box-border h-[13px] w-[13px] rounded-full transition-all duration-300" style="border:2px solid #5b8def;background:#5b8def;box-shadow:0 0 0 4px rgba(91,141,239,0.22)"></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#7fa4f5;font-weight:600" class="text-center text-[12px] uppercase leading-[1.35] tracking-[0.14em] transition-colors duration-300">Demo night</div></div><div class="relative flex flex-col items-center gap-2"><div class="absolute left-1/2 top-[6px] h-px transition-[background] duration-300" style="right:-50%;background:#2a2f45;display:block"></div><div class="relative z-[1] box-border h-[13px] w-[13px] rounded-full transition-all duration-300" style="border:2px solid #3a4468;background:#0e1122;box-shadow:none"></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-center text-[12px] uppercase leading-[1.35] tracking-[0.14em] transition-colors duration-300">Private beta</div></div><div class="relative flex flex-col items-center gap-2"><div class="absolute left-1/2 top-[6px] h-px transition-[background] duration-300" style="right:-50%;background:#2a2f45;display:block"></div><div class="relative z-[1] box-border h-[13px] w-[13px] rounded-full transition-all duration-300" style="border:2px solid #3a4468;background:#0e1122;box-shadow:none"></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-center text-[12px] uppercase leading-[1.35] tracking-[0.14em] transition-colors duration-300">Public launch</div></div><div class="relative flex flex-col items-center gap-2"><div class="absolute left-1/2 top-[6px] h-px transition-[background] duration-300" style="right:-50%;background:#2a2f45;display:none"></div><div class="relative z-[1] box-border h-[13px] w-[13px] rounded-full transition-all duration-300" style="border:2px solid #3a4468;background:#0e1122;box-shadow:none"></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-center text-[12px] uppercase leading-[1.35] tracking-[0.14em] transition-colors duration-300">The playoff moment</div></div></div></div><div class="flex flex-col gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] uppercase tracking-[0.2em] text-[#7fa4f5]">DRAG THE AUDIENCE →</div><p class="m-0 max-w-[460px] text-[17px] font-[700] leading-[1.55] text-[#d9dcea] transition-opacity duration-200 [text-wrap:pretty]">At this scale, honestly? A weekend prototype works fine. Keep dragging.</p></div></div><div class="flex min-w-0 flex-col gap-3.5"><div class="flex items-center gap-3.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="whitespace-nowrap text-[12px] uppercase tracking-[0.2em] text-[#7fa4f5]">WHAT SURFACES AS THE AUDIENCE GROWS</div><div class="h-px flex-1 bg-[repeating-linear-gradient(90deg,#3a4468_0_6px,transparent_6px_12px)]"></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] text-white [font-variant-numeric:tabular-nums]"><span class="font-[600] transition-colors duration-300" style="color:#7fa4f5">0</span><span class="text-[#6d7390]"> / 6 surfaced</span></div></div><div class="overflow-hidden rounded-[14px] border border-[#23273a] bg-[#0e1122]"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#23273a] px-5 pb-3 pt-3.5 text-[12px] uppercase leading-[1.3] tracking-[0.16em]"><div class="text-[#6d7390]">Users</div><div class="text-[#6d7390]">System you now own</div><div class="text-center font-[600] text-white">Build it yourself</div><div class="text-center"><img src="/pubnub_logo_white.png" alt="Use PubNub" class="inline-block h-5 w-auto align-bottom"/></div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#1b1f31] px-5 py-[15px] transition-[background] duration-[350ms]" style="background:transparent"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-[12px] transition-colors duration-[350ms]">~50</div><div class="flex min-w-0 flex-col gap-0.5"><div class="text-[15px] font-[700] leading-[1.3] transition-colors duration-[350ms]" style="color:#7a809a">Catch-up after dropped connections</div><div class="text-[13px] leading-[1.4] transition-colors duration-[350ms]" style="color:#4c526b">your first user in a tunnel: gap detection, replay, dedupe</div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#1b1f31] px-5 py-[15px] transition-[background] duration-[350ms]" style="background:transparent"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-[12px] transition-colors duration-[350ms]">~50</div><div class="flex min-w-0 flex-col gap-0.5"><div class="text-[15px] font-[700] leading-[1.3] transition-colors duration-[350ms]" style="color:#7a809a">Ordered delivery</div><div class="text-[13px] leading-[1.4] transition-colors duration-[350ms]" style="color:#4c526b">exactly-once semantics under churn</div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#1b1f31] px-5 py-[15px] transition-[background] duration-[350ms]" style="background:transparent"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-[12px] transition-colors duration-[350ms]">~200</div><div class="flex min-w-0 flex-col gap-0.5"><div class="text-[15px] font-[700] leading-[1.3] transition-colors duration-[350ms]" style="color:#7a809a">Presence</div><div class="text-[13px] leading-[1.4] transition-colors duration-[350ms]" style="color:#4c526b">who’s online, in what state; valuable from day one, hard to keep true</div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#1b1f31] px-5 py-[15px] transition-[background] duration-[350ms]" style="background:transparent"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-[12px] transition-colors duration-[350ms]">~500</div><div class="flex min-w-0 flex-col gap-0.5"><div class="text-[15px] font-[700] leading-[1.3] transition-colors duration-[350ms]" style="color:#7a809a">Per-user access control</div><div class="text-[13px] leading-[1.4] transition-colors duration-[350ms]" style="color:#4c526b">grants, revocation, audit</div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#1b1f31] px-5 py-[15px] transition-[background] duration-[350ms]" style="background:transparent"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-[12px] transition-colors duration-[350ms]">~2K</div><div class="flex min-w-0 flex-col gap-0.5"><div class="text-[15px] font-[700] leading-[1.3] transition-colors duration-[350ms]" style="color:#7a809a">Surge capacity &amp; multi-region failover</div><div class="text-[13px] leading-[1.4] transition-colors duration-[350ms]" style="color:#4c526b">one viral post, one match day: traffic is a step function</div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 border-b border-[#1b1f31] px-5 py-[15px] transition-[background] duration-[350ms]" style="background:transparent"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;font-weight:400" class="text-[12px] transition-colors duration-[350ms]">~5K</div><div class="flex min-w-0 flex-col gap-0.5"><div class="text-[15px] font-[700] leading-[1.3] transition-colors duration-[350ms]" style="color:#7a809a">24/7 operation, indefinitely</div><div class="text-[13px] leading-[1.4] transition-colors duration-[350ms]" style="color:#4c526b">real production traffic means a pager rotation, forever</div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#4c526b;border-color:#262a3d;background:transparent" class="rounded-[6px] border py-[7px] text-center text-[12px] font-[600] tracking-[0.14em] transition-all duration-[350ms]">NOT YET</div></div><div class="grid grid-cols-[56px_minmax(0,1fr)_104px_104px] items-center gap-3 bg-[#0b0e1c] px-5 py-3.5"><div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] tracking-[0.04em] text-[#6d7390]">operated as one managed network since 2012</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;opacity:0" class="text-center text-[12px] font-[600] text-[#f0b23c] transition-opacity duration-300 [font-variant-numeric:tabular-nums]">0 to build &amp; staff</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;opacity:0" class="text-center text-[12px] font-[600] text-[#3ddc84] transition-opacity duration-300 [font-variant-numeric:tabular-nums]">0 already run</div></div></div></div></div><div class="mx-auto flex flex-col gap-7 xl:hidden"><div class="flex flex-col gap-3.5"><div class="text-left "><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-[#FF7585]">THE REAL ENGINEERING PROBLEM</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-white mt-3">Real-time is easy.<br/>At demo scale.</h2></div><p class="m-0 text-[16px] leading-[24px] text-[#a4a9bd] [text-wrap:pretty]">Publish, subscribe, messages appear: any team can ship that in a weekend, and for the ten people in the room it works perfectly. The real engineering problem is everything that surfaces between the demo and a global audience.</p></div><div class="flex flex-col gap-1.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] uppercase tracking-[0.2em] text-[#7fa4f5]">WHAT SURFACES AS THE AUDIENCE GROWS</div><p class="m-0 text-[15px] leading-[1.5] text-[#a4a9bd] [text-wrap:pretty]">As the audience grows, six systems you’d otherwise build and operate yourself surface one by one. Or run on one managed network that has operated them since 2012.</p></div><div class="flex flex-col gap-3.5">
2383<div class="flex flex-col gap-4 rounded-[14px] border border-[#23273a] bg-[linear-gradient(180deg,#12152a_0%,#0e1122_100%)] px-4 py-[18px]"><div class="flex items-center gap-2.5"><span class="box-border h-[11px] w-[11px] flex-shrink-0 rounded-full border-2 border-[#f0b23c] bg-[rgba(240,178,60,0.18)]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] uppercase tracking-[0.18em] text-[#f0b23c]">FROM <!-- -->~50<!-- --> CONCURRENT USERS</span></div><div class="flex flex-col gap-2.5"><div class="text-[15px] font-[700] leading-[1.3] text-white">Catch-up after dropped connections</div><div class="text-[13px] leading-[1.45] text-[#a4a9bd]">your first user in a tunnel: gap detection, replay, dedupe</div><div class="grid grid-cols-2 gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#f0b23c;border-color:rgba(240,178,60,0.45);background:rgba(240,178,60,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">YOURS TO BUILD &amp; RUN</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#3ddc84;border-color:rgba(61,220,132,0.4);background:rgba(61,220,132,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">PUBNUB OPERATES IT</div></div></div><div class="flex flex-col gap-2.5"><div class="text-[15px] font-[700] leading-[1.3] text-white">Ordered delivery</div><div class="text-[13px] leading-[1.45] text-[#a4a9bd]">exactly-once semantics under churn</div><div class="grid grid-cols-2 gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#f0b23c;border-color:rgba(240,178,60,0.45);background:rgba(240,178,60,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">YOURS TO BUILD &amp; RUN</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#3ddc84;border-color:rgba(61,220,132,0.4);background:rgba(61,220,132,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">PUBNUB OPERATES IT</div></div></div></div>
2383<div class="flex flex-col gap-4 rounded-[14px] border border-[#23273a] bg-[linear-gradient(180deg,#12152a_0%,#0e1122_100%)] px-4 py-[18px]"><div class="flex items-center gap-2.5"><span class="box-border h-[11px] w-[11px] flex-shrink-0 rounded-full border-2 border-[#f0b23c] bg-[rgba(240,178,60,0.18)]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] uppercase tracking-[0.18em] text-[#f0b23c]">FROM <!-- -->~200<!-- --> CONCURRENT USERS</span></div><div class="flex flex-col gap-2.5"><div class="text-[15px] font-[700] leading-[1.3] text-white">Presence</div><div class="text-[13px] leading-[1.45] text-[#a4a9bd]">who’s online, in what state; valuable from day one, hard to keep true</div><div class="grid grid-cols-2 gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#f0b23c;border-color:rgba(240,178,60,0.45);background:rgba(240,178,60,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">YOURS TO BUILD &amp; RUN</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#3ddc84;border-color:rgba(61,220,132,0.4);background:rgba(61,220,132,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">PUBNUB OPERATES IT</div></div></div></div>
2383<div class="flex flex-col gap-4 rounded-[14px] border border-[#23273a] bg-[linear-gradient(180deg,#12152a_0%,#0e1122_100%)] px-4 py-[18px]"><div class="flex items-center gap-2.5"><span class="box-border h-[11px] w-[11px] flex-shrink-0 rounded-full border-2 border-[#f0b23c] bg-[rgba(240,178,60,0.18)]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] uppercase tracking-[0.18em] text-[#f0b23c]">FROM <!-- -->~500<!-- --> CONCURRENT USERS</span></div><div class="flex flex-col gap-2.5"><div class="text-[15px] font-[700] leading-[1.3] text-white">Per-user access control</div><div class="text-[13px] leading-[1.45] text-[#a4a9bd]">grants, revocation, audit</div><div class="grid grid-cols-2 gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#f0b23c;border-color:rgba(240,178,60,0.45);background:rgba(240,178,60,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">YOURS TO BUILD &amp; RUN</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#3ddc84;border-color:rgba(61,220,132,0.4);background:rgba(61,220,132,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">PUBNUB OPERATES IT</div></div></div></div>
2383<div class="flex flex-col gap-4 rounded-[14px] border border-[#23273a] bg-[linear-gradient(180deg,#12152a_0%,#0e1122_100%)] px-4 py-[18px]"><div class="flex items-center gap-2.5"><span class="box-border h-[11px] w-[11px] flex-shrink-0 rounded-full border-2 border-[#f0b23c] bg-[rgba(240,178,60,0.18)]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] uppercase tracking-[0.18em] text-[#f0b23c]">FROM <!-- -->~2K<!-- --> CONCURRENT USERS</span></div><div class="flex flex-col gap-2.5"><div class="text-[15px] font-[700] leading-[1.3] text-white">Surge capacity &amp; multi-region failover</div><div class="text-[13px] leading-[1.45] text-[#a4a9bd]">one viral post, one match day: traffic is a step function</div><div class="grid grid-cols-2 gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#f0b23c;border-color:rgba(240,178,60,0.45);background:rgba(240,178,60,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">YOURS TO BUILD &amp; RUN</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#3ddc84;border-color:rgba(61,220,132,0.4);background:rgba(61,220,132,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">PUBNUB OPERATES IT</div></div></div></div>
2383<div class="flex flex-col gap-4 rounded-[14px] border border-[#23273a] bg-[linear-gradient(180deg,#12152a_0%,#0e1122_100%)] px-4 py-[18px]"><div class="flex items-center gap-2.5"><span class="box-border h-[11px] w-[11px] flex-shrink-0 rounded-full border-2 border-[#f0b23c] bg-[rgba(240,178,60,0.18)]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] uppercase tracking-[0.18em] text-[#f0b23c]">FROM <!-- -->~5K<!-- --> CONCURRENT USERS</span></div><div class="flex flex-col gap-2.5"><div class="text-[15px] font-[700] leading-[1.3] text-white">24/7 operation, indefinitely</div><div class="text-[13px] leading-[1.45] text-[#a4a9bd]">real production traffic means a pager rotation, forever</div><div class="grid grid-cols-2 gap-2.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#f0b23c;border-color:rgba(240,178,60,0.45);background:rgba(240,178,60,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">YOURS TO BUILD &amp; RUN</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace;color:#3ddc84;border-color:rgba(61,220,132,0.4);background:rgba(61,220,132,0.08)" class="rounded-[6px] border px-2 py-[7px] text-center text-[12px] font-[600] tracking-[0.1em]">PUBNUB OPERATES IT</div></div></div></div></div><div class="flex flex-col gap-2 rounded-[12px] bg-[#0b0e1c] px-4 py-3.5"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] tracking-[0.04em] text-[#6d7390]">operated as one managed network since 2012</div><div class="flex justify-between"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] text-[#f0b23c] [font-variant-numeric:tabular-nums]">6<!-- --> to build &amp; staff</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] text-[#3ddc84] [font-variant-numeric:tabular-nums]">6<!-- --> already run</div></div></div></div></div></section></div><div class="builder-block builder-1585c23d73de4a248d00641190131e5f builder-has-component css-5ftfx8" builder-id="builder-1585c23d73de4a248d00641190131e5f"><section data-screen-label="Fourteen years" class="relative z-[1] bg-[linear-gradient(180deg,#0A0E23,#070A1A_30%)] px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><div class="mx-auto max-w-[1220px]"><div class="flex flex-col gap-7 xl:flex-row xl:items-end xl:gap-10"><div class="xl:flex-1"><div class="text-left "><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-[#FF7585]">FOURTEEN YEARS OF OPERATIONS</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-white mt-3">Battle-tested. It&#x27;s in PubNub&#x27;s nature.</h2></div><p class="mt-4 max-w-[600px] text-[16px] leading-[24px] text-white/[.64] [text-wrap:pretty] xl:max-w-none">What you can&#x27;t find anywhere else is someone who&#x27;s been operating real-time at planetary scale for fourteen years, including the live streams that set world records for audience size.<br/>Here&#x27;s what that operation looks like, year by year.</p></div><div class="flex flex-col gap-4 sm:flex-row sm:gap-9 xl:pb-1.5"><div class="flex items-baseline gap-3.5 sm:block"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[24px] font-[700] text-white sm:min-w-0">1B+</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="mt-1 text-[14px] tracking-[0.12em] text-white/40">DEVICES</div></div><div class="flex items-baseline gap-3.5 sm:block"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[24px] font-[700] text-white sm:min-w-0">10,000s</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="mt-1 text-[14px] tracking-[0.12em] text-white/40">OF APPS</div></div><div class="flex items-baseline gap-3.5 sm:block"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[24px] font-[700] text-white sm:min-w-0">50+</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="mt-1 text-[14px] tracking-[0.12em] text-white/40">SDKS</div></div></div></div><div data-markdown-ignore="true" class="mt-14 hidden xl:block"><div class="relative"><div class="absolute left-0 right-0 top-[6px] h-[2px] bg-white/10" aria-hidden="true"></div><div class="absolute left-0 top-[6px] h-[2px] bg-[linear-gradient(90deg,#CD2026,#FF7585)] transition-[width] duration-300" style="width:95%" aria-hidden="true"></div><div class="relative grid" style="grid-template-columns:repeat(10, minmax(0, 1fr))" role="tablist" aria-label="Fourteen 
2383years of operations, 2012 to 2026"><button type="button" role="tab" aria-selected="false" aria-label="2012 — The network goes live" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2012</span></button><button type="button" role="tab" aria-selected="false" aria-label="2013 — SDKs everywhere" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2013</span></button><button type="button" role="tab" aria-selected="false" aria-label="2014 — Beyond transport" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2014</span></button><button type="button" role="tab" aria-selected="false" aria-label="2016 — Logic on the network" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2016</span></button><button type="button" role="tab" aria-selected="false" aria-label="2018 — The PubNub five-nines promise" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2018</span></button><button type="button" role="tab" aria-selected="false" aria-label="2020 — A billion devices" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2020</span></button><button type="button" role="tab" aria-selected="false" aria-label="2022 — Residency &amp; regions" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2022</span></button><button type="button" role="tab" aria-selected="false" aria-label="2024 — The decisioning loop" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2024</span></button><button type="button" role="tab" aria-selected="false" aria-label="2025 — Built for coding agents" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-white/25 group-hover:border-[#FF7585] bg-[#5A2230]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[400] text-white/40 group-hover:text-white/70">2025</span></button><button type="button" role="tab" aria-selected="true" aria-label="2026 — Fourteen 
2383years of five nines" class="group flex min-w-0 cursor-pointer flex-col items-center gap-2.5"><span aria-hidden="true" class="h-[14px] w-[14px] rounded-full border-2 transition-all duration-200 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] transition-colors font-[700] text-white">2026</span></button></div></div><div class="mt-9 flex items-stretch gap-8"><div class="min-h-[150px] flex-[1.6] rounded-[14px] border border-white/10 bg-[#0D1330] px-8 py-7"><div class="flex items-baseline gap-3.5"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[26px] font-[700] text-[#FF7585]">2026</span><span class="text-[20px] font-[800] leading-[1.2] text-white">Fourteen years of five nines</span></div><p class="mt-3 text-[15px] leading-[1.6] text-white/[.65] [text-wrap:pretty]">Fourteen years in, the PubNub global network is as reliable as the day it went live, and the team behind it works as hard as ever to keep every customer online.</p></div><div class="flex flex-col rounded-[14px] border border-[rgba(205,32,38,.3)] bg-[linear-gradient(165deg,rgba(205,32,38,.12),rgba(205,32,38,.03))] p-7 flex-1"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] font-[600] uppercase tracking-[0.18em] text-[#FF7585]">WHY CUSTOMERS DEPEND ON PUBNUB</div><p class="mt-3 text-[16px] font-[700] leading-[1.6] text-white [text-wrap:pretty]">Fourteen years operating the PubNub platform at planetary scale is not something a competitor spins up, and it&#x27;s not something you should ever have to build.</p></div></div></div><div class="mt-11 xl:hidden"><div class="relative scroll-mt-6"><div class="absolute bottom-2 left-[12px] top-2 w-[2px] bg-[linear-gradient(180deg,#CD2026,#FF7585)]" aria-hidden="true"></div><ul id="homepage-v5-timeline-milestones" class="m-0 list-none p-0"><li aria-hidden="false" class="overflow-hidden transition-[max-height] duration-300 max-h-[600px]"><div class="flex gap-4 "><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2012</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">The network goes live</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">PubNub is founded and the real-time network takes its first production traffic: a global real-time layer developers can build on from their first line of code.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2013</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">SDKs everywhere</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">PubNub SDKs expand across web, mobile, and embedded: one API for every runtime.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2014</span>
2383<h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">Beyond transport</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">Presence and Storage &amp; Playback: the PubNub network starts carrying state and history alongside messages.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2016</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">Logic on the network</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">PubNub Functions launches: code running where the messages are, intercepting messages in real time and transforming them on the fly.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2018</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">The PubNub five-nines promise</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">The 99.999% SLA becomes the standard for PubNub, putting in writing the reliability customers already depended on.</p></div></div></li><li aria-hidden="false" class="overflow-hidden transition-[max-height] duration-300 max-h-[600px]"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2020</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">A billion devices</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">Billions of connected devices across tens of thousands of applications. Surges from global lockdown-era traffic are absorbed as normal.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2022</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">Residency &amp; regions</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">Region pinning and data-residency controls mature. PubNub puts multi-region control in customers’ hands.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2024</span>
2383<h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">The decisioning loop</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">PubNub Illuminate launches: a real-time decision platform that lets customers interrogate and act on live traffic.</p></div></div></li><li aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2025</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">Built for coding agents</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">PubNub launches its MCP server and Skills for coding agents, taking a working real-time feature from days of integration to hours.</p></div></div></li><li aria-hidden="false" class="overflow-hidden transition-[max-height] duration-300 max-h-[600px]"><div class="flex gap-4 pt-8"><div class="relative w-[26px] shrink-0"><span aria-hidden="true" class="absolute left-[6px] top-[5px] h-[14px] w-[14px] rounded-full border-2 border-[#FF7585] bg-cherry shadow-[0_0_14px_rgba(205,32,38,.8)]"></span></div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-baseline gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[22px] font-[700] text-[#FF7585]">2026</span><h3 class="m-0 text-[19px] font-[800] leading-[24px] text-white">Fourteen years of five nines</h3></div><p class="mt-2.5 text-[16px] leading-[1.6] text-white/[.66] [text-wrap:pretty]">Fourteen years in, the PubNub global network is as reliable as the day it went live, and the team behind it works as hard as ever to keep every customer online.</p></div></div></li></ul></div><button type="button" aria-expanded="false" aria-controls="homepage-v5-timeline-milestones" style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="mt-7 inline-flex cursor-pointer items-center gap-2.5 rounded-full border border-white/20 bg-white/[.06] px-5 py-2.5 text-[14px] font-[600] tracking-[0.08em] text-white transition-colors hover:bg-white/[.12]">Explore all 10 milestones<span aria-hidden="true" class="text-[16px] leading-none text-[#FF7585]">+</span></button><div class="flex flex-col rounded-[14px] border border-[rgba(205,32,38,.3)] bg-[linear-gradient(165deg,rgba(205,32,38,.12),rgba(205,32,38,.03))] p-7 mt-10"><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] font-[600] uppercase tracking-[0.18em] text-[#FF7585]">WHY CUSTOMERS DEPEND ON PUBNUB</div><p class="mt-3 text-[16px] font-[700] leading-[1.6] text-white [text-wrap:pretty]">Fourteen years operating the PubNub platform at planetary scale is not something a competitor spins up, and it&#x27;s not something you should ever have to build.</p></div></div></div></section></div><div class="builder-block builder-f1c12f9bb204401f9174adc3abe550c9 builder-has-component css-5ftfx8" builder-id="builder-f1c12f9bb204401f9174adc3abe550c9"><section data-screen-label="Build vs buy" class="relative z-[1] rounded-t-[24px] bg-white px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><div class="mx-auto max-w-[1220px]"><div class="max-w-[640px]"><div class="text-left "><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-cherry">BUILD VS BUY</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-navy-900 mt-3">Answer your team’s questions before they ask.</h2></div><p class="mt-4 hidden max-w-[600px] text-[16px] leading-[24px] text-gray-dark xl:block">These are the objections we hear most before teams become customers, and plenty of today’s customers raised them too. Pick one to see the answer that turned them into long-time PubNub fans.</p><p class="mt-4 max-w-[600px] text-[16px] leading-[24px] text-gray-dark xl
2383:hidden">These are the objections we hear most before teams become customers, and plenty of today’s customers raised them too. Tap one to see the answer that turned them into long-time PubNub fans.</p></div><div data-markdown-ignore="true" class="mt-10 hidden gap-10 xl:grid xl:grid-cols-2"><div class="flex flex-col"><button type="button" aria-pressed="true" class="flex items-baseline gap-[18px] px-2 py-4 text-left "><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-cherry">01</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors font-[700] text-navy-900">“<!-- -->We’ll just build it on AWS / a WebSocket layer.<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">02</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->Isn’t this just pub/sub-as-a-service?<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">03</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->Real-time isn’t a priority for us.<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">04</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->Our stack is already built. We don’t need another platform.<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">05</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->It’s cheaper to do it ourselves.<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">06</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->We’re worried about lock-in.<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">07</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->How do we know it’s secure / compliant enough for us?<!-- -->”</span></button><button type="button" aria-pressed="false" class="flex items-baseline gap-[18px] px-2 py-4 text-left border-t border-navy-900/10"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[18px] font-[700] leading-[28px] transition-colors text-navy-300">08</span><span class="text-[18px] font-[600] leading-[28px] tracking-[-0.01em] transition-colors text-navy-500">“<!-- -->If PubNub runs it, do we lose control?<!-- -->”</span></button></div><div class="flex flex-col gap-4 xl:sticky xl:top-24 xl:self-start"><div class="rounded-[16px] border border-navy-900/[.12] border-l-[5px] border-l-cherry bg-white px-8 py-7"><h3 class="m-0 text-[18px] font-[800] leading-[1.2] tracking-[-0.01em]"><span class="text-cherry">01</span><span class="text-navy-900"> Our Answer</span></h3><p class="mt-3.5 text-[16px] leading-[1.65] text-gray-dark">You can, but the socket is the easy part. The hard part is everything around it: ordered delivery, presence, catch-up after a dropped connection, per-user access, and failover across regions at five nines, operated 24/7. That’s a dedicated team and an on-call rotation, indefinitely. With PubNub, you ship the feature and skip the rotation.</p></div></div></div><div class="mt-8 xl:hidden"><div class="border-t border-navy-900/10"><div class="border-b border-navy-900/10"><h3 class="m-0">
2383<button type="button" aria-expanded="true" aria-controls="bvb-objection-0" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-900">“<!-- -->We’ll just build it on AWS / a WebSocket layer.<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform rotate-45">+</span></button></h3><div id="bvb-objection-0" aria-hidden="false" class="overflow-hidden transition-[max-height] duration-300 max-h-[1400px]"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">You can, but the socket is the easy part. The hard part is everything around it: ordered delivery, presence, catch-up after a dropped connection, per-user access, and failover across regions at five nines, operated 24/7. That’s a dedicated team and an on-call rotation, indefinitely. With PubNub, you ship the feature and skip the rotation.</p></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="bvb-objection-1" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->Isn’t this just pub/sub-as-a-service?<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-1" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">Pub/sub is where PubNub starts, not where it stops. Your code runs on the network itself with Functions, and presence, message history, access control, and analytics come in the same SDK, on the same bill, over one global network. Building that yourself means stitching together separate services and owning every seam between them.</p></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="bvb-objection-2" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->Real-time isn’t a priority for us.<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-2" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">Fair, and that’s exactly why you shouldn’t staff it. The live moments still decide how users judge you (the auction closing, the game state, the AI response streaming in), but they shouldn’t cost you a team. PubNub runs them on global infrastructure, so they stay off your roadmap and never become the thing that breaks.</p></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="bvb-objection-3" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->Our stack is already built. We don’t need another platform.<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-3" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">Good. PubNub is built to fit into your stack, not replace it. Add one of 50+ SDKs to the apps you already have, keep your backend and database exactly as they are, and route events out to the systems you already run. Nothing about your architecture has to move.</p></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="bvb-objection-4" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->It’s cheaper to do it ourselves.<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-4" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">Only if engineering time is free. The real cost of DIY is headcount, an on-call rotation, and the roadmap you delay while presence and scale are “almost done.” Every engineer keeping your real-time layer up is one who isn’t building your product. With PubNub, you pay for what you use, and that headcount goes back to your roadmap.</p><div class="mt-3.5"><div class="rounded-[16px] border border-navy-900/10 bg-navy-50 p-6"><div class="flex flex-wrap items-center gap-3"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] font-[700] uppercase tracking-[0.14em] text-cherry">DIY cost, roughly</span></div><div class="mt-[18px]"><label for="bvb-tco-m4" class="text-[14px] font-[700] leading-[1.4] text-navy-700">Engineers on your real-time layer:<!-- --> <span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-cherry">7</span></label><input id="bvb-tco-m4" type="range" min="2" max="12" step="1" class="mt-2.5 w-full accent-cherry" value="7"/></div><div class="mt-[18px] flex gap-5"><div class="min-w-0 flex-1"><div class="text-[28px] font-[800] leading-none text-navy-900">$2.7M</div><div class="mt-1.5 text-[12px] leading-[1.4] text-navy-400">to build &amp; operate for 2 years, before your first differentiating feature</div></div><div class="min-w-0 flex-1 border-l border-navy-900/10 pl-5"><div class="text-[28px] font-[800] leading-none text-[#12915B]">$0</div><div class="mt-1.5 text-[12px] leading-[1.4] text-navy-400">platform-team overhead with consumption pricing</div></div></div></div></div></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0">
2383<button type="button" aria-expanded="false" aria-controls="bvb-objection-5" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->We’re worried about lock-in.<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-5" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">A fair question to ask of any vendor. Your application, backend, and business logic stay yours; PubNub sits behind a thin SDK layer you can wrap in your own interface from day one. Your data lives where you choose, with storage lockable to EU-only, US-only, or APAC-only regions, and message history stays retrievable through the API whenever you need it. You’re renting operations, not handing over your architecture.</p></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="bvb-objection-6" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->How do we know it’s secure / compliant enough for us?<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-6" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">PubNub is ISO 27001 certified, audited for SOC 2 Type II and SOC 3, and complies with HIPAA and the EU–U.S. Data Privacy Framework. Access Manager grants and revokes per-user, per-channel access with tokens; messages are protected with TLS and AES-256 encryption, and you can bring your own; storage can be locked to a region; and your team signs in to the admin portal with SSO.</p></div></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="bvb-objection-7" class="flex w-full items-baseline gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[700] leading-[1.35] tracking-[-0.01em] text-navy-500">“<!-- -->If PubNub runs it, do we lose control?<!-- -->”</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="bvb-objection-7" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><div class="pb-5 pr-2"><p class="m-0 text-[16px] leading-[1.65] text-gray-dark">No. On the backend, you program the behavior (Functions running on the network, subscribe filters, message actions, channel groups) while PubNub runs the reliability and scale. On the frontend, nothing is imposed: no UI kit you have to adopt, no widgets to restyle, so every screen looks and works exactly the way you design it. You own the logic and the experience; PubNub keeps it running at five nines.</p></div></div></div></div></div></div></section></div><div class="builder-block builder-c025707806ba4ada85c93db0eded03b6 builder-has-component css-5ftfx8" builder-id="builder-c025707806ba4ada85c93db0eded03b6"><section data-screen-label="blocks.ai" class="relative z-[1] -mt-6 overflow-hidden rounded-t-[24px] bg-navy-950 font-sans px-5 md:px-7 xl:px-8"><div aria-hidden="true" class="pointer-events-none absolute bottom-[-160px] left-1/2 h-[420px] w-[1100px] -translate-x-1/2 rounded-full bg-[radial-gradient(circle,rgba(145,97,242,0.16),rgba(205,32,38,0.10)_40%,transparent_68%)]"></div><div class="relative mx-auto max-w-[1220px] py-16 md:py-[72px] xl:py-[110px]"><div class="grid grid-cols-1 items-center gap-10 xl:grid-cols-[430px_1fr] xl:gap-[72px]"><div><div class="mb-[26px] inline-flex items-center gap-[9px] rounded-full border border-red-600/[.35] bg-red-600/10 py-[5px] pl-[6px] pr-[13px]"><span class="rounded-[7px] bg-red-600/[.55] px-[9px] py-[3px] text-[12px] font-[800] uppercase tracking-[0.1em] text-white">NEW</span><span class="text-[14px] font-[600] text-[#FF7585]">Built on PubNub</span></div><h2 class="mb-[10px] text-[36px] font-[800] leading-none tracking-[-0.02em] text-white">Blocks<span class="text-[#9161F2]">.</span>ai</h2><h3 class="mb-[18px] text-balance text-[26px] font-[400] leading-[1.2] tracking-[-0.02em] text-white">The control plane for the Internet of Agents</h3><p class="mb-[30px] max-w-[520px] text-pretty text-[16px] leading-[24px] text-white/[.65]">Connect and control agents across every framework, provider, and API, wherever they&#x27;re hosted. No inbound ports, no tunnels, no firewall changes. Zero Trust by default.</p><a href="https://blocks.ai" class="group inline-flex items-center gap-2 text-[16px] font-[600] text-white no-underline xl:rounded-[14px] xl:border xl:border-white/[.28] xl:px-[22px] xl:py-3 xl:transition-colors xl:hover:border-white/60">Explore Blocks.ai<span aria-hidden="true" class="inline-block transition-transform duration-200 group-hover:translate-x-[12px]">→</span></a></div><div class="overflow-hidden rounded-2xl xl:border xl:border-white/[.12] xl:bg-[linear-gradient(180deg,#0E1330,#0A0E23)] xl:shadow-[0_0_0_1px_rgba(145,97,242,0.14),0_30px_80px_rgba(0,0,0,0.4)]"><div class="hidden items-center gap-3 border-b border-white/[.07] px-4 py-3 xl:flex"><div class="flex gap-1.5"><span class="h-2 w-2 rounded-full bg-[#FF5F57]"></span><span class="h-2 w-2 rounded-full bg-[#FEBC2E]"></span><span class="h-2 w-2 rounded-full bg-[#28C840]"></span></div><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[12px] tracking-[0.12em] text-white/[.6]">ZERO TRUST · SUB-100MS PUBNUB BACKBONE</span></div><div class="relative bg-navy-950 leading-[0]"><video class="block h-auto w-full" src="/blocks-ai-story.mp4" autoPlay="" loop="" muted="" playsInl
2383ine="" preload="metadata" aria-label="Blocks.ai story"></video><button type="button" aria-label="Turn sound on" aria-pressed="false" data-markdown-ignore="true" class="absolute bottom-3.5 right-3.5 inline-flex items-center gap-2 rounded-full border border-white/[.28] bg-navy-950/[.72] px-3.5 py-2 text-[14px] font-[600] text-white backdrop-blur-[4px]"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M11 5 6 9H3v6h3l5 4V5Z" fill="currentColor"></path><path d="m16 9 5 6M21 9l-5 6" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>Sound on</button></div></div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="-mt-6 text-[12px] tracking-[0.12em] text-white/[.6] xl:hidden">ZERO TRUST · SUB-100MS PUBNUB BACKBONE</div></div><div class="mt-11 grid grid-cols-1 gap-7 sm:grid-cols-2 xl:mt-16 xl:grid-cols-4 xl:gap-10"><div><h3 class="mb-2 text-[20px] font-[700] text-white xl:text-[18px]">Any framework</h3><p class="text-[16px] leading-[1.5] text-white/[.55] xl:text-[14px]">Every framework, provider, and API</p></div><div><h3 class="mb-2 text-[20px] font-[700] text-white xl:text-[18px]">Reach anywhere</h3><p class="text-[16px] leading-[1.5] text-white/[.55] xl:text-[14px]">Behind your firewall, in your VPC</p></div><div><h3 class="mb-2 text-[20px] font-[700] text-white xl:text-[18px]">Secure &amp; instant</h3><p class="text-[16px] leading-[1.5] text-white/[.55] xl:text-[14px]">Global, sub-100ms, Zero Trust calls</p></div><div><h3 class="mb-2 text-[20px] font-[700] text-white xl:text-[18px]">Agents ↔ humans</h3><p class="text-[16px] leading-[1.5] text-white/[.55] xl:text-[14px]">People step into any loop, natively</p></div></div></div></section></div><div class="builder-block builder-41058a111eec48cf9a5f845b3e3d4966 builder-has-component css-5ftfx8" builder-id="builder-41058a111eec48cf9a5f845b3e3d4966"><section data-screen-label="FAQ" class="relative z-[1] -mt-6 rounded-t-[24px] bg-navy-50 px-5 py-16 md:px-7 md:py-[72px] xl:px-8 xl:py-24"><div class="mx-auto max-w-[1220px]"><div class="text-left "><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-cherry">FAQ</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-navy-900 mt-3">Answered the way we&#x27;d answer in the room.</h2></div><div data-markdown-ignore="true" class="mt-10 hidden gap-7 xl:grid xl:grid-cols-[1fr_430px] xl:items-start"><div class="flex flex-col gap-1.5"><button type="button" aria-pressed="true" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-cherry bg-cherry/[.06]"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-cherry">01</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">What is PubNub, in one sentence?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">02</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">Isn’t this just WebSockets / pub/sub? I can do that myself.</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">03</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">What counts as a “real-time, interactive application”?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">04</span>
2383<h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">Do I have to rip out or rebuild my stack?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">05</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">What languages and platforms do you support?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">06</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">How do you handle scale and reliability?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">07</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">How is it secured?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">08</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">Where does my data live? Can I control regions?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">09</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">How does this work with AI and agents?</h3></button><button type="button" aria-pressed="false" class="flex items-center gap-3 rounded-[11px] border px-[18px] py-3 text-left transition-colors border-navy-900/10 bg-white hover:border-navy-900/25"><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="min-w-[18px] text-[14px] font-[700] text-navy-300">10</span><h3 class="m-0 text-[14.5px] font-[800] leading-[1.35] text-navy-900">How does pricing work?</h3></button></div><div class="xl:sticky xl:top-24 xl:self-start"><div class="overflow-hidden rounded-[16px] bg-navy-950 shadow-[0_24px_60px_-24px_rgba(10,14,35,.45)]"><div class="flex items-center gap-2.5 border-b border-white/[.08] px-5 py-3.5"><span class="h-[7px] w-[7px] rounded-full bg-[#3ECF6E]" aria-hidden="true"></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="text-[14px] text-white/75">channel: <span class="text-[#8FB8FF]">faq.live</span></span><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="ml-auto text-[12px] text-white/[.35]">2 subscribers</span></div><div class="flex min-h-[280px] flex-col gap-2.5 px-5 pb-[18px] pt-5"><div class="max-w-[85%] self-end rounded-[14px_14px_3px_14px] bg-cherry px-[15px] py-[11px] text-[15px] font-[600] leading-[1.5] text-white">What is PubNub, in one sentence?</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="self-end text-[12px] text-white/[.35]">you · publish()</div><div class="max-w-[94%] self-start rounded-[14px_14px_14px_3px] bg-white/[.08] px-4 py-3 text-[15px] leading-[1.62] text-white/[.88] [text-wrap:pretty]">
2383Global infrastructure for real-time, interactive applications. You build the application. We operate the global network underneath it: pub/sub messaging, presence, data, logic, and security, at scale.</div><div style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="self-start text-[12px] text-white/[.35]">pubnub · delivered in <!-- -->18ms<!-- --> <span class="text-[#3ECF6E]">✓✓</span></div></div></div></div></div><div class="mt-8 border-t border-navy-900/10 xl:hidden"><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-0" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">What is PubNub, in one sentence?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-0" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">Global infrastructure for real-time, interactive applications. You build the application. We operate the global network underneath it: pub/sub messaging, presence, data, logic, and security, at scale.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-1" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">Isn’t this just WebSockets / pub/sub? I can do that myself.</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-1" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">Programmable pub/sub messaging is just one part of what PubNub offers. Operating everything around it (ordered delivery, catch-up after a dropped connection, presence, per-user access control, security, ultra-low latency, and multi-region failover at five-nines) is a multi-year platform effort completely removed from your workload with PubNub’s global infrastructure. We also offer: data and analytics handling, security built in, configurable logic all managed for you.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-2" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">What counts as a “real-time, interactive application”?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-2" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">Anything where the live experience is the product. Applications powered by PubNub include auctions, trading screens, multiplayer games and iGaming, live sports/media chat, fleet and IoT tracking, collaborative tools, and AI copilots streaming output with humans in the loop.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-3" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">Do I have to rip out or rebuild my stack?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-3" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">No. We’re infrastructure you add to an architecture that’s usually half-built by the time you find us. Drop in an SDK, a skill, and go.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-4" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">What languages and platforms do you support?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-4" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">We offer 50+ SDKs across web, mobile, server, and embedded, plus REST APIs. For AI-assisted builds, there’s a PubNub MCP server and PubNub Skills so coding agents like Cursor and Claude can scaffold working features.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-5" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">How do you handle scale and reliability?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-5" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">A global network with 11 points of presence featuring region pinning and a 99.999% SLA. A multi-million-user surge is normal traffic with PubNub, proven over fourteen years, thousands of applications, and billions of devices.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-6" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">How is it secured?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-6" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">Security is a dedicated layer with PubNub. Access Manager (fine-grained, per-user access), end-to-e
2383nd encryption, SSO, and a zero-trust posture spanning messaging, presence, and the rest of the stack enable our products to maintain SOC 2, SOC 3, HIPAA, GDPR, and A2A certifications. Your applications are secured by default.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-7" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">Where does my data live? Can I control regions?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-7" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">Yes. We run multi-region, store data, and let you pin regions for residency and latency requirements. Data Sync (with schemas) and Files cover your application’s active data.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-8" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">How does this work with AI and agents?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-8" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">For PubNub, AI applications are real-time applications: streamed tokens, live context, and users in the loop. Agents and AI apps subscribe to the same channels as your users and services, so you add AI without a separate architecture. Functions can run logic and agents right on the network.</p></div></div><div class="border-b border-navy-900/10"><h3 class="m-0"><button type="button" aria-expanded="false" aria-controls="faq-answer-9" class="flex w-full items-center gap-3 py-4 text-left"><span class="flex-1 text-[16px] font-[800] leading-[1.35] tracking-[-0.01em] text-[#3A3E58]">How does pricing work?</span><span aria-hidden="true" class="text-[18px] leading-none text-cherry transition-transform ">+</span></button></h3><div id="faq-answer-9" aria-hidden="true" class="overflow-hidden transition-[max-height] duration-300 max-h-0"><p class="pb-5 pr-2 text-[15px] leading-[1.62] text-navy-500">PubNub’s pricing is based on monthly active users (MAUs), so cost scales with the audience your application actually serves. For more information, visit<!-- --> <a href="/pricing" tabindex="-1" class="font-[700] text-cherry underline underline-offset-2">our pricing page</a>.</p></div></div></div></div></section></div><div class="builder-block builder-042e575b3a82400b857fbabbcae87bce builder-has-component css-5ftfx8" builder-id="builder-042e575b3a82400b857fbabbcae87bce"><section data-screen-label="Quickstart" class="relative z-[1] -mt-6 overflow-hidden rounded-t-[24px] bg-navy-950 px-5 md:px-7 xl:px-8"><div class="mx-auto flex max-w-[1220px] flex-col items-start gap-8 py-16 md:py-[72px] xl:flex-row xl:items-center xl:gap-12 xl:py-24"><div class="flex-1"><div class="text-left max-w-[560px]"><p class="m-0 font-mono text-[14px] font-semibold uppercase tracking-[.22em] text-[#FF7585]">Get started</p><h2 class="m-0 font-sans font-[900] tracking-[-.01em] [text-wrap:balance] text-[28px] leading-[32px] md:text-[36px] md:leading-[40px] text-white mt-3">Build the live experience.</h2></div><p class="mt-3.5 max-w-[560px] text-[16px] leading-[1.5] text-white/60">PubNub will operate the infrastructure underneath it.</p><div class="mt-[30px] flex flex-wrap items-center gap-3.5"><a href="https://admin.pubnub.com/register" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[9px] px-6 py-[13px] text-[15.5px] font-[700] no-underline transition-colors cursor-pointer bg-red-600 text-white shadow-[0_2px_18px_rgba(205,32,38,.4)] hover:bg-red-800">Start building</a><a href="https://www.pubnub.com/docs/" target="_blank" rel="noreferrer" class="group inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[9px] px-6 py-[13px] text-[15.5px] font-[700] no-underline transition-colors cursor-pointer border border-white/[.28] text-white hover:bg-white/[.08]">Read the docs<span aria-hidden="true" class="inline-block transition-transform duration-200 group-hover:translate-x-[12px]">→</span></a></div></div><div class="w-full max-w-[420px] xl:w-[480px] xl:max-w-[480px] xl:shrink-0"><ul class="m-0 flex list-none flex-col gap-3 p-0 xl:pl-2.5"><li class="m-0 flex items-baseline gap-2.5"><span aria-hidden="true" class="shrink-0 font-[800] text-[#3ECF6E]">✓</span><span class="text-[14.5px] leading-[1.5] text-white/70">Add it to the architecture you already have, with no re-platforming</span></li><li class="m-0 flex items-baseline gap-2.5"><span aria-hidden="true" class="shrink-0 font-[800] text-[#3ECF6E]">✓</span><span class="text-[14.5px] leading-[1.5] text-white/70">Secured by default</span></li></ul><div class="-ml-2.5 mt-3.5 inline-flex items-center xl:ml-0" aria-label="Compliance: SOC 2, SOC 3, HIPAA, GDPR, CCPA"><a href="https://www.pubnub.com/trust/compliance/soc2/" target="_blank" rel="noreferrer" class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center no-underline transition-opacity hover:opacity-80" title="SOC 2" aria-label="SOC 2"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[13px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">SOC 2</span></a><a href="https://cdn.builder.io/o/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Ff907e6ed501f4139a59d29099ca5c7c2?alt=media&amp;token=7b08c88f-288a-47a6-b72c-240d000e6730&amp;apiKey=0ee4d50ccdc943eda308d1099e2b1915" target="_blank" rel="noreferrer" class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center no-underline transition-opacity hover:opacity-80" title="SOC 3" aria-label="SOC 3"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[13px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">SOC 3</span></a><a href="https://www.pubnub.com/trust/compliance/hipaa/" target="_blank" rel="noreferrer" class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center no-underline transition-opacity hover:opacity-80" title="HIPAA" aria-label="HIPAA"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[13px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">HIPAA</span></a><a href="https://www.pubnub.com/trust/legal/gdpr/" target="_blank" rel="noreferrer" class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center no-underline transition-opacity hover:opacity-80" title="GDPR" aria-label="GDPR"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[13px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">GDPR</span></a><a href="https://www.pubnub.com/trust/legal/california-consumer-privacy-act/" target="_blank" rel="noreferrer" class="relative inline-flex h-[72px] w-[64px] shrink-0 items-center justify-center no-underline transition-opacity hover:opacity-80" title="CCPA" aria-label="CCPA"><svg width="64" height="72" viewBox="0 0 100 100" aria-hidden="true" class="absolute inset-0 block"><path d="M50 4 L84 22 L84 44 C84 66 70 84 50 92 C30 84 16 66 16 44 L16 22 Z" fill="rgba(255,255,255,.08)" stroke="rgba(255,255,255,.22)" stroke-width="0.9" stroke-linejoin="round"></path><path d="M50 11 L78 26 L78 43 C78 62 68 78 50 85 C32 78 22 62 22 43 L22 26 Z" fill="none" stroke="rgba(255,255,255,.32)" stroke-width="1.15" stroke-linejoin="round"></path></svg><span style="font-family:&#x27;JetBrains Mono&#x27;, Monaco, Menlo, Consolas, monospace" class="pointer-events-none z-[1] whitespace-nowrap rounded-[4px] bg-navy-800 px-[5px] py-[3px] text-center text-[13px] font-[700] leading-none tracking-[0.02em] text-white/[.82]">CCPA</span></a></div></div></div></section></div><style data-emotion-css="fqu86d">.css-fqu86d.builder-block{height:0;width:0;display:block;opacity:0;overflow:hidden;pointer-events:none;}</style><img src="https://cdn.builder.io/api/v1/pixel?apiKey=0ee4d50ccdc943eda308d1099e2b1915" aria-hidden="true" alt="" width="0" height="0" class="builder-block builder-pixel-dpuoqj682yb css-fqu86d" builder-id="builder-pixel-dpuoqj682yb"/></div></div></div></div></main><footer class="footer"><div class="footer-columns px-[40px] grid grid-cols-1 md:grid-cols-3 lg:flex items-start justify-between max-w-[1176px] mx-auto py-12 md:px-[16px]"><div><h3>Platform</h3><ul><li><a href="/products/pubnub-platform/">Overview</a></li><li><a href="/real-time-messaging-and-events/">Core Services</a></li><li><a href="/decision-intelligence-software/">Decision Intelligence</a></li><li>
2383<a href="/global-network-infrastructure/">Global Network</a></li><li><a href="/integrations/">Integrations</a></li><li><a href="/ai/generative-ai/">Generative AI</a></li><li><a href="/networking-mcp-server/">AI MCP Server</a></li><li><a href="https://www.pubnub.com/products/pubnub-platform/#security">Security &amp; Compliance</a></li><li><a href="/pricing/">Pricing</a></li></ul></div><div><h3>Use Case</h3><ul><li><a href="/solutions/chat/">Chat</a></li><li><a href="/solutions/live-audience-engagement/">Live Audience Engagement</a></li><li><a href="/solutions/collaboration-software/">Multi-User Collaboration</a></li><li><a href="/solutions/iot-device-control/">IoT Device Control</a></li><li><a href="/solutions/data-streaming/">Real-Time Workflows</a></li><li><a href="/solutions/geolocation/">Geolocation &amp; Dispatch</a></li><li><a href="/solutions/edge-messaging/">Edge Messaging</a></li><li><a href="/event-driven-architecture/">Event Driven Architecture</a></li><li><a href="/liveops-cloud-platform/">LiveOps</a></li><li><a href="/solutions/gamification/">Gamification</a></li><li><a href="/solutions/ai-moderation/">Auto-Moderation</a></li></ul></div><div><h3>Industry</h3><ul><li><a href="/solutions/sports-media/">Sports, Media &amp; Entertainment</a></li><li><a href="/solutions/digital-health/">Digital Healthcare</a></li><li><a href="/solutions/igaming-betting-casino/">iGaming, Betting &amp; Casino</a></li><li><a href="/solutions/gaming/">Gaming</a></li><li><a href="/solutions/enterprise/">Enterprise SaaS</a></li><li><a href="/solutions/transport-delivery/">Transport, Delivery &amp; Logistics</a></li><li><a href="/solutions/ecommerce/">eCommerce</a></li><li><a href="/solutions/alerts-and-push-notifications/">Push Notifications</a></li><li><a href="/solutions/call-center-automation/">Call Centers &amp; Customer Care</a></li><li><a href="/solutions/social/">Social &amp; Lifestyle</a></li><li><a href="/solutions/fintech/">FinTech</a></li></ul></div><div><h3>Resources</h3><ul><li><a href="/blog/">Blog</a></li><li><a href="/customers/">Customers</a></li><li><a href="/demos/">Demos</a></li><li><a href="/tutorials/">Tutorials</a></li><li><a href="/resources/?sortBy=Most%20recent&amp;categories=eBook">eBook</a></li><li><a href="/learn/glossary/">Glossary</a></li></ul></div><div><h3>About</h3><ul><li><a href="/company/">Our Company</a></li><li><a href="/company/careers/">Careers</a></li><li><a href="https://support.pubnub.com/hc/en-us">Support</a></li><li><a href="/partners/">Partners</a></li><li><a href="/trust/legal/privacy-policy/">Privacy Policy</a></li><li><a href="/trust/legal/terms-and-conditions/">Terms and Conditions</a></li><li><a href="/bug-bounty-policy/">Bug Bounty Policy</a></li><li><a href="/company/contact-us/">Contact Us</a></li><li><a href="/trust/">Trust Center</a></li><li><a href="/cookies-policy/">Cookie Policy</a></li><li><button class="ot-sdk-show-settings">Cookie Settings</button></li></ul></div></div><div class="flex flex-col md:flex-row items-end justify-between max-w-[1176px] mx-auto py-12 px-[40px] md:px-[16px]"><div class="w-full md:w-auto flex-col"><div class="flex space-x-6"><a href="https://www.facebook.com/PubNub" rel="noopener noreferrer" target="_blank" title="Follow PubNub on FaceBook"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" class="w-[24px] h-[24px]"><path d="M240 363.3L240 576L356 576L356 363.3L442.5 363.3L460.5 265.5L356 265.5L356 230.9C356 179.2 376.3 159.4 428.7 159.4C445 159.4 458.1 159.8 465.7 160.6L465.7 71.9C451.4 68 416.4 64 396.2 64C289.3 64 240 114.5 240 223.4L240 265.5L174 265.5L174 363.3L240 363.3z"></path></svg></a><a href="https://x.com/PubNub" rel="noopener noreferrer" target="_blank" title="Follow PubNub on X"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" class="w-[24px] h-[24px]"><path d="M453.2 112L523.8 112L369.6 288.2L551 528L409 528L297.7 382.6L170.5 528L99.8 528L264.7 339.5L90.8 112L236.4 112L336.9 244.9L453.2 112zM428.4 485.8L467.5 485.8L215.1 152L173.1 152L428.4 485.8z"></path></svg></a><a href="https://www.linkedin.com/company/pubnub" rel="noopener noreferrer" target="_blank" title="Follow PubNub on LinkedIn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" class="w-[24px] h-[24px]"><path d="M196.3 512L103.4 512L103.4 212.9L196.3 212.9L196.3 512zM149.8 172.1C120.1 172.1 96 147.5 96 117.8C96 103.5 101.7 89.9 111.8 79.8C121.9 69.7 135.6 64 149.8 64C164 64 177.7 69.7 187.8 79.8C197.9 89.9 203.6 103.6 203.6 117.8C203.6 147.5 179.5 172.1 149.8 172.1zM543.9 512L451.2 512L451.2 366.4C451.2 331.7 450.5 287.2 402.9 287.2C354.6 287.2 347.2 324.9 347.2 363.9L347.2 512L254.4 512L254.4 212.9L343.5 212.9L343.5 253.7L344.8 253.7C357.2 230.2 387.5 205.4 432.7 205.4C526.7 205.4 544 267.3 544 347.7L544 512L543.9 512z"></path></svg></a><a href="https://www.youtube.com/c/PubNub" rel="noopener noreferrer" target="_blank" title="Follow PubNub on YouTube"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" class="w-[24px] h-[24px]"><path d="M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z"></path></svg></a><a href="https://vimeo.com/pubnub" rel="noopener noreferrer" target="_blank" title="Follow PubNub on Vimeo"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" class="w-[24px] h-[24px]"><path d="M543.8 217.6C541.8 261.2 511.4 320.9 452.4 396.7C391.5 475.9 340 515.5 297.8 515.5C271.7 515.5 249.6 491.4 231.5 443.2C196.3 314 181.3 238.3 152.2 238.3C148.8 238.3 137.1 245.4 117 259.4L96 232.2C147.6 186.9 196.9 136.5 227.8 133.7C262.7 130.3 284.1 154.2 292.2 205.2C320.9 386.7 333.6 414.1 385.8 331.9C404.5 302.3 414.6 279.8 416 264.3C420.8 218.4 380.2 221.5 352.7 233.3C374.7 161.2 416.8 126.2 478.9 128.2C524.7 129.4 546.4 159.3 543.8 217.6z"></path></svg></a><a href="https://www.threads.net/@PubNub" rel="noopener noreferrer" target="_blank" title="Follow PubNub on Threads"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" class="w-[24px] h-[24px]"><path d="M427.5 299.7C429.7 300.6 431.7 301.6 433.8 302.5C463 316.6 484.4 337.7 495.6 363.9C511.3 400.4 512.8 459.7 465.3 507.1C429.1 543.3 385 559.6 322.7 560.1L322.4 560.1C252.2 559.6 198.3 536 162 489.9C129.7 448.9 113.1 391.8 112.5 320.3L112.5 319.8C113 248.3 129.6 191.2 161.9 150.2C198.2 104.1 252.2 80.5 322.4 80L322.7 80C393 80.5 447.6 104 485 149.9C503.4 172.6 517 199.9 525.6 231.6L485.2 242.4C478.1 216.6 467.4 194.6 453 177C423.8 141.2 380 122.8 322.5 122.4C265.5 122.9 222.4 141.2 194.3 176.8C168.1 210.1 154.5 258.3 154 320C154.5 381.7 168.1 429.9 194.3 463.3C222.3 498.9 265.5 517.2 322.5 517.7C373.9 517.3 407.9 505.1 436.2 476.8C468.5 444.6 467.9 405 457.6 380.9C451.5 366.7 440.5 354.9 425.7 346C422 372.9 413.9 394.3 401 410.8C383.9 432.6 359.6 444.4 328.3 446.1C304.7 447.4 282 441.7 264.4 430.1C243.6 416.3 231.4 395.3 230.1 370.8C227.
23836 322.5 265.8 287.8 325.3 284.4C346.4 283.2 366.2 284.1 384.5 287.2C382.1 272.4 377.2 260.6 369.9 252C359.9 240.3 344.3 234.3 323.7 234.2L323 234.2C306.4 234.2 284 238.8 269.7 260.5L235.3 236.9C254.5 207.8 285.6 191.8 323.1 191.8L323.9 191.8C386.5 192.2 423.8 231.3 427.6 299.5L427.4 299.7L427.5 299.7zM271.5 368.5C272.8 393.6 299.9 405.3 326.1 403.8C351.7 402.4 380.7 392.4 385.6 330.6C372.4 327.7 357.8 326.2 342.2 326.2C337.4 326.2 332.6 326.3 327.8 326.6C284.9 329 270.6 349.8 271.6 368.4L271.5 368.5z"></path></svg></a></div></div><div class="text-left mt-[30px] md:mt-0 md:text-right md:max-w-[50%] text-[12px] leading-tight">© 2010 - <!-- -->2026<!-- --> PubNub Inc. All Rights Reserved. PUBNUB and the PUBNUB logo are trademarks or registered trademarks of PubNub Inc. in the U.S. and other countries.</div></div></footer><div>
2384          
2384<script type="text/javascript">
2385            if (!window.location.pathname.includes('/thank-you-page/')) {
2386              var script = document.createElement('script');
2387              script.defer = true;
2388              script.src = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';
2389              script.type = 'text/javascript';
2390              script.charset = 'UTF-8';
2391              script.setAttribute('data-domain-script', '2f9f7541-e83d-4f83-998f-fc02836ba899');
2392              document.head.appendChild(script);
2393            
2394              const STRICTLY_NECESSARY_COOKIES = 'C0001'
2395              const PERFORMANCE_COOKIES = 'C0002'
2396              const FUNCTIONAL_COOKIES = 'C0003'
2397              const TARGETING_COOKIES = 'C0004'
2398              const SOCIAL_MEDIA_COOKIES = 'C0005'
2399
2400            function loadScript(url) {
2401              const loadScriptTag = () => {
2402                const script = document.createElement('script');
2403                script.type = 'text/javascript';
2404                script.async = true;
2405                script.src = url;
2406                document.body.appendChild(script);
2407              };
2408
2409              if ('requestIdleCallback' in window) {
2410                requestIdleCallback(loadScriptTag);
2411              } else {
2412                setTimeout(loadScriptTag, 1);
2413              }
2414            }
2415
2416            function loadGroup(group) {
2417              if (group === STRICTLY_NECESSARY_COOKIES) {
2418                loadScript('/scripts/global.js');
2419              }
2420              if (group === PERFORMANCE_COOKIES) {
2421                loadScript('/scripts/utm.js');
2422              }
2423              if (group === TARGETING_COOKIES) {
2424                loadScript('/scripts/gtm.js');
2425                loadScript('/scripts/amplitude.js');
2426                loadScript('/scripts/common-room.js');
2427                var isBotUa = false;
2428                try {
2429                  var botPattern = new RegExp(" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|24x7|;\\s\\w+;$|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+\\.ai|\\bbw/|\\bdlc\\b|\\bort/|\\bperl\\b|\\btime/|\\||^[<\\(;]|^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^blackbox exporter|^bot|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^exodusmovement|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\((?:compatible;)?(?:\\s?[\\w\\d-.]+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^ps_daily/|^python|^rank|^read|^reed|^remove\\.bg/|^rest|^rss|^snapchat|^sora |^space bison|^stape/|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|abuse|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|attracta|audit|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|collapsify\\b|convertify|cookiehubverify/|crawl|cursor/|cypress/|dareboost|datanyze|dejaclick|detect|discovery|dmbrowser|download|exaleadcloudview|feed|fetcher|firephp|foregenix|functionize|grab|hardenize\\b|headless|hotjar|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|linktiger|mail\\.ru/|manager|manus-user/|marketgoo/|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|openvas|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|playwright|powermarks|preview|productfinder|prospectingstudio|proxy|ptst[ /]\\d|radar|readable/|retriever|rexx;|rigor|rss\\b|scrape|securityheaders|selenium|server|silktide|sindup/|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|testlocally|tools|torrent|transcoder|upday/|url|validator|virtuoso|wappalyzer|watchtowr|webglance|webkit2png|whatcms/|xtate/", 'i');
2430                  var userAgent = window && window.navigator && window.navigator.userAgent;
2431                  isBotUa = !userAgent || botPattern.test(userAgent);
2432                } catch (e) {
2433                  // Fail open: never block segment.js for a real user because
2434                  // the UA regex could not be built on this engine.
2435                  isBotUa = false;
2436                }
2437                if (!isBotUa) {
2438                  loadScript('/scripts/segment.js')
2439                }
2440              }
2441            }
2442
2443            let loadedGroups = [];
2444
2445              function OptanonWrapper() {
2446                let groups = OnetrustActiveGroups.split(',').filter(g => g.length);
2447
2448                if (loadedGroups.filter(group => !groups.includes(group)).length > 0) {
2449                  window.location = '/clearCookies/';
2450                }
2451
2452                for (const group of groups.filter(group => !loadedGroups.includes(group))) {
2453                  loadGroup(group);
2454                  loadedGroups.push(group);
2455                }
2456              }
2457            }
2458          </script>
2458
2459        </div>
2459<script src="/_next/static/chunks/webpack-b9f1564d49faa65c.js" async=""></script>
2459<script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script>
2459<script>self.__next_f.push([1,"1:HL[\"/_next/static/media/3b75a93549024c79-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/46bdd75a3ff56824-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/4eb5824f4a628c7e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/609eb1ae761915cb-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/64698228b2165a7c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/7d8c7b021bdcbfbb-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/85a55989c080432c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/media/b4453bb1af72eecd-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n9:HL[\"/_next/static/media/bfb532d5b1e18ccb-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\na:HL[\"/_next/static/media/d7b08b16873350f4-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\nb:HL[\"/_next/static/media/e7c031161b7acec9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\nc:HL[\"/_next/static/media/f77b4e4ded2b5d1a-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\nd:HL[\"/_next/static/media/fab5947736a1b125-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\ne:HL[\"/_next/static/css/ff54f34926f8dbca.css\",\"style\"]\nf:HL[\"/_next/static/css/10ea482466c0d122.css\",\"style\"]\n"])</script>
2459<script>self.__next_f.push([1,"10:I[95751,[],\"\"]\n13:I[39275,[],\"\"]\n15:I[61343,[],\"\"]\n16:I[62446,[\"7980\",\"static/chunks/7980-42f6aa9f96059933.js\",\"7601\",\"static/chunks/app/error-486df153916b040c.js\"],\"default\"]\n18:I[30455,[\"4688\",\"static/chunks/4688-817ee60e607f64d6.js\",\"7152\",\"static/chunks/7152-25220acc710e200d.js\",\"3185\",\"static/chunks/app/layout-a3c23384516b2ace.js\"],\"ConditionalOneTrust\"]\n19:I[15488,[\"4688\",\"static/chunks/4688-817ee60e607f64d6.js\",\"7152\",\"static/chunks/7152-25220acc710e200d.js\",\"3185\",\"static/chunks/app/layout-a3c23384516b2ace.js\"],\"BlocksAiAnnouncement\"]\n1b:I[96314,[\"6470\",\"static/chunks/app/global-error-fb42b499952841de.js\"],\"default\"]\n14:[\"page\",\"\",\"oc\"]\n1c:[]\n0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ff54f34926f8dbca.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/10ea482466c0d122.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L10\",null,{\"buildId\":\"ocFUg-ZeyrLtN5xIrjQdM\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/\",\"initialTree\":[\"\",{\"children\":[[\"page\",\"\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[[\"page\",\"\",\"oc\"],{\"children\":[\"__PAGE__\",{},[[\"$L11\",\"$L12\"],null],null]},[\"$\",\"$L13\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$14\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L15\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_0f4201 __variable_d31242\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-title\",\"content\":\"pubnub\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/material-icons/material-icons-outlined.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"\"}]]}],[\"$\",\"body\",null,{\"className\":\"__className_0f4201\",\"children\":[[\"$\",\"$L13\",null,{\"parallelRouterKey\":\"children\",\"s"])</script>
2459<script>self.__next_f.push([1,"egmentPath\":[\"children\"],\"error\":\"$16\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L15\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$L17\",\"notFoundStyles\":[],\"styles\":null}],[\"$\",\"$L18\",null,{}],[\"$\",\"$L19\",null,{}]]}]]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[false,\"$L1a\"],\"globalErrorComponent\":\"$1b\",\"missingSlots\":\"$W1c\"}]]\n"])</script>
2459<script>self.__next_f.push([1,"12:[\"$L1d\",null]\n"])</script>
2459<script>self.__next_f.push([1,"1a:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Build, manage, \u0026 optimize real-time apps at scale | PubNub\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Power your real-time app with PubNub - the world's largest pub/sub network. Scale to 3 trillion API calls/month, with \u003c30ms global delivery. Start building now!\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://www.pubnub.com/\"}],[\"$\",\"link\",\"6\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/\"}],[\"$\",\"link\",\"7\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/ai/\"}],[\"$\",\"link\",\"8\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/blocks-ai/\"}],[\"$\",\"link\",\"9\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/chat/\"}],[\"$\",\"link\",\"10\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/collaboration/\"}],[\"$\",\"link\",\"11\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/customer-support/\"}],[\"$\",\"link\",\"12\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/data-streaming/\"}],[\"$\",\"link\",\"13\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/decision-intelligence/\"}],[\"$\",\"link\",\"14\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/digital-commerce/\"}],[\"$\",\"link\",\"15\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/digital-health/\"}],[\"$\",\"link\",\"16\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/fintech/\"}],[\"$\",\"link\",\"17\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/gaming/\"}],[\"$\",\"link\",\"18\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/geolocation/\"}],[\"$\",\"link\",\"19\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/guides/\"}],[\"$\",\"link\",\"20\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/illuminate/\"}],[\"$\",\"link\",\"21\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/iot/\"}],[\"$\",\"link\",\"22\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/live-streaming/\"}],[\"$\",\"link\",\"23\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/news/\"}],[\"$\",\"link\",\"24\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/product-updates/\"}],[\"$\",\"link\",\"25\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/portal/\"}],[\"$\",\"link\",\"26\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/push-notifications/\"}],[\"$\",\"link\",\"27\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/real-time/\"}],[\"$\",\"link\",\"28\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/audience-engagement/\"}],[\"$\",\"link\",\"29\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/transport-and-logistics/\"}],[\"$\",\"link\",\"30\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://www.pubnub.com/feed/blog/category/casino/\"}],[\"$\",\"meta\",\"31\",{\"name\":\"google-site-verification\",\"content\":\"ArwFoyb7cydmFrAxPmImA0ZMQD2Ka1VcBFuwM4J0iUk\"}],[\"$\",\"meta\",\"32\",{\"name\":\"yandex-verification\",\"content\":\"7655cf9b8c32273d\"}],[\"$\",\"meta\",\"33\",{\"name\":\"fb:app_id\",\"content\":\"1699513143641850\"}],[\"$\",\"meta\",\"34\",{\"name\":\"globalsign-domain-verification\",\"content\":\"8DqtGiinnsWmU7Jx8drsM7aOLda0Uy2HVd8iE4qWWF\"}],[\"$\",\"meta\",\"35\",{\"property\":\"og:title\",\"content\":\"The complete real-time developer platform\"}],[\"$\",\"meta\",\"36\",{\"property\":\"og:description\",\"content\":\"Real-time APIs to build engaging remote experiences\"}],[\"$\",\"meta\",\"37\",{\"property\":\"og:url\",\"content\":\"https://www.pubnub.com/\"}],[\"$\",\"meta\",\"38\",{\"property\":\"og:site_name\",\"content\":\"PubNub\"}],[\"$\",\"meta\",\"39\",{\"property\":\"og:image\",\"content\":\"https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fba12fb30a1c04b2fb59076c3143c75eb\"}],[\"$\",\"meta\",\"40\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"41\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"42\",{\"name\":\"twitter:site\",\"content\":\"@pubnub\"}],[\"$\",\"meta\",\"43\",{\"name\":\"twitter:creator\",\"content\":\"@pubnub\"}],[\"$\",\"meta\",\"44\",{\"name\":\"twitter:title\",\"content\":\"The complete real-time developer platform\"}],[\"$\",\"meta\",\"45\",{\"name\":\"twitter:description\",\"content\":\"Leverage the power of hosted real-time APIs to build engaging remote experiences\"}],[\"$\",\"meta\",\"46\",{\"name\":\"twitter:image\",\"content\":\"https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fba12fb30a1c04b2fb59076c3143c75eb\"}],[\"$\",\"link\",\"47\",{\"rel\":\"icon\",\"href\":\"/favicon/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"48\",{\"rel\":\"icon\",\"href\":\"/favicon/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"49\",{\"rel\":\"icon\",\"href\":\"/favicon/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"50\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon/apple-touch-icon.png\",\"sizes\":\"180x180\"}],[\"$\",\"link\",\"51\",{\"rel\":\"icon\",\"href\":\"/favicon/favicon.ico\",\"sizes\":\"16x16\"}],[\"$\",\"meta\",\"52\",{\"name\":\"next-size-adjust\"}]]\n"])</script>
2459<script>self.__next_f.push([1,"11:null\n"])</script>
2459<script>self.__next_f.push([1,"1e:I[93543,[\"7409\",\"static/chunks/a90da667-4bc8929f7c1bab85.js\",\"991\",\"static/chunks/52774a7f-b863e6e6bb50ffa1.js\",\"8038\",\"static/chunks/7ce798d6-a8f72c94b5f085dd.js\",\"8189\",\"static/chunks/fb03831a-8388fcf59ef37390.js\",\"555\",\"static/chunks/555-8251e49e16bc4a37.js\",\"8715\",\"static/chunks/8715-f2ebdc787a5c1145.js\",\"2893\",\"static/chunks/2893-b63bb2e09eb13db4.js\",\"457\",\"static/chunks/457-e7fbfa34b9c40750.js\",\"231\",\"static/chunks/231-068ec427584aebf2.js\",\"5378\",\"static/chunks/5378-e02a60bd77533d64.js\",\"7980\",\"static/chunks/7980-42f6aa9f96059933.js\",\"3543\",\"static/chunks/3543-f9abf3c32c71210e.js\",\"7879\",\"static/chunks/7879-f28cec6628e1206d.js\",\"6672\",\"static/chunks/6672-2e79a0596ee5ce52.js\",\"1835\",\"static/chunks/1835-2760fa4075eadd02.js\",\"718\",\"static/chunks/718-04f54b39b94fe80e.js\",\"7524\",\"static/chunks/app/%5B%5B...page%5D%5D/page-30074c95c69c7d6f.js\"],\"Default\"]\n1f:I[60718,[\"7409\",\"static/chunks/a90da667-4bc8929f7c1bab85.js\",\"991\",\"static/chunks/52774a7f-b863e6e6bb50ffa1.js\",\"8038\",\"static/chunks/7ce798d6-a8f72c94b5f085dd.js\",\"8189\",\"static/chunks/fb03831a-8388fcf59ef37390.js\",\"555\",\"static/chunks/555-8251e49e16bc4a37.js\",\"8715\",\"static/chunks/8715-f2ebdc787a5c1145.js\",\"2893\",\"static/chunks/2893-b63bb2e09eb13db4.js\",\"457\",\"static/chunks/457-e7fbfa34b9c40750.js\",\"231\",\"static/chunks/231-068ec427584aebf2.js\",\"5378\",\"static/chunks/5378-e02a60bd77533d64.js\",\"7980\",\"static/chunks/7980-42f6aa9f96059933.js\",\"3543\",\"static/chunks/3543-f9abf3c32c71210e.js\",\"7879\",\"static/chunks/7879-f28cec6628e1206d.js\",\"6672\",\"static/chunks/6672-2e79a0596ee5ce52.js\",\"1835\",\"static/chunks/1835-2760fa4075eadd02.js\",\"718\",\"static/chunks/718-04f54b39b94fe80e.js\",\"7524\",\"static/chunks/app/%5B%5B...page%5D%5D/page-30074c95c69c7d6f.js\"],\"RenderBuilderContent\"]\n20:T548,M427.5 299.7C429.7 300.6 431.7 301.6 433.8 302.5C463 316.6 484.4 337.7 495.6 363.9C511.3 400.4 512.8 459.7 465.3 507.1C429.1 543.3 385 559.6 322.7 560.1L322.4 560.1C252.2 559.6 198.3 536 162 489.9C129.7 448.9 113.1 391.8 112.5 320.3L112.5 319.8C113 248.3 129.6 191.2 161.9 150.2C198.2 "])</script>
2459<script>self.__next_f.push([1,"104.1 252.2 80.5 322.4 80L322.7 80C393 80.5 447.6 104 485 149.9C503.4 172.6 517 199.9 525.6 231.6L485.2 242.4C478.1 216.6 467.4 194.6 453 177C423.8 141.2 380 122.8 322.5 122.4C265.5 122.9 222.4 141.2 194.3 176.8C168.1 210.1 154.5 258.3 154 320C154.5 381.7 168.1 429.9 194.3 463.3C222.3 498.9 265.5 517.2 322.5 517.7C373.9 517.3 407.9 505.1 436.2 476.8C468.5 444.6 467.9 405 457.6 380.9C451.5 366.7 440.5 354.9 425.7 346C422 372.9 413.9 394.3 401 410.8C383.9 432.6 359.6 444.4 328.3 446.1C304.7 447.4 282 441.7 264.4 430.1C243.6 416.3 231.4 395.3 230.1 370.8C227.6 322.5 265.8 287.8 325.3 284.4C346.4 283.2 366.2 284.1 384.5 287.2C382.1 272.4 377.2 260.6 369.9 252C359.9 240.3 344.3 234.3 323.7 234.2L323 234.2C306.4 234.2 284 238.8 269.7 260.5L235.3 236.9C254.5 207.8 285.6 191.8 323.1 191.8L323.9 191.8C386.5 192.2 423.8 231.3 427.6 299.5L427.4 299.7L427.5 299.7zM271.5 368.5C272.8 393.6 299.9 405.3 326.1 403.8C351.7 402.4 380.7 392.4 385.6 330.6C372.4 327.7 357.8 326.2 342.2 326.2C337.4 326.2 332.6 326.3 327.8 326.6C284.9 329 270.6 349.8 271.6 368.4L271.5 368.5z"])</script>
2459<script>self.__next_f.push([1,"1d:[[\"$\",\"$L1e\",null,{\"topNavigationData\":[{\"title\":\"Platform\",\"column\":[{\"items\":[{\"highlightLinkLabel\":\"Explore our platform\",\"highlight\":true,\"url\":\"/products/pubnub-platform/\",\"icon\":\"info\",\"description\":\"Your platform for interactive experiences\",\"title\":\"Platform Overview\"},{\"icon\":\"widgets\",\"title\":\"Core Services\",\"description\":\"Real-time communication with low-latency\",\"highlight\":false,\"url\":\"/real-time-messaging-and-events/\"},{\"url\":\"/global-network-infrastructure/\",\"title\":\"Global Network\",\"icon\":\"public\",\"highlight\":false,\"description\":\"Secure, Scalable Infrastructure\"},{\"title\":\"Decision Intelligence - Overview\",\"icon\":\"ads_click\",\"highlight\":false,\"url\":\"/decision-intelligence-software/\",\"description\":\"Power Decisions with Real-Time Intelligence\",\"subItems\":[{\"description\":\"Turn Live User Data into Real-Time Results\",\"url\":\"/illuminate/\",\"icon\":\"lightbulb\",\"title\":\"Illuminate\"},{\"description\":\"Visibility into Real-Time App’s Performance\",\"icon\":\"insights\",\"title\":\"Insights\",\"url\":\"/products/pubnub-insights/\"}]}]},{\"items\":[{\"icon\":\"settings\",\"description\":\"Integrate best-in-class third-party services \",\"highlight\":false,\"url\":\"/integrations/\",\"title\":\"Integrations\"},{\"description\":\"Build AI-native, real-time apps\",\"highlight\":false,\"icon\":\"auto_awesome\",\"title\":\"Generative AI\",\"url\":\"/ai/generative-ai/\"},{\"url\":\"/networking-mcp-server/\",\"icon\":\"storage\",\"description\":\"Unlock real-time code with your AI\",\"title\":\"MCP Server\",\"highlight\":false},{\"icon\":\"\",\"title\":\" Blocks.ai\",\"highlight\":false,\"description\":\"The control plane and networking layer for AI agents\",\"url\":\"https://blocks.ai/\",\"customIconUrl\":\"https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fbe6afb232f174eadb71b2106718f3c6a\"}]}]},{\"column\":[{\"items\":[{\"subItems\":[],\"icon\":\"forum\",\"url\":\"/solutions/chat/\",\"title\":\"Chat\",\"description\":\"Provide chat experiences your users need\"},{\"url\":\"/solutions/live-audience-engagement/\",\"description\":\"From live events to social workouts\",\"title\":\"Live Audience Engagement\",\"icon\":\"celebration\"},{\"url\":\"/solutions/collaboration-software/\",\"icon\":\"groups\",\"description\":\"Bring the team together\",\"title\":\"Multi-User Collaboration\",\"subItems\":[]},{\"description\":\"Build an IoT platform \u0026 manage devices\",\"title\":\"IoT Device Control\",\"icon\":\"settings_remote\",\"url\":\"/solutions/iot-device-control/\",\"subItems\":[]},{\"subItems\":[],\"url\":\"/solutions/data-streaming/\",\"description\":\"Stream Data. Orchestrate Actions\",\"title\":\"Real-Time Workflows\",\"icon\":\"smart_display\"},{\"subItems\":[],\"icon\":\"location_on\",\"title\":\"Geolocation \u0026 Dispatch\",\"description\":\"Geolocation APIs to track your fleet’s cars\",\"url\":\"/solutions/geolocation/\"}],\"groupName\":\"By Use Case\"},{\"items\":[{\"description\":\"Never worry about latency issues again\",\"icon\":\"share\",\"url\":\"/solutions/edge-messaging/\",\"title\":\"Edge Messaging\"},{\"icon\":\"rocket_launch\",\"url\":\"/event-driven-architecture/\",\"title\":\"Event-Driven Architecture\",\"description\":\"Launch faster with Events, not endpoints\"},{\"url\":\"/liveops-cloud-platform/\",\"description\":\"Real-time decisions, zero lag\",\"icon\":\"tips_and_updates\",\"title\":\"LiveOps\"},{\"url\":\"/solutions/gamification/\",\"title\":\"Gamification\",\"description\":\"Drive engagement in real time\",\"icon\":\"toys\"},{\"description\":\"AI-powered message filtering\",\"title\":\"Auto-Moderation\",\"url\":\"/solutions/ai-moderation/\",\"icon\":\"auto_awesome\"},{\"icon\":\"moving\",\"title\":\"App Optimization\",\"description\":\"Maximize Efficiency – Made Easy\",\"url\":\"/solutions/app-optimization/\"}],\"groupName\":\"By Use Case\"},{\"items\":[{\"title\":\"Sports, Media \u0026 Entertainment\",\"icon\":\"play_circle\",\"url\":\"/solutions/sports-media/\"},{\"icon\":\"monitor_heart\",\"title\":\"Digital Healthcare\",\"url\":\"/solutions/digital-health/\"},{\"title\":\"iGaming, Betting \u0026 Casino\",\"url\":\"/solutions/igaming-betting-casino/\",\"icon\":\"monetization_on\"}
2459,{\"url\":\"/solutions/gaming/\",\"title\":\"Gaming\",\"icon\":\"sports_esports\"},{\"title\":\"eCommerce\",\"icon\":\"shopping_bag\",\"url\":\"/solutions/ecommerce/\"},{\"title\":\"FinTech\",\"url\":\"/solutions/fintech/\",\"icon\":\"memory\"},{\"title\":\"Transport, Delivery \u0026 Logistics\",\"url\":\"/solutions/transport-delivery/\",\"icon\":\"local_shipping\"},{\"title\":\"Call Centers \u0026 Customer Care\",\"url\":\"/solutions/call-center-automation/\",\"icon\":\"support_agent\"},{\"icon\":\"groups\",\"url\":\"/solutions/social/\",\"title\":\"Social \u0026 Lifestyle\"},{\"title\":\"Enterprise SaaS\",\"icon\":\"cloud\",\"url\":\"/solutions/enterprise/\"}],\"groupName\":\"By Industry\"}],\"title\":\"Solutions\"},{\"title\":\"Pricing\",\"trackingId\":\"top-navigation:pricing\",\"url\":\"/pricing/\"},{\"title\":\"Developer\",\"column\":[{\"items\":[{\"icon\":\"code\",\"title\":\"Developer Home\",\"url\":\"/developers/\"},{\"title\":\"Documentation\",\"icon\":\"description\",\"url\":\"/docs\"},{\"url\":\"/docs/sdks\",\"title\":\"SDKs\",\"icon\":\"build\"},{\"title\":\"Tutorials\",\"url\":\"/tutorials/\",\"urlsIncluded\":[{\"urlPart\":\"/tutorials/*\"}],\"icon\":\"play_circle\"},{\"title\":\"Tour\",\"icon\":\"book\",\"url\":\"/tour/introduction/\",\"urlsIncluded\":[{\"urlPart\":\"/tour/*\"}]},{\"title\":\"Network\",\"icon\":\"public\",\"url\":\"https://status.pubnub.com/\"}],\"url\":\"\"}],\"url\":\"\"},{\"title\":\"Resources\",\"column\":[{\"items\":[{\"icon\":\"emoji_events\",\"title\":\"Why PubNub Wins\",\"url\":\"/compare/\"},{\"title\":\"Blog\",\"icon\":\"forum\",\"urlsIncluded\":[{\"urlPart\":\"/guides/*\"},{\"urlPart\":\"/how-to/*\"},{\"urlPart\":\"/blog/*\"}],\"url\":\"/blog/\"},{\"icon\":\"play_circle\",\"urlsIncluded\":[{\"urlPart\":\"/demos/*\"}],\"title\":\"Demos\",\"url\":\"/demos/\"},{\"title\":\"Customers\",\"url\":\"/customers/\",\"urlsIncluded\":[{\"urlPart\":\"/customers/*\"}],\"icon\":\"people\"},{\"icon\":\"book\",\"url\":\"/ebook/\",\"title\":\"eBooks\",\"urlsIncluded\":[{\"urlPart\":\"/ebook/*\"}]},{\"icon\":\"star_outline\",\"title\":\"Careers\",\"url\":\"/company/careers/\"},{\"title\":\"About Us\",\"icon\":\"info\",\"url\":\"/company/\"}]}]}],\"style\":\"\",\"banner\":{\"additionalLinks\":[],\"badgeText\":\"Introducing Blocks.ai\",\"description\":\"The control plane and networking layer for AI agents. \",\"url\":\"https://blocks.ai/\"},\"logoUrl\":\"/\"}],[\"$\",\"main\",null,{\"children\":[\"$\",\"$L1f\",null,{\"content\":{\"createdBy\":\"zRX2GV4CJBZy4l0dhMnZ8TYV9GT2\",\"createdDate\":1789540082249,\"data\":{\"description\":\"Power your real-time app with PubNub - the world's largest pub/sub network. Scale to 3 trillion API calls/month, with \u003c30ms global delivery. Start building now!\",\"footerType\":\"Default\",\"headerType\":\"default\",\"noFollow\":false,\"noIndex\":false,\"ogDescription\":\"Real-time APIs to build engaging remote experiences\",\"ogTitle\":\"The complete real-time developer platform\",\"socialMediaImage\":\"https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fba12fb30a1c04b2fb59076c3143c75eb\",\"themeId\":false,\"title\":\"Build, manage, \u0026 optimize real-time apps at scale\",\"twitterDescription\":\"Leverage the power of hosted real-time APIs to build engaging remote experiences\",\"twitterTitle\":\"The complete real-time developer platform\",\"blocks\":[{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-e41f3071a4d2428a8db358523c46c3a5\",\"component\":{\"name\":\"HomepageV5Hero\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-1f7547a0610a46f299fa341aff696608\",\"component\":{\"name\":\"HomepageV5Globe\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-9052a3bbc53449189956b2264aea9422\",\"component\":{\"name\":\"HomepageV5ProofStr
2459ip\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-20ce7fc4c4f240aaaca7d35a50d2beb5\",\"component\":{\"name\":\"HomepageV5PlatformArchitecture\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-ee0a7fd0002c4451a089691e45f628e4\",\"component\":{\"name\":\"HomepageV5AppPreview\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-a4098cca9fcf413e8697c6ce2482a862\",\"component\":{\"name\":\"HomepageV5ProgrammablePubSub\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-e5b476703b724032936ddc041cdb7fb0\",\"component\":{\"name\":\"HomepageV5CustomerStories\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-b236ba83714f47ac9cb53fea3bcd1ba6\",\"component\":{\"name\":\"HomepageV5FivePromises\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-88650f453fea429d9f4e8453709bc831\",\"component\":{\"name\":\"HomepageV5TheRealEngineeringProblem\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-1585c23d73de4a248d00641190131e5f\",\"component\":{\"name\":\"HomepageV5Timeline\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-f1c12f9bb204401f9174adc3abe550c9\",\"component\":{\"name\":\"HomepageV5BuildVsBuy\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"layerName\":\"Homepage v5 — Blocks.ai\",\"id\":\"builder-c025707806ba4ada85c93db0eded03b6\",\"component\":{\"name\":\"HomepageV5BlocksAi\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"layerName\":\"HomepageV5 — Faq\",\"id\":\"builder-41058a111eec48cf9a5f845b3e3d4966\",\"component\":{\"name\":\"HomepageV5Faq\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"@type\":\"@builder.io/sdk:Element\",\"@version\":2,\"id\":\"builder-042e5
245975b3a82400b857fbabbcae87bce\",\"component\":{\"name\":\"HomepageV5Quickstart\",\"options\":{},\"isRSC\":null},\"responsiveStyles\":{\"large\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"position\":\"relative\",\"flexShrink\":\"0\",\"boxSizing\":\"border-box\",\"marginTop\":\"0px\"}}},{\"id\":\"builder-pixel-dpuoqj682yb\",\"@type\":\"@builder.io/sdk:Element\",\"tagName\":\"img\",\"properties\":{\"src\":\"https://cdn.builder.io/api/v1/pixel?apiKey=0ee4d50ccdc943eda308d1099e2b1915\",\"aria-hidden\":\"true\",\"alt\":\"\",\"width\":\"0\",\"height\":\"0\"},\"responsiveStyles\":{\"large\":{\"height\":\"0\",\"width\":\"0\",\"display\":\"block\",\"opacity\":\"0\",\"overflow\":\"hidden\",\"pointerEvents\":\"none\"}}}],\"url\":\"/\",\"state\":{\"deviceSize\":\"large\",\"location\":{\"pathname\":\"/\",\"path\":[\"\"],\"query\":{}}}},\"folders\":[],\"id\":\"130f5d31390f472d81930d8501123303\",\"lastUpdateSource\":null,\"lastUpdated\":1790672867213,\"lastUpdatedBy\":\"zRX2GV4CJBZy4l0dhMnZ8TYV9GT2\",\"meta\":{\"breakpoints\":{\"medium\":1245,\"small\":640},\"componentsUsed\":{\"HomepageV5AppPreview\":1,\"HomepageV5BlocksAi\":1,\"HomepageV5BuildVsBuy\":1,\"HomepageV5CustomerStories\":1,\"HomepageV5Faq\":1,\"HomepageV5FivePromises\":1,\"HomepageV5Globe\":1,\"HomepageV5Hero\":1,\"HomepageV5PlatformArchitecture\":1,\"HomepageV5ProgrammablePubSub\":1,\"HomepageV5ProofStrip\":1,\"HomepageV5Quickstart\":1,\"HomepageV5TheRealEngineeringProblem\":1,\"HomepageV5Timeline\":1},\"hasAutosaves\":false,\"hasErrors\":false,\"hasLinks\":false,\"kind\":\"page\",\"lastPreviewUrl\":\"https://pubnub-web-builder.netlify.app/?builder.space=0ee4d50ccdc943eda308d1099e2b1915\u0026builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests%2CmergePullRequests%2CfusionHostingPublish%2CfusionHostingRevokeAiToken\u0026builder.user.role.name=Developer\u0026builder.user.role.id=developer\u0026builder.cachebust=true\u0026builder.preview=page\u0026builder.noCache=true\u0026builder.allowTextEdit=true\u0026__builder_editing__=true\u0026builder.overrides.page=130f5d31390f472d81930d8501123303\u0026builder.overrides.130f5d31390f472d81930d8501123303=130f5d31390f472d81930d8501123303\u0026builder.overrides.page:/=130f5d31390f472d81930d8501123303\u0026builder.options.locale=Default\"},\"modelId\":\"6132796c4d0b4407bcc09c2922f09c59\",\"name\":\"New home page 2026\",\"published\":\"published\",\"query\":[{\"@type\":\"@builder.io/core:Query\",\"operator\":\"is\",\"property\":\"urlPath\",\"value\":\"/\"}],\"stageModifiedSincePublish\":false,\"testRatio\":1,\"variations\":{},\"firstPublished\":1789540188653,\"screenshot\":\"https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2F9a014c43194d45dda97dc683e46b8ad8\",\"rev\":\"is0bwbwebi\"},\"model\":\"page\"}]}],[\"$\",\"footer\",null,{\"className\":\"footer\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-columns px-[40px] grid grid-cols-1 md:grid-cols-3 lg:flex items-start justify-between max-w-[1176px] mx-auto py-12 md:px-[16px]\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Platform\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/products/pubnub-platform/\",\"children\":\"Overview\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/real-time-messaging-and-events/\",\"children\":\"Core Services\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/decision-intelligence-software/\",\"children\":\"Decision Intelligence\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/global-network-infrastructure/\",\"children\":\"Global Network\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/integrations/\",\"children\":\"Integrations\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/ai/generative-ai/\",\"children\":\"Generative AI\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/networking-mcp-server/\",\"children\":\"AI MCP Server\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://www.pubnub.com/products/pubnub-platform/#security\",\"children\":\"Security \u0026 Compliance\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/pricing/\",\"children\":\"Pricing\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Use Case\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/chat/\",\"children\":\"Chat\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/live-audience-engagement/\",\"children\":\"Live Audience Engagement\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/collaboration-software/\",\"children\":\"Multi-User Collaboration\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/iot-device-control/\",\"children\":\"IoT Device Control\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/data-streaming/\",\"children\":\"Real-Time Workflows\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/geolocation/\",\"children\":\"Geolocation \u0026 Dispatch\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/edge-messaging/\",\"children\":\"Edge Messaging\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/event-driven-architecture/\",\"children\":\"Event Driven Architecture\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/liveops-cloud-platform/\",\"children\":\"LiveOps\"}]}],[\"$\",\"li\",\"09\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/gamification/\",\"children\":\"Gamification\"}]}],[\"$\",\"li\",\"010\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/ai-moderation/\",\"children\":\"Auto-Moderation\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Industry\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/sports-media/\",\"children\":\"Sports, Media \u0026 Entertainment\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/digital-health/\",\"children\":\"Digital Healthcare\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/igaming-betting-casino/\",\"children\":\"iGaming, Betting \u0026 Casino\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/gaming/\",\"children\":\"Gaming\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/enterprise/\",\"children\":\"Enterprise SaaS\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/transport-delivery/\",\"children\":\"Transport, Delivery \u0026 Logistics\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/ecommerce/\",\"children\":\"eCommerce\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/alerts-and-push-notifications/\",\"children\":\"Push Notifications\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/call-center-automation/\",\"children\":\"Call Centers \u0026 Customer Care\"}]}],[\"$\",\"li\",\"09\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/social/\",\"children\":\"Social \u0026 Lifestyle\"}]}],[\"$\",\"li\",\"010\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/fintech/\",\"children\":\"FinTech\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/\",\"children\":\"Blog\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/customers/\",\"children\":\"Customers\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/demos/\",\"children\":\"Demos\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/tutorials/\",\"children\":\"Tutorials\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/resources/?sortBy=Most%20recent\u0026categories=eBook\",\"children\":\"eBook\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/learn/glossary/\",\"children\":\"Glossary\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"About\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/company/\",\"children\":\"Our Company\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/company/careers/\",\"children\":\"Careers\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://support.pubnub.com/hc/en-us\",\"children\":\"Supp
2459ort\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/partners/\",\"children\":\"Partners\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/trust/legal/privacy-policy/\",\"children\":\"Privacy Policy\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/trust/legal/terms-and-conditions/\",\"children\":\"Terms and Conditions\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/bug-bounty-policy/\",\"children\":\"Bug Bounty Policy\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/company/contact-us/\",\"children\":\"Contact Us\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/trust/\",\"children\":\"Trust Center\"}]}],[\"$\",\"li\",\"09\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/cookies-policy/\",\"children\":\"Cookie Policy\"}]}]]],[\"$\",\"li\",null,{\"children\":[\"$\",\"button\",null,{\"className\":\"ot-sdk-show-settings\",\"suppressHydrationWarning\":true,\"children\":\"Cookie Settings\"}]}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col md:flex-row items-end justify-between max-w-[1176px] mx-auto py-12 px-[40px] md:px-[16px]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"w-full md:w-auto flex-col\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex space-x-6\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://www.facebook.com/PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on FaceBook\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M240 363.3L240 576L356 576L356 363.3L442.5 363.3L460.5 265.5L356 265.5L356 230.9C356 179.2 376.3 159.4 428.7 159.4C445 159.4 458.1 159.8 465.7 160.6L465.7 71.9C451.4 68 416.4 64 396.2 64C289.3 64 240 114.5 240 223.4L240 265.5L174 265.5L174 363.3L240 363.3z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://x.com/PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on X\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M453.2 112L523.8 112L369.6 288.2L551 528L409 528L297.7 382.6L170.5 528L99.8 528L264.7 339.5L90.8 112L236.4 112L336.9 244.9L453.2 112zM428.4 485.8L467.5 485.8L215.1 152L173.1 152L428.4 485.8z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/pubnub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on LinkedIn\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M196.3 512L103.4 512L103.4 212.9L196.3 212.9L196.3 512zM149.8 172.1C120.1 172.1 96 147.5 96 117.8C96 103.5 101.7 89.9 111.8 79.8C121.9 69.7 135.6 64 149.8 64C164 64 177.7 69.7 187.8 79.8C197.9 89.9 203.6 103.6 203.6 117.8C203.6 147.5 179.5 172.1 149.8 172.1zM543.9 512L451.2 512L451.2 366.4C451.2 331.7 450.5 287.2 402.9 287.2C354.6 287.2 347.2 324.9 347.2 363.9L347.2 512L254.4 512L254.4 212.9L343.5 212.9L343.5 253.7L344.8 253.7C357.2 230.2 387.5 205.4 432.7 205.4C526.7 205.4 544 267.3 544 347.7L544 512L543.9 512z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.youtube.com/c/PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on YouTube\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://vimeo.com/pubnub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on Vimeo\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M543.8 217.6C541.8 261.2 511.4 320.9 452.4 396.7C391.5 475.9 340 515.5 297.8 515.5C271.7 515.5 249.6 491.4 231.5 443.2C196.3 314 181.3 238.3 152.2 238.3C148.8 238.3 137.1 245.4 117 259.4L96 232.2C147.6 186.9 196.9 136.5 227.8 133.7C262.7 130.3 284.1 154.2 292.2 205.2C320.9 386.7 333.6 414.1 385.8 331.9C404.5 302.3 414.6 279.8 416 264.3C420.8 218.4 380.2 221.5 352.7 233.3C374.7 161.2 416.8 126.2 478.9 128.2C524.7 129.4 546.4 159.3 543.8 217.6z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.threads.net/@PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on Threads\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"$20\"}]}]}]]}]}],[\"$\",\"div\",null,{\"className\":\"text-left mt-[30px] md:mt-0 md:text-right md:max-w-[50%] text-[12px] leading-tight\",\"children\":[\"© 2010 - \",2026,\" PubNub Inc. All Rights Reserved. PUBNUB and the PUBNUB logo are trademarks or registered trademarks of PubNub Inc. in the U.S. and other countries.\"]}]]}]]}]]\n"])</script>
2459<script>self.__next_f.push([1,"21:T548,M427.5 299.7C429.7 300.6 431.7 301.6 433.8 302.5C463 316.6 484.4 337.7 495.6 363.9C511.3 400.4 512.8 459.7 465.3 507.1C429.1 543.3 385 559.6 322.7 560.1L322.4 560.1C252.2 559.6 198.3 536 162 489.9C129.7 448.9 113.1 391.8 112.5 320.3L112.5 319.8C113 248.3 129.6 191.2 161.9 150.2C198.2 104.1 252.2 80.5 322.4 80L322.7 80C393 80.5 447.6 104 485 149.9C503.4 172.6 517 199.9 525.6 231.6L485.2 242.4C478.1 216.6 467.4 194.6 453 177C423.8 141.2 380 122.8 322.5 122.4C265.5 122.9 222.4 141.2 194.3 176.8C168.1 210.1 154.5 258.3 154 320C154.5 381.7 168.1 429.9 194.3 463.3C222.3 498.9 265.5 517.2 322.5 517.7C373.9 517.3 407.9 505.1 436.2 476.8C468.5 444.6 467.9 405 457.6 380.9C451.5 366.7 440.5 354.9 425.7 346C422 372.9 413.9 394.3 401 410.8C383.9 432.6 359.6 444.4 328.3 446.1C304.7 447.4 282 441.7 264.4 430.1C243.6 416.3 231.4 395.3 230.1 370.8C227.6 322.5 265.8 287.8 325.3 284.4C346.4 283.2 366.2 284.1 384.5 287.2C382.1 272.4 377.2 260.6 369.9 252C359.9 240.3 344.3 234.3 323.7 234.2L323 234.2C306.4 234.2 284 238.8 269.7 260.5L235.3 236.9C254.5 207.8 285.6 191.8 323.1 191.8L323.9 191.8C386.5 192.2 423.8 231.3 427.6 299.5L427.4 299.7L427.5 299.7zM271.5 368.5C272.8 393.6 299.9 405.3 326.1 403.8C351.7 402.4 380.7 392.4 385.6 330.6C372.4 327.7 357.8 326.2 342.2 326.2C337.4 326.2 332.6 326.3 327.8 326.6C284.9 329 270.6 349.8 271.6 368.4L271.5 368.5z"])</script>
2459<script>self.__next_f.push([1,"17:[[\"$\",\"$L1e\",null,{\"topNavigationData\":[{\"title\":\"Platform\",\"column\":[{\"items\":[{\"highlightLinkLabel\":\"Explore our platform\",\"highlight\":true,\"url\":\"/products/pubnub-platform/\",\"icon\":\"info\",\"description\":\"Your platform for interactive experiences\",\"title\":\"Platform Overview\"},{\"icon\":\"widgets\",\"title\":\"Core Services\",\"description\":\"Real-time communication with low-latency\",\"highlight\":false,\"url\":\"/real-time-messaging-and-events/\"},{\"url\":\"/global-network-infrastructure/\",\"title\":\"Global Network\",\"icon\":\"public\",\"highlight\":false,\"description\":\"Secure, Scalable Infrastructure\"},{\"title\":\"Decision Intelligence - Overview\",\"icon\":\"ads_click\",\"highlight\":false,\"url\":\"/decision-intelligence-software/\",\"description\":\"Power Decisions with Real-Time Intelligence\",\"subItems\":[{\"description\":\"Turn Live User Data into Real-Time Results\",\"url\":\"/illuminate/\",\"icon\":\"lightbulb\",\"title\":\"Illuminate\"},{\"description\":\"Visibility into Real-Time App’s Performance\",\"icon\":\"insights\",\"title\":\"Insights\",\"url\":\"/products/pubnub-insights/\"}]}]},{\"items\":[{\"icon\":\"settings\",\"description\":\"Integrate best-in-class third-party services \",\"highlight\":false,\"url\":\"/integrations/\",\"title\":\"Integrations\"},{\"description\":\"Build AI-native, real-time apps\",\"highlight\":false,\"icon\":\"auto_awesome\",\"title\":\"Generative AI\",\"url\":\"/ai/generative-ai/\"},{\"url\":\"/networking-mcp-server/\",\"icon\":\"storage\",\"description\":\"Unlock real-time code with your AI\",\"title\":\"MCP Server\",\"highlight\":false},{\"icon\":\"\",\"title\":\" Blocks.ai\",\"highlight\":false,\"description\":\"The control plane and networking layer for AI agents\",\"url\":\"https://blocks.ai/\",\"customIconUrl\":\"https://cdn.builder.io/api/v1/image/assets%2F0ee4d50ccdc943eda308d1099e2b1915%2Fbe6afb232f174eadb71b2106718f3c6a\"}]}]},{\"column\":[{\"items\":[{\"subItems\":[],\"icon\":\"forum\",\"url\":\"/solutions/chat/\",\"title\":\"Chat\",\"description\":\"Provide chat experiences your users need\"},{\"url\":\"/solutions/live-audience-engagement/\",\"description\":\"From live events to social workouts\",\"title\":\"Live Audience Engagement\",\"icon\":\"celebration\"},{\"url\":\"/solutions/collaboration-software/\",\"icon\":\"groups\",\"description\":\"Bring the team together\",\"title\":\"Multi-User Collaboration\",\"subItems\":[]},{\"description\":\"Build an IoT platform \u0026 manage devices\",\"title\":\"IoT Device Control\",\"icon\":\"settings_remote\",\"url\":\"/solutions/iot-device-control/\",\"subItems\":[]},{\"subItems\":[],\"url\":\"/solutions/data-streaming/\",\"description\":\"Stream Data. Orchestrate Actions\",\"title\":\"Real-Time Workflows\",\"icon\":\"smart_display\"},{\"subItems\":[],\"icon\":\"location_on\",\"title\":\"Geolocation \u0026 Dispatch\",\"description\":\"Geolocation APIs to track your fleet’s cars\",\"url\":\"/solutions/geolocation/\"}],\"groupName\":\"By Use Case\"},{\"items\":[{\"description\":\"Never worry about latency issues again\",\"icon\":\"share\",\"url\":\"/solutions/edge-messaging/\",\"title\":\"Edge Messaging\"},{\"icon\":\"rocket_launch\",\"url\":\"/event-driven-architecture/\",\"title\":\"Event-Driven Architecture\",\"description\":\"Launch faster with Events, not endpoints\"},{\"url\":\"/liveops-cloud-platform/\",\"description\":\"Real-time decisions, zero lag\",\"icon\":\"tips_and_updates\",\"title\":\"LiveOps\"},{\"url\":\"/solutions/gamification/\",\"title\":\"Gamification\",\"description\":\"Drive engagement in real time\",\"icon\":\"toys\"},{\"description\":\"AI-powered message filtering\",\"title\":\"Auto-Moderation\",\"url\":\"/solutions/ai-moderation/\",\"icon\":\"auto_awesome\"},{\"icon\":\"moving\",\"title\":\"App Optimization\",\"description\":\"Maximize Efficiency – Made Easy\",\"url\":\"/solutions/app-optimization/\"}],\"groupName\":\"By Use Case\"},{\"items\":[{\"title\":\"Sports, Media \u0026 Entertainment\",\"icon\":\"play_circle\",\"url\":\"/solutions/sports-media/\"},{\"icon\":\"monitor_heart\",\"title\":\"Digital Healthcare\",\"url\":\"/solutions/digital-health/\"},{\"title\":\"iGaming, Betting \u0026 Casino\",\"url\":\"/solutions/igaming-betting-casino/\",\"icon\":\"monetization_on\"}
2459,{\"url\":\"/solutions/gaming/\",\"title\":\"Gaming\",\"icon\":\"sports_esports\"},{\"title\":\"eCommerce\",\"icon\":\"shopping_bag\",\"url\":\"/solutions/ecommerce/\"},{\"title\":\"FinTech\",\"url\":\"/solutions/fintech/\",\"icon\":\"memory\"},{\"title\":\"Transport, Delivery \u0026 Logistics\",\"url\":\"/solutions/transport-delivery/\",\"icon\":\"local_shipping\"},{\"title\":\"Call Centers \u0026 Customer Care\",\"url\":\"/solutions/call-center-automation/\",\"icon\":\"support_agent\"},{\"icon\":\"groups\",\"url\":\"/solutions/social/\",\"title\":\"Social \u0026 Lifestyle\"},{\"title\":\"Enterprise SaaS\",\"icon\":\"cloud\",\"url\":\"/solutions/enterprise/\"}],\"groupName\":\"By Industry\"}],\"title\":\"Solutions\"},{\"title\":\"Pricing\",\"trackingId\":\"top-navigation:pricing\",\"url\":\"/pricing/\"},{\"title\":\"Developer\",\"column\":[{\"items\":[{\"icon\":\"code\",\"title\":\"Developer Home\",\"url\":\"/developers/\"},{\"title\":\"Documentation\",\"icon\":\"description\",\"url\":\"/docs\"},{\"url\":\"/docs/sdks\",\"title\":\"SDKs\",\"icon\":\"build\"},{\"title\":\"Tutorials\",\"url\":\"/tutorials/\",\"urlsIncluded\":[{\"urlPart\":\"/tutorials/*\"}],\"icon\":\"play_circle\"},{\"title\":\"Tour\",\"icon\":\"book\",\"url\":\"/tour/introduction/\",\"urlsIncluded\":[{\"urlPart\":\"/tour/*\"}]},{\"title\":\"Network\",\"icon\":\"public\",\"url\":\"https://status.pubnub.com/\"}],\"url\":\"\"}],\"url\":\"\"},{\"title\":\"Resources\",\"column\":[{\"items\":[{\"icon\":\"emoji_events\",\"title\":\"Why PubNub Wins\",\"url\":\"/compare/\"},{\"title\":\"Blog\",\"icon\":\"forum\",\"urlsIncluded\":[{\"urlPart\":\"/guides/*\"},{\"urlPart\":\"/how-to/*\"},{\"urlPart\":\"/blog/*\"}],\"url\":\"/blog/\"},{\"icon\":\"play_circle\",\"urlsIncluded\":[{\"urlPart\":\"/demos/*\"}],\"title\":\"Demos\",\"url\":\"/demos/\"},{\"title\":\"Customers\",\"url\":\"/customers/\",\"urlsIncluded\":[{\"urlPart\":\"/customers/*\"}],\"icon\":\"people\"},{\"icon\":\"book\",\"url\":\"/ebook/\",\"title\":\"eBooks\",\"urlsIncluded\":[{\"urlPart\":\"/ebook/*\"}]},{\"icon\":\"star_outline\",\"title\":\"Careers\",\"url\":\"/company/careers/\"},{\"title\":\"About Us\",\"icon\":\"info\",\"url\":\"/company/\"}]}]}],\"style\":\"\",\"banner\":{\"additionalLinks\":[],\"badgeText\":\"Introducing Blocks.ai\",\"description\":\"The control plane and networking layer for AI agents. \",\"url\":\"https://blocks.ai/\"},\"logoUrl\":\"/\"}],[\"$\",\"main\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-[1176px] mx-auto px-[16px] xl:px-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-col md:flex-row justify-between my-[100px] lg:my-[200px]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-neutral-700 pr-[36px] pb-[36px]\",\"children\":[[\"$\",\"h1\",null,{\"id\":\"404-error\",\"className\":\"text-[18px] font-[700] leading-[28px] tracking-normal text-red-600 uppercase\",\"style\":\"$undefined\",\"children\":\"404 error\"}],[\"$\",\"h2\",null,{\"id\":\"oops-the-page-youre-looking-for-wasnt-found\",\"className\":\"text-[30px] font-[800] leading-[36px] tracking-[-0.75px] lg:text-[36px] lg:leading-[40px] lg:tracking-[-0.9px] text-neutral-900 mb-[24px]\",\"style\":\"$undefined\",\"children\":\"Oops! The page you're looking for wasn't found.\"}],[\"$\",\"p\",null,{\"className\":\"mb-[24px]\",\"children\":\"But we dug deep into our archives to bring you this video of our Co-Founder Stephen having a dance-off with the internet to enjoy instead!\"}],[\"$\",\"p\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"className\":\"text-neutral-900\",\"children\":\"Homepage →\"}],[\"$\",\"br\",null,{}],[\"$\",\"a\",null,{\"href\":\"/products/pubnub-platform/\",\"className\":\"text-neutral-900\",\"children\":\"Platform overview page →\"}],[\"$\",\"br\",null,{}],[\"$\",\"a\",null,{\"href\":\"/blog/\",\"className\":\"text-neutral-900\",\"children\":\"Blog page →\"}]]}]]}],[\"$\",\"iframe\",null,{\"className\":\"aspect-video max-w-[520px]\",\"src\":\"https://www.youtube.com/embed/IfUyMKaGo4E?controls=0\u0026autoplay=1\u0026mute=1\u0026playsinline=1\u0026playlist=IfUyMKaGo4E\u0026loop=1\"}]]}]}]}],[\"$\",\"footer\",null,{\"className\":\"footer\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-columns px-[40px] grid grid-cols-1 md:grid-cols-3 lg:flex items-start justify-between max-w-[1176px] mx-auto py-12 md:px-[16px]\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Platform\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/products/pubnub-platform/\",\"children\":\"Overview\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/real-time-messaging-and-events/\",\"children\":\"Core Services\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/decision-intelligence-software/\",\"children\":\"Decision Intelligence\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/global-network-infrastru
2459cture/\",\"children\":\"Global Network\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/integrations/\",\"children\":\"Integrations\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/ai/generative-ai/\",\"children\":\"Generative AI\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/networking-mcp-server/\",\"children\":\"AI MCP Server\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://www.pubnub.com/products/pubnub-platform/#security\",\"children\":\"Security \u0026 Compliance\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/pricing/\",\"children\":\"Pricing\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Use Case\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/chat/\",\"children\":\"Chat\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/live-audience-engagement/\",\"children\":\"Live Audience Engagement\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/collaboration-software/\",\"children\":\"Multi-User Collaboration\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/iot-device-control/\",\"children\":\"IoT Device Control\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/data-streaming/\",\"children\":\"Real-Time Workflows\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/geolocation/\",\"children\":\"Geolocation \u0026 Dispatch\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/edge-messaging/\",\"children\":\"Edge Messaging\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/event-driven-architecture/\",\"children\":\"Event Driven Architecture\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/liveops-cloud-platform/\",\"children\":\"LiveOps\"}]}],[\"$\",\"li\",\"09\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/gamification/\",\"children\":\"Gamification\"}]}],[\"$\",\"li\",\"010\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/ai-moderation/\",\"children\":\"Auto-Moderation\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Industry\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/sports-media/\",\"children\":\"Sports, Media \u0026 Entertainment\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/digital-health/\",\"children\":\"Digital Healthcare\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/igaming-betting-casino/\",\"children\":\"iGaming, Betting \u0026 Casino\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/gaming/\",\"children\":\"Gaming\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/enterprise/\",\"children\":\"Enterprise SaaS\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/transport-delivery/\",\"children\":\"Transport, Delivery \u0026 Logistics\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/ecommerce/\",\"children\":\"eCommerce\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/alerts-and-push-notifications/\",\"children\":\"Push Notifications\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/call-center-automation/\",\"children\":\"Call Centers \u0026 Customer Care\"}]}],[\"$\",\"li\",\"09\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/social/\",\"children\":\"Social \u0026 Lifestyle\"}]}],[\"$\",\"li\",\"010\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/solutions/fintech/\",\"children\":\"FinTech\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/\",\"children\":\"Blog\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/customers/\",\"children\":\"Customers\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/demos/\",\"children\":\"Demos\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/tutorials/\",\"children\":\"Tutorials\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/resources/?sortBy=Most%20recent\u0026categories=eBook\",\"children\":\"eBook\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/learn/glossary/\",\"children\":\"Glossary\"}]}]]],false]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"children\":\"About\"}],[\"$\",\"ul\",null,{\"children\":[[[[\"$\",\"li\",\"00\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/company/\",\"children\":\"Our Company\"}]}],[\"$\",\"li\",\"01\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/company/careers/\",\"children\":\"Careers\"}]}],[\"$\",\"li\",\"02\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://support.pubnub.com/hc/en-us\",\"children\":\"Supp
2459ort\"}]}],[\"$\",\"li\",\"03\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/partners/\",\"children\":\"Partners\"}]}],[\"$\",\"li\",\"04\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/trust/legal/privacy-policy/\",\"children\":\"Privacy Policy\"}]}],[\"$\",\"li\",\"05\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/trust/legal/terms-and-conditions/\",\"children\":\"Terms and Conditions\"}]}],[\"$\",\"li\",\"06\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/bug-bounty-policy/\",\"children\":\"Bug Bounty Policy\"}]}],[\"$\",\"li\",\"07\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/company/contact-us/\",\"children\":\"Contact Us\"}]}],[\"$\",\"li\",\"08\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/trust/\",\"children\":\"Trust Center\"}]}],[\"$\",\"li\",\"09\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/cookies-policy/\",\"children\":\"Cookie Policy\"}]}]]],[\"$\",\"li\",null,{\"children\":[\"$\",\"button\",null,{\"className\":\"ot-sdk-show-settings\",\"suppressHydrationWarning\":true,\"children\":\"Cookie Settings\"}]}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col md:flex-row items-end justify-between max-w-[1176px] mx-auto py-12 px-[40px] md:px-[16px]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"w-full md:w-auto flex-col\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex space-x-6\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://www.facebook.com/PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on FaceBook\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M240 363.3L240 576L356 576L356 363.3L442.5 363.3L460.5 265.5L356 265.5L356 230.9C356 179.2 376.3 159.4 428.7 159.4C445 159.4 458.1 159.8 465.7 160.6L465.7 71.9C451.4 68 416.4 64 396.2 64C289.3 64 240 114.5 240 223.4L240 265.5L174 265.5L174 363.3L240 363.3z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://x.com/PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on X\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M453.2 112L523.8 112L369.6 288.2L551 528L409 528L297.7 382.6L170.5 528L99.8 528L264.7 339.5L90.8 112L236.4 112L336.9 244.9L453.2 112zM428.4 485.8L467.5 485.8L215.1 152L173.1 152L428.4 485.8z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/pubnub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on LinkedIn\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M196.3 512L103.4 512L103.4 212.9L196.3 212.9L196.3 512zM149.8 172.1C120.1 172.1 96 147.5 96 117.8C96 103.5 101.7 89.9 111.8 79.8C121.9 69.7 135.6 64 149.8 64C164 64 177.7 69.7 187.8 79.8C197.9 89.9 203.6 103.6 203.6 117.8C203.6 147.5 179.5 172.1 149.8 172.1zM543.9 512L451.2 512L451.2 366.4C451.2 331.7 450.5 287.2 402.9 287.2C354.6 287.2 347.2 324.9 347.2 363.9L347.2 512L254.4 512L254.4 212.9L343.5 212.9L343.5 253.7L344.8 253.7C357.2 230.2 387.5 205.4 432.7 205.4C526.7 205.4 544 267.3 544 347.7L544 512L543.9 512z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.youtube.com/c/PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on YouTube\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://vimeo.com/pubnub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on Vimeo\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"M543.8 217.6C541.8 261.2 511.4 320.9 452.4 396.7C391.5 475.9 340 515.5 297.8 515.5C271.7 515.5 249.6 491.4 231.5 443.2C196.3 314 181.3 238.3 152.2 238.3C148.8 238.3 137.1 245.4 117 259.4L96 232.2C147.6 186.9 196.9 136.5 227.8 133.7C262.7 130.3 284.1 154.2 292.2 205.2C320.9 386.7 333.6 414.1 385.8 331.9C404.5 302.3 414.6 279.8 416 264.3C420.8 218.4 380.2 221.5 352.7 233.3C374.7 161.2 416.8 126.2 478.9 128.2C524.7 129.4 546.4 159.3 543.8 217.6z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.threads.net/@PubNub\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Follow PubNub on Threads\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 640 640\",\"className\":\"w-[24px] h-[24px]\",\"children\":[\"$\",\"path\",null,{\"d\":\"$21\"}]}]}]]}]}],[\"$\",\"div\",null,{\"className\":\"text-left mt-[30px] md:mt-0 md:text-right md:max-w-[50%] text-[12px] leading-tight\",\"children\":[\"© 2010 - \",2026,\" PubNub Inc. All Rights Reserved. PUBNUB and the PUBNUB logo are trademarks or registered trademarks of PubNub Inc. in the U.S. and other countries.\"]}]]}]]}]]\n"])</script>
2459</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.