The useful feature is on the page. The risky permission covers the whole browser.
An extension may need to read one field on one site, yet an early prototype asks for access to every URL. That shortcut becomes a trust problem for users and a review problem for the store.
Start with the smallest in-page job. The permission request, code boundary, data path, listing copy, and user task should tell the same story before a second browser or feature is added.
First-release planning
- starting point for one focused browser release
- $15K
- One job, permission boundary, and store package
- usual build window before external review
- 4-6 weeks
- Page complexity and backend needs affect timing
- year RaftLabs sold its own Draftly product
- 2024
- Included a Chrome extension inside LinkedIn
RaftLabs built and shipped Draftly, an AI-assisted LinkedIn product with a Chrome extension, then sold the product in 2024. That first-party experience supports permission, page-integration, and product-lifecycle decisions; it does not guarantee approval or commercial results for another extension.
An extension fits when browser context is essential to the user outcome.
Choose a web app when the product can own its interface without reading or changing another site.
A fit01The core job depends on an approved page, selected text, browser state, or browser API.
02One purpose and its required host access can be explained to a user in plain language.
03The team can own store accounts, policy responses, support, and future browser changes.
Not a fit01The same workflow works in a normal web application without page access.
02The business model depends on hidden collection, automation, or permissions users would not expect.
03Guaranteed store approval or a permanent page DOM is required.
Focused scope
What one browser release includes
01Page and content-script boundary
Define supported sites, routes, frames, selectors, injection timing, user
triggers, and behaviour when the page changes. Keep site-specific adapters
separate so one DOM update does not destabilize every workflow.
02Manifest, permissions, and background work
Configure Manifest V3, the service worker, storage, messaging, commands, and
the narrowest host permissions. Map each sensitive capability to visible
product behaviour and a store justification.
03Authentication and backend integration
Connect the extension to an existing product or scoped backend with explicit
token, refresh, rate-limit, offline, and error behaviour. Avoid placing
provider secrets or privileged business logic in the packaged client.
04Store package and release path
Prepare signed builds, listing content, screenshots, privacy disclosures,
permission explanations, versioning, update notes, and a reviewer-response
path. The client publishes through accounts it controls.
In-page workflow vs owned interface
| Browser extension | Web application |
|---|
| Best fit | Assist inside approved browser pages | Own the full workflow and interface |
|---|
| Access | Browser APIs and declared host permissions | Only the application's own origin and integrations |
|---|
| External dependency | Page DOM and browser-store policy | Browser standards and hosting platform |
|---|
| Distribution | Store or enterprise-managed installation | URL, account, and normal deployment |
|---|
| Starting price | $15K for one browser | Scoped against the application workflow |
|---|
Use web application development when the product owns its screen. Use an extension when leaving the current page breaks the workflow or browser capabilities are essential. A companion web dashboard may still fit account, billing, administration, or history.
Delivery
From in-page job to a reviewable store release
Four steps keep product behaviour, permissions, and listing claims aligned.
- Step 1
01Define the in-browser job
Name the user task, supported pages, account state, data handled, and reason
the workflow must live in the browser. Record the first browser and features
outside the release.
- Step 2
02Bound permissions and architecture
Choose content scripts, service worker, storage, backend, authentication, and
the narrowest permissions that support the job. Review disclosures before
development hardens the wrong boundary.
- Step 3
03Build and test in real profiles
Develop the workflow, exercise page changes and failures, test upgrades, and
verify data handling across clean, existing, and restricted profiles on the
first browser.
- Step 4
04Prepare submission and handover
Align the listing, disclosures, screenshots, permission justifications,
release package, and support runbook before submission. Respond to reviewer
feedback without promising approval.
- The host page changes
- Isolate selectors and site adapters, fail visibly, and monitor supported pages. No extension can guarantee another company's DOM will remain stable.
- Permissions grow with every feature
- Review access as a product decision. Defer features whose permission cost is larger than their user value.
- Background work is treated like a server
- Design for browser lifecycle limits, suspension, quotas, network loss, and updates rather than assuming a persistent process.
- Store review is on the critical path
- Submit a policy-aligned package early, allow external review time, and separate launch plans from promises the store controls.
Scope and price
A focused one-browser extension starts at $15,000.
Begin with one job, one permission boundary, and one store package before expanding the browser matrix.
Store accounts, Apple membership, model APIs, backend hosting, and other third-party costs remain separate unless the proposal includes them.
Starting investment
Starts at $15K
A first release usually takes 4 to 6 weeks before external review. Cross-browser support, Safari, backend services, and sensitive data increase scope.
Permissions map to behaviour
The scope records why each permission is needed, which pages it covers, what
data moves, and how the listing discloses it.
No approval promise
RaftLabs prepares and supports submission, while browser stores retain control
of policy, review duration, rejection, and approval.
Related client platforms
Choose the runtime the workflow needs