Build With

Building Chrome Extensions with Bolt.new

Bolt.new is one of the most popular AI builders on the market and for good reason — it's genuinely impressive at scaffolding web apps from a prompt. The question is whether that capability extends cleanly to Chrome extensions, which have a completely different architecture: a manifest file, content scripts, background workers, popup pages, host permissions, and a packaging step that doesn't look like deploying a web app.

We tried it. This is what we found, with no promotional framing — the goal here is to help you make the right call for your use case, not to oversell ours.

What works well with Bolt.new

  • Generating the UI of a popup or options page

    Bolt produces clean, modern React component code for any UI you describe. If your extension's UI is a settings page or a popup with a form, Bolt's frontend skills are real and helpful.

  • Handling generic JavaScript logic

    Pure JS or TypeScript code that doesn't depend on Chrome APIs — formatters, calculators, parsers, data transformations — comes out clean and runs fine.

  • Iterating on copy and styling

    Once the extension structure exists, telling Bolt "make this dark mode" or "rewrite this copy more casually" works fluidly. Bolt's strength is iteration on visible output.

Where Bolt.new gets frustrating

  • Manifest V3 file structure isn't the default

    Bolt defaults to a web app project layout. If you don't prompt it specifically with "create a Manifest V3 Chrome extension folder structure," you'll get a single-page app you can't load into Chrome. Even when you prompt correctly, the manifest.json often has subtle issues — wrong permission scopes, missing host_permissions, incorrect background.service_worker entry — that you have to manually fix before Chrome accepts the extension.

  • Content scripts vs background workers gets confused

    Chrome extensions split execution between content scripts (run inside webpages) and background service workers (run in the extension context). These have different APIs and different message passing. Bolt regularly puts code in the wrong context — calling chrome.tabs.query from a content script (where it doesn't exist), or trying to access the DOM from a background worker (where there is no DOM).

  • The packaging step is unclear

    Bolt produces a project. Chrome needs a specific folder layout that you can either zip and submit to the Web Store, or load as an unpacked extension. Translating from Bolt's output to Chrome's expected layout is a manual step that requires you to know what Chrome expects — which is exactly what no-code users are trying to avoid.

Where Bolt.new breaks down

  • Anything requiring chrome.* APIs

    chrome.storage, chrome.tabs, chrome.scripting, chrome.runtime — these are the core APIs Chrome extensions rely on. Bolt knows them as concepts but consistently writes code that won't actually run because of context errors or missing manifest permissions. Each error is debuggable, but it shifts the work from "describe the extension" back to "debug AI-generated code," which defeats the purpose.

  • Backend integration for extensions

    Bolt has tight Supabase integration for web apps, with an integrated admin dashboard. For Chrome extensions, the integration model is different — the extension runs in the user's browser, makes requests to Supabase, and stores credentials securely. Bolt doesn't handle this distinction well by default; it wires extension-side and backend-side code in ways that work for web apps but break in extension contexts.

Worked example

We tried building: A simple Chrome extension that summarizes the current YouTube video using OpenAI

The prompt
Build a Chrome extension that adds a "Summarize" button under every YouTube video player. When clicked, it should fetch the video transcript, send it to OpenAI GPT-4, and display a 3-bullet summary in a popup. Use Manifest V3. Bring-your-own OpenAI API key, stored in chrome.storage.

Bolt generated a project in about 40 seconds. The output included a React app, a settings page, a service worker file, and a manifest.json.

Three things were immediately wrong: the manifest.json had no host_permissions for openai.com (the API call would have been blocked by CSP), the content script that detected YouTube pages was placed in the wrong directory (Chrome couldn't find it on load), and the API key was being read from process.env (which doesn't exist in Chrome extensions — extensions read from chrome.storage instead).

After 4 follow-up prompts asking Bolt to fix specific issues, the extension loaded into Chrome but the "Summarize" button never appeared on YouTube — the content script's injection pattern didn't match YouTube's URL format. Two more prompts to fix the match patterns.

Final result: a working extension after ~7 prompt-and-fix iterations, roughly 25 minutes total. The output works, but the workflow felt like debugging AI code rather than building from a prompt. For someone who knows what to look for in extension code, this is manageable. For a non-developer, it would be deeply confusing — each error requires understanding Chrome's execution model to even diagnose.

Outcome:Worked with effort

Bolt.new vs PlugThis at a glance

AspectWith Bolt.newWith PlugThis
Default project structureReact web app — needs explicit prompting to make it an extensionManifest V3 Chrome extension folder, automatic
Manifest.json generationGenerated but often has incorrect permissions and pathsGenerated with correct scoped permissions every time
Content script vs background worker contextFrequently confuses the two — code ends up in wrong contextCorrect context by default; APIs match where code runs
chrome.* API usageKnows the APIs but generates code with context errorsNative — every API call is generated for the right execution context
BYOK API key handlingDefaults to process.env, requires manual conversion to chrome.storagechrome.storage by default with secure read patterns
Ready-to-load outputRequires manual folder restructuring before Chrome accepts itOne-click .zip export, loads directly into Chrome
Time from prompt to working extension15–30 minutes including debugging cycles~2 minutes from prompt to loaded extension
Iteration on existing extensionStrong for UI changes, weaker for behavior changesIterative chat refines any aspect — UI, behavior, permissions

Why purpose-built matters here

Bolt.new is excellent at what it was built for: rapid web app scaffolding. The issue with using it for Chrome extensions isn't that it's bad — it's that Chrome extensions have an execution model fundamentally different from web apps. The manifest file, content script context boundaries, message passing between scripts, and host permissions are constraints that a tool built for web apps treats as edge cases. A tool built specifically for Chrome extensions treats them as the default.

If you're building Chrome extensions occasionally and want to learn the platform along the way, Bolt is a fine option — you'll debug a lot, but you'll understand the architecture by the end. If you're building Chrome extensions because you want the outcome (an extension you can install, share, or publish) and not the journey (learning Manifest V3), PlugThis is the more direct path.

Build your first Chrome extension with PlugThis

Describe what you want. Get a Manifest V3 extension in about two minutes — no debugging cycles.

Build your first Chrome extension with PlugThis →

Related comparisons

External reference: Bolt.new · Published 2026-06-08

Building Chrome extensions with Bolt.new — FAQ

Question 01

Can Bolt.new build Chrome extensions at all?

Yes, technically. With explicit prompting and 5–10 follow-up iterations to fix manifest and context issues, you can get a working extension. The friction is in how many times you have to redirect Bolt back toward Chrome extension conventions vs. web app conventions.

Question
FAQ

More answers below.

Question 02

Is Bolt.new free?

Bolt has a free tier with limited daily generations. Heavier use requires a paid plan starting around $20/month at the time of writing. Check bolt.new for current pricing.

Question
FAQ

More answers below.

Question 03

Should I use Bolt or PlugThis if I'm building one extension as a learning project?

If learning is the goal, Bolt is a reasonable choice — you'll see more of the underlying decisions because you have to correct them. If shipping is the goal, PlugThis gets you to a working extension in a fraction of the time because it doesn't require you to know what to correct.

Question
FAQ

More answers below.

Question 04

Can I migrate a Bolt-generated extension to PlugThis?

Not directly — there's no import path. But if you have the description of what your extension does, you can describe it to PlugThis and let it regenerate the extension cleanly. Often faster than fixing the Bolt output.

Question
FAQ

More answers below.