1<!DOCTYPE html><html lang="en" class="inter_d4b5abb6-module__B5KBgq__variable" data-scroll-behavior="smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/inter_latin_400_normal-s.p.0vig85~_2mxl3.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/inter_latin_500_normal-s.p.0frew35n-hgkk.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/inter_latin_600_normal-s.p.0rm8x4lrq0d8z.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/inter_latin_700_normal-s.p.17~mssnzv.d-8.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/logo-lockup-notagline.svg"/><link rel="stylesheet" href="/_next/static/chunks/0tnthr7sm3wp9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0.3xc-w3pom1m.js"/>
1<script src="/_next/static/chunks/0-g9v8lu426rl.js" async=""></script>
1<script src="/_next/static/chunks/0z-tpl9x-9dsb.js" async=""></script>
1<script src="/_next/static/chunks/0xiyqu73qsaaf.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-0kd.0m0kz2coh.js" async=""></script>
1<script src="/_next/static/chunks/11q-3mtsn6em~.js" async=""></script>
1<script src="/_next/static/chunks/0enf2~-en9~u8.js" async=""></script>
1<script src="/_next/static/chunks/0kt8zvevh9hby.js" async=""></script>
1<script src="/_next/static/chunks/0rjpt-vo~urla.js" async=""></script>
1<script src="/_next/static/chunks/0q3vovz3w~di_.js" async=""></script>
1<script src="/_next/static/chunks/0t8cdexyqfjyl.js" async=""></script>
1<meta name="next-size-adjust" content=""/><title>How it works · AppAudit</title><meta name="description" content="How AppAudit runs a local-first Workload Unit audit on your Bubble app â Web Worker, deterministic rules engine, no backend."/><meta name="application-name" content="AppAudit"/><meta name="robots" content="index, follow"/><link rel="canonical" href="https://getappaudit.com/how-it-works"/><meta property="og:title" content="AppAudit â Find the patterns inflating your Bubble bill"/><meta property="og:description" content="A local-first Chrome extension that scans your Bubble app and surfaces the patterns inflating your Workload Unit bill. Runs entirely in your browser â no AI, no backend, your app never leaves the page."/><meta property="og:url" content="https://getappaudit.com"/><meta property="og:site_name" content="AppAudit"/><meta property="og:image" content="https://getappaudit.com/og-image.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="AppAudit"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="AppAudit â Find the patterns inflating your Bubble bill"/><meta name="twitter:description" content="A local-first Chrome extension that scans your Bubble app and surfaces the patterns inflating your Workload Unit bill. Runs entirely in your browser â no AI, no backend, your app never leaves the page."/><meta name="twitter:image" content="https://getappaudit.com/og-image.png"/><link rel="icon" href="/favicon.ico" sizes="32x32"/><link rel="icon" href="/icons/icon-32.png" type="image/png" sizes="32x32"/><link rel="icon" href="/icons/icon-128.png" type="image/png" sizes="128x128"/><link rel="apple-touch-icon" href="/icons/icon-256.png"/>
1<script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script>
1</head><body><div hidden=""><!--$--><!--/$--></div>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"AppAudit","description":"A local-first Chrome extension that scans your Bubble app and surfaces the patterns inflating your Workload Unit bill. Runs entirely in your browser â no AI, no backend, your app never leaves the page.","url":"https://getappaudit.com","applicationCategory":"DeveloperApplication","operatingSystem":"Chrome","offers":[{"@type":"Offer","name":"Solo","price":"19","priceCurrency":"USD","priceSpecification":{"@type":"UnitPriceSpecification","price":"19","priceCurrency":"USD","referenceQuantity":{"@type":"QuantitativeValue","value":1,"unitCode":"MON"}}},{"@type":"Offer","name":"Agency","price":"49","priceCurrency":"USD","priceSpecification":{"@type":"UnitPriceSpecification","price":"49","priceCurrency":"USD","referenceQuantity":{"@type":"QuantitativeValue","value":1,"unitCode":"MON"}}}]}</script>
1<a href="#main-content" class="sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-50 focus:rounded-[var(--radius-btn)] focus:bg-[var(--color-indigo)] focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-white focus:outline-none focus:ring-2 focus:ring-[var(--color-indigo)] focus:ring-offset-2">Skip to content</a><header class="sticky top-0 z-40 w-full border-b transition-[background-color,backdrop-filter,box-shadow,border-color] duration-200 bg-transparent border-black/[0.08]"><div class="mx-auto flex max-w-6xl items-center justify-between px-4 py-3 md:px-6"><a aria-label="AppAudit home" class="rounded-[var(--radius-btn)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2" href="/"><img alt="AppAudit" draggable="false" width="133" height="32" decoding="async" data-nimg="1" class="w-auto select-none h-8" style="color:transparent" src="/logo-lockup-notagline.svg"/></a><nav aria-label="Primary" class="hidden items-center gap-6 md:flex"><a class="text-sm font-medium text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/how-it-works">How it works</a><a class="text-sm font-medium text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/pricing">Pricing</a><a href="https://chromewebstore.google.com/detail/appaudit-%E2%80%94-for-bubble/ehakfpjcmkifiefpcikhcdlieampelll" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center gap-2 font-medium rounded-[var(--radius-cta)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-[var(--color-indigo)] text-white hover:bg-[var(--color-indigo-hover)] h-11 px-5 text-sm"><img alt="" aria-hidden="true" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="mr-1" style="color:transparent" src="/chrome-logo.svg"/>Install for Chrome</a></nav><button type="button" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-nav" class="inline-flex h-10 w-10 items-center justify-center rounded-[var(--radius-btn)] text-[var(--color-slate-900)] hover:bg-slate-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 md:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div><div id="mobile-nav" class="md:hidden border-t border-black/[0.08] bg-white hidden"><nav aria-label="Primary mobile" class="mx-auto flex max-w-6xl flex-col gap-1 px-4 py-3"><a class="rounded-[var(--radius-btn)] px-2 py-2 text-base font-medium text-[var(--color-slate-900)] hover:bg-slate-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2" href="/how-it-works">How it works</a><a class="rounded-[var(--radius-btn)] px-2 py-2 text-base font-medium text-[var(--color-slate-900)] hover:bg-slate-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2" href="/pricing">Pricing</a><a href="https://chromewebstore.google.com/detail/appaudit-%E2%80%94-for-bubble/ehakfpjcmkifiefpcikhcdlieampelll" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center gap-2 font-medium rounded-[var(--radius-cta)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-[var(--color-indigo)] text-white hover:bg-[var(--color-indigo-hover)] h-11 px-5 text-sm mt-2 w-full"><img alt="" aria-hidden="true" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="mr-1" style="color:transparent" src="/chrome-logo.svg"/>Install for Chrome</a></nav></div></header><main id="main-content"><div class="mx-auto max-w-5xl px-4 py-12 md:px-6 md:py-20"><header class="mx-auto max-w-3xl text-center"><h1 class="text-3xl font-semibold tracking-tight text-[var(--color-slate-900)] md:text-5xl">How <span class="text-[var(--color-indigo)]">AppAudit</span> works.</h1><p class="mt-3 text-[var(--color-slate-500)]">The audit runs in your browser. No backend, no queue, no upload of your app data.</p></header><ol class="mt-10 space-y-10">
1<li id="install" class="scroll-mt-20"><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 grid items-center gap-6 md:grid-cols-2 md:gap-10"><div class=""><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white">1</span></div><h2 class="mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl"><span class="text-[var(--color-indigo)]">Install</span> the extension from the Chrome Web Store</h2><p class="mt-2 text-[var(--color-slate-500)] leading-relaxed">AppAudit installs as a standard Chrome extension. No account, no sign-in required to start.</p><div class="mt-4"><a href="https://chromewebstore.google.com/detail/appaudit-%E2%80%94-for-bubble/ehakfpjcmkifiefpcikhcdlieampelll" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center gap-2 font-medium rounded-[var(--radius-cta)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-[var(--color-indigo)] text-white hover:bg-[var(--color-indigo-hover)] h-11 px-5 text-sm"><img alt="" aria-hidden="true" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="mr-1" style="color:transparent" src="/chrome-logo.svg"/>Install for Chrome</a></div><div class="mt-6 rounded-[var(--radius-cta)] bg-slate-50 p-4 ring-1 ring-black/[0.06]"><p class="text-sm font-medium text-[var(--color-slate-900)]">Works on every Chromium browser</p><p class="mt-1 text-xs text-[var(--color-slate-500)]">Install once from the Chrome Web Store â runs on Chrome, Edge, Brave, and Arc.</p><ul class="mt-3 flex flex-wrap items-center gap-6"><li class="flex items-center gap-2"><img alt="Chrome browser" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="h-8 w-8" style="color:transparent" src="/browsers/chrome.svg"/><span class="sr-only">Chrome</span></li><li class="flex items-center gap-2"><img alt="Edge browser" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="h-8 w-8" style="color:transparent" src="/browsers/edge.svg"/><span class="sr-only">Edge</span></li><li class="flex items-center gap-2"><img alt="Brave browser" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="h-8 w-8" style="color:transparent" src="/browsers/brave.svg"/><span class="sr-only">Brave</span></li><li class="flex items-center gap-2"><img alt="Arc browser" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="h-8 w-8" style="color:transparent" src="/browsers/arc.svg"/><span class="sr-only">Arc</span></li></ul><p class="mt-3 text-xs text-[var(--color-slate-400)]">Firefox and Safari support coming later.</p></div></div><div class="aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 "><video src="/screenshots/step-1.mp4" poster="/screenshots/step-1-poster.jpg" muted="" loop="" playsInline="" preload="none" aria-label="Preview: Chrome Web Store listing with Install button" class="h-full w-full rounded-[inherit] object-cover"></video></div></div></li><li class="scroll-mt-20"><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 grid items-center gap-6 md:grid-cols-2 md:gap-10"><div class="md:order-2"><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white">2</span></div><h2 class="mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl">Open your <span class="text-[var(--color-indigo)]">Bubble.io editor</span></h2><p class="mt-2 text-[var(--color-slate-500)] leading-relaxed">Navigate to the app you want to audit. AppAudit detects the Bubble editor automatically and injects a floating Audit button.</p></div><div class="aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 md:order-1"><video src="/screenshots/step-2.mp4" poster="/screenshots/step-2-poster.jpg" muted="" loop="" playsInl
1ine="" preload="none" aria-label="Preview: Bubble editor with a project open" class="h-full w-full rounded-[inherit] object-cover"></video></div></div></li><li class="scroll-mt-20"><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 grid items-center gap-6 md:grid-cols-2 md:gap-10"><div class=""><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white">3</span></div><h2 class="mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl">Click <span class="text-[var(--color-indigo)]">âAudit my appâ</span></h2><p class="mt-2 text-[var(--color-slate-500)] leading-relaxed">Launch from either the floating button injected into the editor or the AppAudit popup in your Chrome toolbar.</p></div><div class="aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 "><video src="/screenshots/step-3.mp4" poster="/screenshots/step-3-poster.jpg" muted="" loop="" playsInline="" preload="none" aria-label="Preview: Floating Audit button overlay on the Bubble editor" class="h-full w-full rounded-[inherit] object-cover"></video></div></div></li><li class="scroll-mt-20"><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 grid items-center gap-6 md:grid-cols-2 md:gap-10"><div class="md:order-2"><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white">4</span></div><h2 class="mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl">Sanitize and analyze, <span class="text-[var(--color-indigo)]">locally</span></h2><p class="mt-2 text-[var(--color-slate-500)] leading-relaxed">AppAudit walks your app structure in-page, redacts known secret patterns in your browser, and runs a deterministic TypeScript rules engine in a Web Worker. Nothing is uploaded.</p></div><div class="aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 md:order-1"><video src="/screenshots/step-4.mp4" poster="/screenshots/step-4-poster.jpg" muted="" loop="" playsInline="" preload="none" aria-label="Preview: Audit modal showing local scan progress" class="h-full w-full rounded-[inherit] object-cover"></video></div></div></li><li class="scroll-mt-20"><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 grid items-center gap-6 md:grid-cols-2 md:gap-10"><div class=""><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white">5</span></div><h2 class="mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl">See your <span class="text-[var(--color-indigo)]">findings list</span></h2><p class="mt-2 text-[var(--color-slate-500)] leading-relaxed">Each finding names the element, the page it lives on, a relative severity, and an actionable fix. Free preview shows the top 5 findings and a summary.</p></div><div class="aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 "><video src="/screenshots/step-5.mp4" poster="/screenshots/step-5-poster.jpg" muted="" loop="" playsInline="" preload="none" aria-label="Preview: Findings list with severity chips and fix snippets" class="h-full w-full rounded-[inherit] object-cover"></video></div></div></li><li class="scroll-mt-20"><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 grid items-center gap-6 md:grid-cols-2 md:gap-10"><div class="md:order-2"><div class="flex items-center gap-3"><span class="inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white">6</span></div><h2 class="mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl">Subscribe and <span class="text-[var(--color-indigo)]">re-audit anytime</span></h2><p class="mt-2 text-[var(--color-slate-500)] leading-relaxed">Pick a tier inside the extension to unlock the full findings list and fixes. Re-audits stay free while your subscription is active.</p></div><div class="aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 md:order-1"><video src="/screenshots/step-6.mp4" poster="/screenshots/step-6-poster.jpg" muted="" loop="" playsInl
1ine="" preload="none" aria-label="Preview: Tier picker inside the extension" class="h-full w-full rounded-[inherit] object-cover"></video></div></div></li></ol><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 mt-16"><section class="rounded-[var(--radius-cta)] bg-slate-50 p-8 md:p-10" aria-labelledby="security-heading"><h2 id="security-heading" class="text-2xl font-semibold tracking-tight text-[var(--color-slate-900)]">Your app data never leaves your<!-- --> <span class="text-[var(--color-indigo)]">browser</span>.</h2><p class="mt-3 text-[var(--color-slate-500)] leading-relaxed">AppAudit captures your Bubble app's in-memory structure, redacts known secret patterns (Stripe keys, JWTs, bearer tokens, AWS keys, GitHub PATs, Slack tokens, generic high-entropy strings) right in your browser, and runs the checks in a Web Worker. There is no backend to upload to, no AI provider in the loop, and no telemetry. The audit you see is computed on your machine.</p></section></div><div style="transition-delay:0ms" class="transition-all duration-[450ms] ease-out opacity-0 translate-y-2 mx-auto mt-12 max-w-3xl"><section aria-labelledby="how-faq-heading"><h2 id="how-faq-heading" class="text-2xl font-semibold tracking-tight text-[var(--color-slate-900)] md:text-3xl">Common <span class="text-[var(--color-indigo)]">technical questions</span></h2><div class="mt-6 w-full" data-orientation="vertical"><div data-state="closed" data-orientation="vertical" class="border-b border-black/[0.08]"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-_R_16hbsnqbvb_" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-_R_6hbsnqbvb_" class="flex flex-1 items-center justify-between py-4 text-left text-base font-medium text-[var(--color-slate-900)] transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 [&[data-state=open]>svg]:rotate-180" data-radix-collection-item="">What data leaves my browser?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 shrink-0 text-[var(--color-slate-500)] transition-transform duration-200"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-_R_16hbsnqbvb_" hidden="" role="region" aria-labelledby="radix-_R_6hbsnqbvb_" data-orientation="vertical" class="overflow-hidden text-sm text-[var(--color-slate-500)] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div><div data-state="closed" data-orientation="vertical" class="border-b border-black/[0.08]"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-_R_1ahbsnqbvb_" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-_R_ahbsnqbvb_" class="flex flex-1 items-center justify-between py-4 text-left text-base font-medium text-[var(--color-slate-900)] transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 [&[data-state=open]>svg]:rotate-180" data-radix-collection-item="">Does AppAudit work on private apps?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 shrink-0 text-[var(--color-slate-500)] transition-transform duration-200"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-_R_1ahbsnqbvb_" hidden="" role="region" aria-labelledby="radix-_R_ahbsnqbvb_" data-orientation="vertical" class="overflow-hidden text-sm text-[var(--color-slate-500)] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div><div data-state="closed" data-orientation="vertical" class="border-b border-black/[0.08]"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-_R_1ehbsnqbvb_" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-_R_ehbsnqbvb_" class="flex flex-1 items-center justify-between py-4 text-left text-base font-medium text-[var(--color-slate-900)] transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 [&[data-state=open]>svg]:rotate-180" data-radix-collection-item="">Will running an audit consume Workload Units?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 shrink-0 text-[var(--color-slate-500)] transition-transform duration-200"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-_R_1ehbsnqbvb_" hidden="" role="region" aria-labelledby="radix-_R_ehbsnqbvb_" data-orientation="vertical" class="overflow-hidden text-sm text-[var(--color-slate-500)] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div><div data-state="closed" data-orientation="vertical" class="border-b border-black/[0.08]"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-_R_1ihbsnqbvb_" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-_R_ihbsnqbvb_" class="flex flex-1 items-center justify-between py-4 text-left text-base font-medium text-[var(--color-slate-900)] transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 [&[data-state=open]>svg]:rotate-180" data-radix-collection-item="">Is there any AI in the audit?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4 shrink-0 text-[var(--color-slate-500)] transition-transform duration-200"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-_R_1ihbsnqbvb_" hidden="" role="region" aria-labelledby="radix-_R_ihbsnqbvb_" data-orientation="vertical" class="overflow-hidden text-sm text-[var(--color-slate-500)] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div></div></section></div></div><!--$--><!--/$--></main><footer class="mt-16 border-t border-slate-200"><div class="mx-auto max-w-6xl px-4 py-8 md:px-6"><div class="grid gap-6 md:grid-cols-[1fr_auto_auto] md:gap-12"><div><a aria-label="AppAudit home" class="inline-block" href="/"><img alt="AppAudit" draggable="false" loading="lazy" width="133" height="32" decoding="async" data-nimg="1" class="w-auto select-none h-8" style="color:transparent" src="/logo-lockup-notagline.svg"/></a><p class="mt-3 max-w-xs text-sm text-[var(--color-slate-500)]">Made with <span aria-hidden="true">â¤ï¸</span><span class="sr-only">love</span> for the Bubble.io community.</p></div><nav aria-label="Product" class="flex flex-col gap-2"><h2 class="text-sm font-semibold text-[var(--color-slate-900)]">Product</h2><a class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/">Home</a><a class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/how-it-works">How it works</a><a class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/pricing">Pricing</a><a href="https://chromewebstore.google.com/detail/appaudit-%E2%80%94-for-bubble/ehakfpjcmkifiefpcikhcdlieampelll" target="_blank" rel="noopener noreferrer" class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm">Install Chrome extension</a></nav><nav aria-label="Legal" class="flex flex-col gap-2"><h2 class="text-sm font-semibold text-[var(--color-slate-900)]">Legal</h2><a class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/privacy">Privacy</a><a class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm" href="/terms">Terms</a><a href="/cdn-cgi/l/email-protection#285b5d5858475a5c684f4d5c495858495d4c415c064b4745" class="inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm">Contact</a></nav></div><div data-orientation="horizontal" role="none" class="shrink-0 bg-black/[0.08] h-px w-full my-6"></div><div class="flex flex-col items-start justify-between gap-3 sm:flex-row sm:items-center"><p class="text-xs text-[var(--color-slate-400)]">© <!-- -->2026<!-- --> <!-- -->AppAudit</p><p class="max-w-xl text-xs italic text-[var(--color-slate-400)] sm:text-right">AppAudit is an independent tool and is not affiliated with, endorsed by, or sponsored by Bubble Group, Inc.</p></div></div></footer>
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1<script src="/_next/static/chunks/0.3xc-w3pom1m.js" id="_R_" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[73484,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\"],\"default\"]\n3:I[99582,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\"],\"default\"]\n4:I[6226,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"\"]\n5:I[98127,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"Image\"]\n6:I[20667,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\"],\"MarketingNav\"]\nd:I[53348,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0t8cdexyqfjyl.js\"],\"default\"]\n:HL[\"/_next/static/chunks/0tnthr7sm3wp9.css\",\"style\"]\n:HL[\"/_next/static/media/inter_latin_400_normal-s.p.0vig85~_2mxl3.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/inter_latin_500_normal-s.p.0frew35n-hgkk.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/inter_latin_600_normal-s.p.0rm8x4lrq0d8z.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/inter_latin_700_normal-s.p.17~mssnzv.d-8.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
1<script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"how-it-works\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(marketing)\",{\"children\":[\"how-it-works\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0tnthr7sm3wp9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/11q-3mtsn6em~.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0enf2~-en9~u8.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"inter_d4b5abb6-module__B5KBgq__variable\",\"data-scroll-behavior\":\"smooth\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareApplication\\\",\\\"name\\\":\\\"AppAudit\\\",\\\"description\\\":\\\"A local-first Chrome extension that scans your Bubble app and surfaces the patterns inflating your Workload Unit bill. Runs entirely in your browser â no AI, no backend, your app never leaves the page.\\\",\\\"url\\\":\\\"https://getappaudit.com\\\",\\\"applicationCategory\\\":\\\"DeveloperApplication\\\",\\\"operatingSystem\\\":\\\"Chrome\\\",\\\"offers\\\":[{\\\"@type\\\":\\\"Offer\\\",\\\"name\\\":\\\"Solo\\\",\\\"price\\\":\\\"19\\\",\\\"priceCurrency\\\":\\\"USD\\\",\\\"priceSpecification\\\":{\\\"@type\\\":\\\"UnitPriceSpecification\\\",\\\"price\\\":\\\"19\\\",\\\"priceCurrency\\\":\\\"USD\\\",\\\"referenceQuantity\\\":{\\\"@type\\\":\\\"QuantitativeValue\\\",\\\"value\\\":1,\\\"unitCode\\\":\\\"MON\\\"}}},{\\\"@type\\\":\\\"Offer\\\",\\\"name\\\":\\\"Agency\\\",\\\"price\\\":\\\"49\\\",\\\"priceCurrency\\\":\\\"USD\\\",\\\"priceSpecification\\\":{\\\"@type\\\":\\\"UnitPriceSpecification\\\",\\\"price\\\":\\\"49\\\",\\\"priceCurrency\\\":\\\"USD\\\",\\\"referenceQuantity\\\":{\\\"@type\\\":\\\"QuantitativeValue\\\",\\\"value\\\":1,\\\"unitCode\\\":\\\"MON\\\"}}}]}\"}}],[\"$\",\"a\",null,{\"href\":\"#main-content\",\"className\":\"sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-50 focus:rounded-[var(--radius-btn)] focus:bg-[var(--color-indigo)] focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-white focus:outline-none focus:ring-2 focus:ring-[var(--color-indigo)] focus:ring-offset-2\",\"children\":\"Skip to content\"}],[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"id\":\"main-content\",\"className\":\"grid min-h-screen place-items-center px-4 text-center\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex max-w-md flex-col items-center gap-6\",\"children\":[[\"$\",\"$L4\",null,{\"href\":\"/\",\"aria-label\":\"AppAudit home\",\"children\":[\"$\",\"$L5\",null,{\"src\":\"/logo-lockup.svg\",\"alt\":\"AppAudit â Find the patterns inflating your Bubble bill\",\"width\":144,\"height\":36,\"priority\":false,\"draggable\":false,\"className\":\"w-auto select-none h-9\"}]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-3xl font-semibold text-[var(--color-slate-900)]\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)]\",\"children\":\"The page youâre looking for doesnât exist or has moved.\"}]]}],[\"$\",\"$L4\",null,{\"href\":\"/\",\"className\":\"inline-flex items-center justify-center gap-2 font-medium rounded-[var(--radius-cta)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-[var(--color-indigo)] text-white hover:bg-[var(--color-indigo-hover)] h-11 px-5 text-sm\",\"children\":[false,\"Back to home\"]}]]}]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0kt8zvevh9hby.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0rjpt-vo~urla.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[[\"$\",\"$L6\",null,{}],[\"$\",\"main\",null,{\"id\":\"main-content\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"id\":\"main-content\",\"className\":\"grid min-h-screen place-items-center px-4 text-center\",\"children\":\"$L7\"}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],\"$L8\"]]}],{\"children\":[\"$L9\",{\"children\":[\"$La\",{}
1,null,false,null]},null,false,\"$@b\"]},null,false,null]},null,false,null],\"$Lc\",false]],\"m\":\"$undefined\",\"G\":[\"$d\",[\"$Le\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"GRMjAPAlSf35IrgwyIdo6\"}\n"])</script>
1<script>self.__next_f.push([1,"f:I[69035,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\"],\"Separator\"]\n10:I[59095,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"Reveal\"]\n11:I[87027,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"StepVideo\"]\n1c:I[25326,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\"],\"ViewportBoundary\"]\n1e:I[25326,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\"],\"MetadataBoundary\"]\n1f:\"$Sreact.suspense\"\n7:[\"$\",\"div\",null,{\"className\":\"flex max-w-md flex-col items-center gap-6\",\"children\":[[\"$\",\"$L4\",null,{\"href\":\"/\",\"aria-label\":\"AppAudit home\",\"children\":[\"$\",\"$L5\",null,{\"src\":\"/logo-lockup.svg\",\"alt\":\"AppAudit â Find the patterns inflating your Bubble bill\",\"width\":144,\"height\":36,\"priority\":false,\"draggable\":false,\"className\":\"w-auto select-none h-9\"}]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-3xl font-semibold text-[var(--color-slate-900)]\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)]\",\"children\":\"The page youâre looking for doesnât exist or has moved.\"}]]}],[\"$\",\"$L4\",null,{\"href\":\"/\",\"className\":\"inline-flex items-center justify-center gap-2 font-medium rounded-[var(--radius-cta)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-[var(--color-indigo)] text-white hover:bg-[var(--color-indigo-hover)] h-11 px-5 text-sm\",\"children\":[false,\"Back to home\"]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"8:[\"$\",\"footer\",null,{\"className\":\"mt-16 border-t border-slate-200\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-6xl px-4 py-8 md:px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid gap-6 md:grid-cols-[1fr_auto_auto] md:gap-12\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L4\",null,{\"href\":\"/\",\"aria-label\":\"AppAudit home\",\"className\":\"inline-block\",\"children\":[\"$\",\"$L5\",null,{\"src\":\"/logo-lockup-notagline.svg\",\"alt\":\"AppAudit\",\"width\":133,\"height\":32,\"priority\":false,\"draggable\":false,\"className\":\"w-auto select-none h-8\"}]}],[\"$\",\"p\",null,{\"className\":\"mt-3 max-w-xs text-sm text-[var(--color-slate-500)]\",\"children\":[\"Made with \",[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"children\":\"â¤ï¸\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"love\"}],\" for the Bubble.io community.\"]}]]}],[\"$\",\"nav\",null,{\"aria-label\":\"Product\",\"className\":\"flex flex-col gap-2\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-sm font-semibold text-[var(--color-slate-900)]\",\"children\":\"Product\"}],[[\"$\",\"$L4\",\"Home\",{\"href\":\"/\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"Home\"}],[\"$\",\"$L4\",\"How it works\",{\"href\":\"/how-it-works\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"How it works\"}],[\"$\",\"$L4\",\"Pricing\",{\"href\":\"/pricing\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"Pricing\"}],[\"$\",\"a\",\"Install Chrome extension\",{\"href\":\"https://chromewebstore.google.com/detail/appaudit-%E2%80%94-for-bubble/ehakfpjcmkifiefpcikhcdlieampelll\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"Install Chrome extension\"}]]]}],[\"$\",\"nav\",null,{\"aria-label\":\"Legal\",\"className\":\"flex flex-col gap-2\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-sm font-semibold text-[var(--color-slate-900)]\",\"children\":\"Legal\"}],[[\"$\",\"$L4\",\"Privacy\",{\"href\":\"/privacy\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"Privacy\"}],[\"$\",\"$L4\",\"Terms\",{\"href\":\"/terms\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"Terms\"}],[\"$\",\"a\",\"Contact\",{\"href\":\"mailto:[email protected]\",\"target\":\"$undefined\",\"rel\":\"$undefined\",\"className\":\"inline-flex text-sm text-[var(--color-slate-500)] transition-colors hover:text-[var(--color-slate-900)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 rounded-sm\",\"children\":\"Contact\"}]]]}]]}],[\"$\",\"$Lf\",null,{\"className\":\"my-6\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-start justify-between gap-3 sm:flex-row sm:items-center\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-xs text-[var(--color-slate-400)]\",\"children\":[\"© \",2026,\" \",\"AppAudit\"]}],[\"$\",\"p\",null,{\"className\":\"max-w-xl text-xs italic text-[var(--color-slate-400)] sm:text-right\",\"children\":\"AppAudit is an independent tool and is not affiliated with, endorsed by, or sponsored by Bubble Group, Inc.\"}]]}]]}]}]\n"])</script>
1<script>self.__next_f.push([1,"9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script>
1<script>self.__next_f.push([1,"a:[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-5xl px-4 py-12 md:px-6 md:py-20\",\"children\":[[\"$\",\"header\",null,{\"className\":\"mx-auto max-w-3xl text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-3xl font-semibold tracking-tight text-[var(--color-slate-900)] md:text-5xl\",\"children\":[\"How \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"AppAudit\"}],\" works.\"]}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[var(--color-slate-500)]\",\"children\":\"The audit runs in your browser. No backend, no queue, no upload of your app data.\"}]]}],[\"$\",\"ol\",null,{\"className\":\"mt-10 space-y-10\",\"children\":[[\"$\",\"li\",\"0\",{\"id\":\"install\",\"className\":\"scroll-mt-20\",\"children\":[\"$\",\"$L10\",null,{\"className\":\"grid items-center gap-6 md:grid-cols-2 md:gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white\",\"children\":1}]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"Install\"}],\" the extension from the Chrome Web Store\"]}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"AppAudit installs as a standard Chrome extension. No account, no sign-in required to start.\"}],[\"$\",\"div\",null,{\"className\":\"mt-4\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://chromewebstore.google.com/detail/appaudit-%E2%80%94-for-bubble/ehakfpjcmkifiefpcikhcdlieampelll\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"inline-flex items-center justify-center gap-2 font-medium rounded-[var(--radius-cta)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-indigo)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-[var(--color-indigo)] text-white hover:bg-[var(--color-indigo-hover)] h-11 px-5 text-sm\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/chrome-logo.svg\",\"width\":18,\"height\":18,\"alt\":\"\",\"aria-hidden\":\"true\",\"className\":\"mr-1\"}],\"Install for Chrome\"]}]}],[\"$\",\"div\",null,{\"className\":\"mt-6 rounded-[var(--radius-cta)] bg-slate-50 p-4 ring-1 ring-black/[0.06]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-[var(--color-slate-900)]\",\"children\":\"Works on every Chromium browser\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-[var(--color-slate-500)]\",\"children\":\"Install once from the Chrome Web Store â runs on Chrome, Edge, Brave, and Arc.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-3 flex flex-wrap items-center gap-6\",\"children\":[[\"$\",\"li\",\"Chrome\",{\"className\":\"flex items-center gap-2\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/browsers/chrome.svg\",\"alt\":\"Chrome browser\",\"width\":32,\"height\":32,\"className\":\"h-8 w-8\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"Chrome\"}]]}],[\"$\",\"li\",\"Edge\",{\"className\":\"flex items-center gap-2\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/browsers/edge.svg\",\"alt\":\"Edge browser\",\"width\":32,\"height\":32,\"className\":\"h-8 w-8\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"Edge\"}]]}],[\"$\",\"li\",\"Brave\",{\"className\":\"flex items-center gap-2\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/browsers/brave.svg\",\"alt\":\"Brave browser\",\"width\":32,\"height\":32,\"className\":\"h-8 w-8\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"Brave\"}]]}],[\"$\",\"li\",\"Arc\",{\"className\":\"flex items-center gap-2\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/browsers/arc.svg\",\"alt\":\"Arc browser\",\"width\":32,\"height\"
1:32,\"className\":\"h-8 w-8\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"Arc\"}]]}]]}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-xs text-[var(--color-slate-400)]\",\"children\":\"Firefox and Safari support coming later.\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 \",\"children\":[\"$\",\"$L11\",null,{\"src\":\"/screenshots/step-1.mp4\",\"poster\":\"/screenshots/step-1-poster.jpg\",\"title\":\"Chrome Web Store listing with Install button\"}]}]]}]}],\"$L12\",\"$L13\",\"$L14\",\"$L15\",\"$L16\"]}],\"$L17\",\"$L18\"]}],[\"$L19\"],\"$L1a\"]}]\n"])</script>
1<script>self.__next_f.push([1,"1b:[]\nb:\"$W1b\"\nc:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1c\",null,{\"children\":\"$L1d\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1e\",null,{\"children\":[\"$\",\"$1f\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L20\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\ne:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0tnthr7sm3wp9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script>
1<script>self.__next_f.push([1,"21:I[90538,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"Accordion\"]\n22:I[90538,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"AccordionItem\"]\n23:I[90538,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"AccordionTrigger\"]\n24:I[90538,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\",\"/_next/static/chunks/0kt8zvevh9hby.js\",\"/_next/static/chunks/0rjpt-vo~urla.js\",\"/_next/static/chunks/0q3vovz3w~di_.js\"],\"AccordionContent\"]\n25:I[25326,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\"],\"OutletBoundary\"]\n12:[\"$\",\"li\",\"1\",{\"id\":\"$undefined\",\"className\":\"scroll-mt-20\",\"children\":[\"$\",\"$L10\",null,{\"className\":\"grid items-center gap-6 md:grid-cols-2 md:gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"md:order-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white\",\"children\":2}]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl\",\"children\":[\"Open your \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"Bubble.io editor\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"Navigate to the app you want to audit. AppAudit detects the Bubble editor automatically and injects a floating Audit button.\"}],\"$undefined\",\"$undefined\"]}],[\"$\",\"div\",null,{\"className\":\"aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 md:order-1\",\"children\":[\"$\",\"$L11\",null,{\"src\":\"/screenshots/step-2.mp4\",\"poster\":\"/screenshots/step-2-poster.jpg\",\"title\":\"Bubble editor with a project open\"}]}]]}]}]\n13:[\"$\",\"li\",\"2\",{\"id\":\"$undefined\",\"className\":\"scroll-mt-20\",\"children\":[\"$\",\"$L10\",null,{\"className\":\"grid items-center gap-6 md:grid-cols-2 md:gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white\",\"children\":3}]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl\",\"children\":[\"Click \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"âAudit my appâ\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"Launch from either the floating button injected into the editor or the AppAudit popup in your Chrome toolbar.\"}],\"$undefined\",\"$undefined\"]}],[\"$\",\"div\",null,{\"className\":\"aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 \",\"children\":[\"$\",\"$L11\",null,{\"src\":\"/screenshots/step-3.mp4\",\"poster\":\"/screenshots/step-3-poster.jpg\",\"title\":\"Floating Audit button overlay on the Bubble editor\"}]}]]}]}]\n14:[\"$\",\"li\",\"3\",{\"id\":\"$undefined\",\"className\":\"scroll-mt-20\",\"children\":[\"$\",\"$L10\",null,{\"className\":\"grid items-center gap-6 md:grid-cols-2 md:gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"md:order-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white\",\"children\":4}]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:tex"])</script>
1<script>self.__next_f.push([1,"t-2xl\",\"children\":[\"Sanitize and analyze, \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"locally\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"AppAudit walks your app structure in-page, redacts known secret patterns in your browser, and runs a deterministic TypeScript rules engine in a Web Worker. Nothing is uploaded.\"}],\"$undefined\",\"$undefined\"]}],[\"$\",\"div\",null,{\"className\":\"aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 md:order-1\",\"children\":[\"$\",\"$L11\",null,{\"src\":\"/screenshots/step-4.mp4\",\"poster\":\"/screenshots/step-4-poster.jpg\",\"title\":\"Audit modal showing local scan progress\"}]}]]}]}]\n15:[\"$\",\"li\",\"4\",{\"id\":\"$undefined\",\"className\":\"scroll-mt-20\",\"children\":[\"$\",\"$L10\",null,{\"className\":\"grid items-center gap-6 md:grid-cols-2 md:gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white\",\"children\":5}]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl\",\"children\":[\"See your \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"findings list\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"Each finding names the element, the page it lives on, a relative severity, and an actionable fix. Free preview shows the top 5 findings and a summary.\"}],\"$undefined\",\"$undefined\"]}],[\"$\",\"div\",null,{\"className\":\"aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 \",\"children\":[\"$\",\"$L11\",null,{\"src\":\"/screenshots/step-5.mp4\",\"poster\":\"/screenshots/step-5-poster.jpg\",\"title\":\"Findings list with severity chips and fix snippets\"}]}]]}]}]\n16:[\"$\",\"li\",\"5\",{\"id\":\"$undefined\",\"className\":\"scroll-mt-20\",\"children\":[\"$\",\"$L10\",null,{\"className\":\"grid items-center gap-6 md:grid-cols-2 md:gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"md:order-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-8 w-8 items-center justify-center rounded-full bg-[var(--color-indigo)] text-sm font-semibold text-white\",\"children\":6}]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-xl font-semibold text-[var(--color-slate-900)] md:text-2xl\",\"children\":[\"Subscribe and \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"re-audit anytime\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"Pick a tier inside the extension to unlock the full findings list and fixes. Re-audits stay free while your subscription is active.\"}],\"$undefined\",\"$undefined\"]}],[\"$\",\"div\",null,{\"className\":\"aspect-[3/2] w-full max-w-[600px] overflow-hidden rounded-[var(--radius-cta)] bg-slate-100 shadow-lg shadow-indigo-500/15 ring-1 ring-indigo-500/30 md:order-1\",\"children\":[\"$\",\"$L11\",null,{\"src\":\"/screenshots/step-6.mp4\",\"poster\":\"/screenshots/step-6-poster.jpg\",\"title\":\"Tier picker inside the extension\"}]}]]}]}]\n17:[\"$\",\"$L10\",null,{\"className\":\"mt-16\",\"children\":[\"$\",\"section\",null,{\"className\":\"rounded-[var(--radius-cta)] bg-slate-50 p-8 md:p-10\",\"aria-labelledby\":\"security-heading\",\"children\":[[\"$\",\"h2\",null,{\"id\":\"security-heading\",\"className\":\"text-2xl font-semibold tracking-tight text-[var(--color-slate-900)]\",\"children\":[\"Your app data never leaves your\",\" \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"browser\"}],\".\"]}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[var(--color-slate-500)] leading-relaxed\",\"children\":\"AppAudit captures your Bubble app's in-memory structure, redacts known secret patterns (Stripe keys, JWTs, bearer tokens, AWS keys, GitHub PATs, Slack tokens, generic high-entropy strings) right in y
1our brows"])</script>
1<script>self.__next_f.push([1,"er, and runs the checks in a Web Worker. There is no backend to upload to, no AI provider in the loop, and no telemetry. The audit you see is computed on your machine.\"}]]}]}]\n"])</script>
1<script>self.__next_f.push([1,"18:[\"$\",\"$L10\",null,{\"className\":\"mx-auto mt-12 max-w-3xl\",\"children\":[\"$\",\"section\",null,{\"aria-labelledby\":\"how-faq-heading\",\"children\":[[\"$\",\"h2\",null,{\"id\":\"how-faq-heading\",\"className\":\"text-2xl font-semibold tracking-tight text-[var(--color-slate-900)] md:text-3xl\",\"children\":[\"Common \",[\"$\",\"span\",null,{\"className\":\"text-[var(--color-indigo)]\",\"children\":\"technical questions\"}]]}],[\"$\",\"$L21\",null,{\"type\":\"single\",\"collapsible\":true,\"className\":\"mt-6 w-full\",\"children\":[[\"$\",\"$L22\",\"What data leaves my browser?\",{\"value\":\"how-0\",\"children\":[[\"$\",\"$L23\",null,{\"children\":\"What data leaves my browser?\"}],[\"$\",\"$L24\",null,{\"children\":\"Nothing. AppAudit runs the entire audit in your browser â sanitizing, rule evaluation, finding rendering. There is no server to send anything to.\"}]]}],[\"$\",\"$L22\",\"Does AppAudit work on private apps?\",{\"value\":\"how-1\",\"children\":[[\"$\",\"$L23\",null,{\"children\":\"Does AppAudit work on private apps?\"}],[\"$\",\"$L24\",null,{\"children\":\"Yes. AppAudit runs inside your Bubble editor session, so it works on any app you have editor access to â public or private.\"}]]}],[\"$\",\"$L22\",\"Will running an audit consume Workload Units?\",{\"value\":\"how-2\",\"children\":[[\"$\",\"$L23\",null,{\"children\":\"Will running an audit consume Workload Units?\"}],[\"$\",\"$L24\",null,{\"children\":\"No. AppAudit reads the app structure that already lives in your editor â it does not invoke your workflows or run server-side code, so it does not consume Workload Units.\"}]]}],[\"$\",\"$L22\",\"Is there any AI in the audit?\",{\"value\":\"how-3\",\"children\":[[\"$\",\"$L23\",null,{\"children\":\"Is there any AI in the audit?\"}],[\"$\",\"$L24\",null,{\"children\":\"No. The rules engine is a deterministic TypeScript module that runs in a Web Worker. Same input gives you the same findings, every time. No model bills, no model drift.\"}]]}]]}]]}]}]\n"])</script>
1<script>self.__next_f.push([1,"19:[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0q3vovz3w~di_.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n1a:[\"$\",\"$L25\",null,{\"children\":[\"$\",\"$1f\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@26\"}]}]\n"])</script>
1<script>self.__next_f.push([1,"1d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
1<script>self.__next_f.push([1,"27:I[20676,[\"/_next/static/chunks/11q-3mtsn6em~.js\",\"/_next/static/chunks/0enf2~-en9~u8.js\"],\"IconMark\"]\n"])</script>
1<script>self.__next_f.push([1,"20:[[\"$\",\"title\",\"0\",{\"children\":\"How it works · AppAudit\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"How AppAudit runs a local-first Workload Unit audit on your Bubble app â Web Worker, deterministic rules engine, no backend.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"AppAudit\"}],[\"$\",\"meta\",\"3\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://getappaudit.com/how-it-works\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"AppAudit â Find the patterns inflating your Bubble bill\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"A local-first Chrome extension that scans your Bubble app and surfaces the patterns inflating your Workload Unit bill. Runs entirely in your browser â no AI, no backend, your app never leaves the page.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://getappaudit.com\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"AppAudit\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://getappaudit.com/og-image.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"AppAudit\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:title\",\"content\":\"AppAudit â Find the patterns inflating your Bubble bill\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:description\",\"content\":\"A local-first Chrome extension that scans your Bubble app and surfaces the patterns inflating your Workload Unit bill. Runs entirely in your browser â no AI, no backend, your app never leaves the page.\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:image\",\"content\":\"https://getappaudit.com/og-image.png\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"19\",{\"rel\":\"icon\",\"href\":\"/icons/icon-32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/icons/icon-128.png\",\"type\":\"image/png\",\"sizes\":\"128x128\"}],[\"$\",\"link\",\"21\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icons/icon-256.png\"}],[\"$\",\"$L27\",\"22\",{}]]\n"])</script>
1<script>self.__next_f.push([1,"26:null\n"])</script>
1<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"1993068169c140479eed3ea77ade2163","r":1,"spa":2}' crossorigin="anonymous"></script>
1 2</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.