Rehoboth Builds

Chrome Extension Ship Kit

Everything between “my extension works” and “it is live in the store”, already solved. Including the parts that fail silently.

Tell me when it ships

$49 · one developer or one company, unlimited extensions · in preparation, no payment taken yet. Mail us and you will hear once — when it is out.

The part that costs you a week is not the code

The working part of a Chrome Web Store release pipeline is about two hundred lines. Anyone can write it. What costs you a week is everything around it: the gate that fires at the wrong step, the guard that prints green while measuring nothing, the screenshot that is correct in every automatic sense and in the wrong language.

We shipped an extension in August 2026 and wrote down every one of those as we hit it. Then we packaged the code that resulted. The written map is the product; the code is its proof.

Four of them, so you can judge the rest

The upload state is SUCCEEDED, not SUCCESS. Our allow-list was copied from v1-era code. Two releases uploaded, printed a green “uploaded”, and then silently did nothing — the rejection went to stderr. If you port a v1 script, check every string you compare a response field against, not just the URLs.

Use an allow-list of file extensions, not a deny-list. Ours said “no listing/, no package.json, no zips” and printed green while a BUGS.md we had just written went into the package. The deny-list was not lying — those three were genuinely absent. It was answering a much smaller question than the one we cared about.

Chrome mirrors the tab strip in right-to-left locales. So if your “move tab left” is implemented as index - 1 — and it is — then in an Arabic interface it moves the tab visually right. The label has to describe what the user sees, which means the direction words in your Arabic strings are deliberately swapped relative to the English key name.

Two screenshots can be byte-identical and look fine side by side. Ours were. But a hash cannot tell you the content is wrong — after we added translations, the same script produced a full set of screenshots in the wrong language: six files, correct sizes, exit code 0, every hash unique. Every automatic signal green. Hashes catch “identical when they should differ”; only your eyes catch “this is the wrong thing”.

What is in the box

PartWhat it does
release/Chrome Web Store API v2 pipeline — preflight, deterministic zip, upload, submit. Setup self-check, publish-state watcher, metrics, Edge variant build.
checks/22 pre-package gates (manifest, translation completeness, description length, package allow-list) and a five-rule right-to-left readiness gate.
shots/Store screenshots over CDP — works on Chrome 137+, cleans up its own processes, takes a locale so you can produce localised sets.
modules/Two zero-dependency JavaScript files to paste into your extension: bidi handling for right-to-left, and site-pattern normalisation.
docs/The pipeline in full, the v1→v2 migration table, a right-to-left porting guide, the store-analytics runbook, and the submission checklist.
PITFALLS.mdThe product. Every pitfall above and about thirty more, each one something that actually happened, in the order it happened.

There is a deadline, and it is not ours

The banner on the v1 API reference says, verbatim: “The Chrome Web Store API (V1) is deprecated and will only be supported until 15th October 2026.” If anything in your CI still talks to www.googleapis.com/chromewebstore/v1.1, it stops working on that date.

We have already migrated, and the migration table is free either way — read it here. If the nine changes are all you need, take them and go. The kit is for the rest.

What it is not

It cannot create a store item — no API can, once v1 is gone. It cannot write your store listing; no API ever could. It does not do your keyword research, and it will not make a bad extension pass review.

Requirements: Python 3.10+, google-chrome for the screenshot tooling, and a publisher account with a service account attached. No third-party Python packages on the release path. No service to sign up for — these are scripts you run.


Tell me when it ships

We are Rehoboth Builds. We run this pipeline for our own releases — Custom Keyboard Shortcuts ships through it. If you have a question before it is out, the same address works.