Browser Extension Development

Browser Extensions People Actually Install and Keep

Chrome, Edge and Firefox extensions built on Manifest V3, with permissions kept narrow, store submission handled, and sign-in shared with the product you already have.

  • Manifest V3 from the start
  • Store listing prepared with you
  • Published under your developer account

Where an Extension Runs and What It Is Built With

Chrome Edge Firefox Brave & Opera Manifest V3 TypeScript Service Workers OAuth Sign-In
What They Are Good For

An Extension Puts Your Product Where the Work Happens

The best extensions are small. They do one thing on a page the user is already looking at, and they save a step that used to mean switching tabs.

Capture Into Your App

Save a page, a job posting, a property, a product or a contact into your product in one click, with the fields already filled in from the page.

Overlay Extra Context

Your own data shown alongside somebody else’s interface — pricing, risk flags, stock levels or CRM history added to a page your team already lives in.

Automate Repetitive Steps

Filling the same form fifty times a day, pulling a report, or moving data between two systems that will never have an integration.

Internal Tools for Staff

Distributed privately to your own team through the enterprise policy rather than a public listing, with no review queue in the way.

Research & Comparison Aids

Price history, availability, coupons or verification shown at the moment of decision, which is the only moment it is worth anything.

A Second Surface for a SaaS Product

A companion to an existing SaaS product that raises daily usage and gives you a listing in a store people search.

Manifest V3

What Changed, and Why Old Extensions Stop Working

Manifest V3 is the current platform and Chrome no longer accepts the previous one. Three changes account for nearly all the migration work.

Background became a service worker

It starts when needed and is shut down when idle, so nothing can be kept in memory between events. State has to be stored deliberately and long timers have to be rebuilt around alarms. This is where most old extensions break.

No remotely hosted code

Everything that runs must ship inside the reviewed package. You can still call your own API for data, but you cannot download and execute new code, which is exactly what reviewers are watching for.

Declarative network rules

Blocking or rewriting requests is now done with rules the browser applies itself rather than code inspecting every request. Faster and more private, and a real constraint if your extension filtered traffic.

If you already have an extension written for the old platform, the migration is a defined piece of work rather than a rewrite in most cases. We audit it first and tell you which of the three changes actually affect you before quoting anything.

Permissions

The Install Screen Is Part of Your Conversion Rate

Users see exactly what an extension is asking for before they accept it, written in the bluntest possible language. It is the last screen before install, and it loses more installs than any other part of the design.

Broad permissions

Asks for everything up front

Requests access to all sites because it was simpler to build that way. The browser warns that it can read and change all your data on every website you visit, and a cautious user stops right there. Review takes longer too, because a broad request has to be justified.

Install screen says
All sites
Review
Slower
Narrow permissions

Asks for what it is using, when it is used

Declares the specific sites it works on, or nothing at all until the user clicks the icon and grants access to the current tab. The install screen is boring, which is the goal, and the store reviewer has nothing to query.

Install screen says
This site
Review
Routine

Illustrative comparison of two permission designs for the same feature set — not measured results from a specific extension.

Getting this right is design work, not a technical detail. We list the permissions during scoping, decide which can be requested only when the user acts, and write the plain-English explanation shown in the listing. If a feature needs a permission that will frighten people, that is worth knowing before it is built rather than after.

Architecture

Content Scripts, Service Workers and Your API

An extension is several small programs in different sandboxes passing messages to each other. Deciding what lives where is the main architectural choice.

The Web Page

Someone else’s site, which you do not control and which will be redesigned without warning.

Content Script

Runs inside that page. Reads it, adds your interface to it, reacts to clicks. Limited browser privileges, so anything sensitive is handed onward by message.

Background Service Worker

The coordinator. Holds the session, calls your API, manages alarms and notifications. Shuts down when idle, so state is written to storage rather than kept in memory.

Your API

The same backend your web app uses, with token authentication and rate limits, so the extension is another client rather than a separate system.

The popup and the options page are two more small surfaces on top of this, each talking to the service worker rather than holding logic of their own.

Store Review

Getting Published Without Three Rejections First

Review usually takes a few days. A first submission is held far more often than an update, and nearly always for one of these reasons.

Permissions wider than the described functionality, with no justification given
No privacy policy, or one that does not match what the code actually collects
A listing that promises features the submitted build does not contain
Code obfuscated or minified past readability with no readable source supplied
Analytics or tracking that is not disclosed anywhere in the listing
One extension trying to do several unrelated jobs, which reads as a bundle
01

Your Developer Account

The Chrome Web Store and Edge listings are registered in your name and paid by you, so the extension is yours and stays yours.

02

Listing Prepared With the Build

Description, screenshots, category, privacy disclosures and a written justification for each permission, all ready when the build is.

03

Submit and Track

We submit, watch the queue and answer reviewer questions. If something is rejected we fix and resubmit rather than handing you the email.

04

Staged Updates

Later releases can go to a percentage of users first, so a bad update reaches a few hundred people rather than all of them.

Accounts & Sync

Connecting the Extension to the Product You Already Have

Sign-in that does not annoy people

  • Authentication through a normal browser tab, never a login form inside the popup
  • Someone already signed in to your web app is signed in to the extension too
  • Short-lived tokens refreshed quietly, so nobody is asked to log in twice a day
  • Sign-out that genuinely clears local state on that machine
  • Plan tier and permissions read from your backend, so paid features stay paid
  • The extension is just another API client — no separate user system to maintain

Data, storage and sync

  • Settings synced across a signed-in browser profile so a second machine feels familiar
  • Anything meaningful stored on your server, not only in the browser
  • A queue for actions taken while offline, replayed when the connection returns
  • Sensible caching, so the extension is not hammering your API on every page load
  • Nothing collected that the listing does not declare
  • Clear behaviour when a token expires or the account is downgraded
Afterwards

Keeping It Working While the Browsers Move

An extension is never quite finished, because it lives inside software that updates every few weeks and on pages somebody else owns.

Browser releases

Chrome ships roughly every four weeks and platform rules change with it. We check against the current release rather than waiting for reviews to tell us.

Pages that get redesigned

If the extension reads a third-party page, that page will change. We write the selectors defensively and fail visibly rather than silently doing nothing.

A small retainer

Most extensions need a few hours a month rather than a project. Reviews watched, breakages fixed, and the occasional platform migration handled.

FAQ

Browser Extension Questions

Which browsers can one extension cover?

Chrome, Edge, Brave, Opera and Arc all run on the same engine, so a single Chrome extension covers them with very little extra work. Firefox uses a close variant of the same format and usually needs modest changes plus its own store listing. Safari is the outlier: it needs a wrapper built with Apple tooling, an Apple developer account and a separate review. We normally build for Chrome and Edge first, add Firefox where the audience justifies it, and treat Safari as its own decision with its own budget.

What is Manifest V3 and what did it change?

Manifest V3 is the current extension platform, and Chrome no longer accepts the old one. Three changes matter in practice. The persistent background page became a service worker that shuts down when idle, so an extension can no longer hold things in memory indefinitely. Remotely hosted code is banned, so everything ships inside the reviewed package. And blocking or modifying network requests now goes through a declarative rules system rather than inspecting each request in code. Any extension written before that shift and never migrated is either broken already or heading that way.

Why does asking for fewer permissions matter?

Because the browser shows your permission list at install time, in blunt language. An extension that asks to read and change all your data on every website converts far worse than one that asks for a single site, or for nothing until you use it, and it also attracts a slower and more sceptical store review. We scope permissions to what the feature genuinely needs, request the wider ones at the moment the user triggers the feature rather than up front, and treat the install screen as part of the design work.

What is the difference between a content script and a service worker?

A content script runs inside the page the user is looking at. It can read and change what is on that page but only has limited access to browser APIs. The service worker runs in the background with the wider privileges, has no access to the page at all, and is shut down whenever it is idle. The two talk by passing messages. Almost every extension of any substance uses both, and knowing which half a piece of logic belongs in is most of the craft.

How long does store review take and why do extensions get rejected?

Usually a few days, occasionally longer, and a first submission is far more likely to be held than a later update. The common causes are permissions broader than the described functionality, a missing privacy policy or one that does not match what the extension does, a listing that promises something the code does not do, code minified beyond readability with no readable source provided, and collecting any user data without disclosing it. We prepare the listing copy, the privacy disclosures and the permission justifications as part of the submission rather than scrambling after a rejection.

Can the extension sign in to our existing web app?

Yes, and it is the usual arrangement. The extension authenticates against the same backend as your web application, holds a short-lived token and refreshes it quietly in the background. Signing in through a normal browser tab rather than a login form inside the popup is both safer and less work, and it means someone already signed in to your product is signed in to the extension too.

Do extensions break when browsers update?

They can. Chrome ships a new version every few weeks, platform rules and permissions change, and an extension that depends on the structure of a third-party page will break when that page is redesigned. It is why we suggest a small maintenance arrangement rather than treating an extension as finished: a periodic check against the current browser release, and a fix turned around before your install base starts writing one-star reviews.

Describe the Click You Want to Save

Tell us what the extension should do and which pages it lives on — we will reply with an approach, a permission plan and a budget range within two business days.