App Development / Browser Extension Development

Browser extensions, built on Manifest v3 and shipped to the store.

Popups, content scripts, sidebars, OAuth, background workers. Chrome, Firefox, Edge, Brave, Safari — from scope to store review.

Popup + Content ScriptBackground SyncOptions PageStore Submission

A browser extension lives inside the user's workflow — one click away, on every tab. We build them the way the platforms now require: Manifest v3, service workers, proper CSP, store-policy clean.

Manifest v3 native

Service workers, declarativeNetRequest, host-permission prompts — built the modern way, not retrofitted.

Store-policy clean

Chrome Web Store and Firefox AMO submissions written to pass review on the first round.

Cross-browser parity

One codebase, tested on Chrome, Edge, Brave, Firefox, and Safari Web Extensions.

Extensions we build

Extension types

Extensions span a wide surface — from a 200-line popup utility to a sidebar that augments a CRM record page in real time. We've built across the range and pick the smallest surface that solves the problem. Each type carries a different permission model, a different review burden, and a different debugging story. We scope to the lightest one that works.

Popup-only utilities

Single-purpose tools that live behind the toolbar icon — no page access, fast review, minimal permissions.

Content script (page injection)

DOM augmentation on specific sites — overlays, inline buttons, data extraction with isolated worlds.

Browser action with sidebar

Side panel (Chrome) or sidebar (Firefox) for persistent context next to the page — ideal for CRM and research tools.

OAuth + sync (Google, GitHub, custom)

chrome.identity flows, refresh-token handling, encrypted sync via chrome.storage.sync or your backend.

Background service workers

Event-driven workers replacing legacy background pages — alarms, message passing, idempotent handlers.

Productivity / dev tools / CRM helpers

DevTools panels, Salesforce/HubSpot/Dynamics injectors, task capture, AI assistants pinned to the tab.

Common use cases

Where extensions earn their keep

An extension wins when the work happens inside another product — a CRM, a SaaS console, a search results page — and switching tabs to do it is the bottleneck. The browser becomes the integration layer.

CRM productivity

Salesforce, HubSpot, and Dynamics sidebars that surface notes, queue calls, log activity inline.

Internal team tooling

Private extensions distributed via enterprise policy — internal dashboards, audit overlays, ticket triage.

Developer tools

DevTools panels for debugging, accessibility audits (axe-core), and runtime performance profiling.

Productivity

Task capture into Notion or Linear, AI rewrite and summarize, clipboard pipelines, page annotation.

SaaS companions

Browser-side companion to a web product — quick capture, share-to-app, deep linking, account sync.

Tech & compliance

Manifest v3, store policies, security

Manifest v3 is now mandatory on Chrome and the path forward on Firefox and Safari. That means service workers instead of persistent background pages, declarativeNetRequest instead of blocking webRequest, and tighter limits on remote code. Extensions written for v2 don't port cleanly — we rebuild the background layer rather than patch around it. On the security side: OAuth secrets stay on a server you control, not in the bundle. CSP is locked down to self plus explicit hashes. Content scripts run in their isolated world and communicate via chrome.runtime messages. Store review on Chrome Web Store and Firefox AMO checks permission justification, privacy disclosures, and remote-code policy — we write submissions to pass on the first review.

Process

From idea to Chrome Web Store

Extension projects move fast because the surface is small. Most ship in one to three weeks, including the Chrome Web Store review window.

Scope

Permissions, target browsers, and review-risk pass. We cut anything that triggers heavier review without earning it.

Build

Manifest v3, TypeScript, Vite or webpack bundling, isolated content scripts, typed message passing.

Test (cross-browser)

Chrome, Edge, Brave on Chromium; Firefox on Gecko; Safari Web Extensions where in scope. Playwright for content-script flows.

Submit

Privacy disclosure, permission justification, screenshots, listing copy. Submitted to Chrome Web Store and Firefox AMO.

Maintain

Manifest deprecations, Chrome version drift, OAuth scope changes, store-policy updates handled on retainer.

FAQ

Common questions

Do you build for Manifest v3 only, or can you maintain a v2 extension?
New builds are Manifest v3 — Chrome no longer accepts v2 submissions and Firefox is following. We also migrate existing v2 extensions to v3, which usually means rewriting the background layer (service worker), swapping blocking webRequest for declarativeNetRequest, and revisiting permissions.
Which browsers do you support from a single codebase?
Chrome, Edge, and Brave share the Chromium build. Firefox runs the same code with a separate manifest and a small polyfill (webextension-polyfill). Safari Web Extensions need an Xcode wrapper and a separate App Store submission — we handle it when in scope.
Will the extension pass Chrome Web Store review?
We write listings to pass review the first time: minimum permission set, clear justification for each permission, no remote code execution, privacy disclosure that matches what the extension actually does. If review flags something, we revise and resubmit at no extra cost.
Can the extension call our backend or a third-party API?
Yes — extensions are well-suited to it. We handle OAuth via chrome.identity, store tokens in chrome.storage with appropriate scope, and route requests through the service worker so secrets never sit in the content script. CORS and host_permissions are configured per environment.
How long does a typical extension take to ship?
A productized Chrome extension ships in roughly one week. A CRM-integrated extension with OAuth and sidebar UI is two to four weeks. Chrome Web Store review adds one to three business days on top, sometimes longer for first submissions or permission-heavy listings.
Ready when you are

Have an extension in mind?

Send us the use case and the target browsers. We'll come back with scope, permissions plan, and a fixed price.