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, & optimize real-time apps at scale | PubNub</title><meta 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 <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("/img/highlightBg.jpg")] 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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"><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:'JetBrains Mono', monospace">dev tools & 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'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:'JetBrains Mono', 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]">"scores"</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:'JetBrains Mono', 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]">"scores"</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 "online" 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:'JetBrains Mono', 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]">'scores'</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:'JetBrains Mono', 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]">'scores'</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 "how many users were live during the match?" 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace"><code><div><span class="text-[rgba(156,164,183,0.82)]">// Before Publish Function on the "scores" 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]">) => {</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]">'HOME'</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 & 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 & 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', sans-serif;font-size:12px;font-weight:600;line-height:1.2;color:#68708B;font-variant-numeric:tabular-nums;white-space:nowrap">23'</span><span style="width:1px"></span><span style="font-family:'Nunito Sans', 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'</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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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:'Nunito Sans', 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('M170,68 V208');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('M170,268 V360 H56 V404');animation-delay:1750ms;animation-duration:1100ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path('M170,268 V360 H128 V404');animation-delay:1840ms;animation-duration:1100ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path('M170,268 V360 H200 V404');animation-delay:1930ms;animation-duration:1100ms"></div><div class="ps-dot ps-dot--small" style="offset-path:path('M188,220 H272 V170');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">></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">'scores'</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">'scores'</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'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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace">01</span><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace">FIRST PUBLISH</span><span class="ml-auto text-[16px] font-[700] text-[#FF7585]" style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & Actions</span><span style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[12px] uppercase tracking-[0.2em] text-[#8a90a8]">CONCURRENT USERS</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[12px] tracking-[0.04em] text-[#6d7390]">operated as one managed network since 2012</div><div style="font-family:'JetBrains Mono', 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 & staff</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & RUN</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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 & RUN</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & RUN</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & RUN</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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:'JetBrains Mono', 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 & RUN</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & RUN</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[12px] font-[600] text-[#f0b23c] [font-variant-numeric:tabular-nums]">6<!-- --> to build & staff</div><div style="font-family:'JetBrains Mono', 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's in PubNub'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't find anywhere else is someone who's been operating real-time at planetary scale for fourteen years, including the live streams that set world records for audience size.<br/>Here'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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[24px] font-[700] text-white sm:min-w-0">1B+</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[24px] font-[700] text-white sm:min-w-0">10,000s</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[24px] font-[700] text-white sm:min-w-0">50+</div><div style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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'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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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'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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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'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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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'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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', Monaco, Menlo, Consolas, monospace" class="text-[14px] text-white/75">channel: <span class="text-[#8FB8FF]">faq.live</span></span><span style="font-family:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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&token=7b08c88f-288a-47a6-b72c-240d000e6730&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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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:'JetBrains Mono', 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 & 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 & 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 & Entertainment</a></li><li><a href="/solutions/digital-health/">Digital Healthcare</a></li><li><a href="/solutions/igaming-betting-casino/">iGaming, Betting & 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 & 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 & Customer Care</a></li><li><a href="/solutions/social/">Social & 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&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.