Skip to content

Distribution

Tenant-privateStore
Who publishesThe company, or its AI toolingA third-party developer
Sollar reviewNoneRequired
Verified entityAlready a contracted customerRequired
VisibilityThe organisation onlyPublic catalogue
Countersigned byThe organisation’s CAThe Sollar store key
InstallationAdministrator provisions, or staff install from the internal catalogueUser installs from the public catalogue
PriceOutside the appOutside the app — see Store compliance

A package cannot be both. distribution.channel is exclusive, and declaring both is a validation error. Managed Google Play enforces the same exclusivity for the same reason: channels with different rules cannot share an artifact.

Precedents: Lark separates self-built from store apps exactly this way. DingTalk does the same for enterprise-internal applications. And Firefox demonstrated that “unlisted but still platform-signed” is a workable model — you lose curation, never the signature chain.

Coexisting, following WeChat’s model, which is the best-resolved of the ones surveyed:

development ──▶ trial ──▶ in review ──▶ published
(latest per (named (ONE at (what users
developer) testers) a time) are running)

One review slot. Only one version can be in review at a time; resubmitting replaces rather than queues. This avoids a backlog of superseded versions nobody wants any more.

One development version per developer. Each team member has their own, and a new upload replaces it. It is a working state, not a history.

Named testers. Only project members and explicitly listed testers reach a trial version, and testers must be members of the organisation — the tenant is the natural boundary.

Full, or phased.

Phased follows Apple’s fixed curve, the best-documented starting point available: 1%, 2%, 5%, 10%, 20%, 50%, 100%, one step per day, pausable at any time.

A fixed curve beats a freely chosen percentage because it removes the decision from the moment of stress. Nobody picks a good number at three in the morning with the error graph climbing.

WeChat also offers phased publication but does not document the mechanics publicly — the steps, rollback limits, or emergency path.

Fast, and as a new version, not a true reversal. This is the Chrome Web Store’s model: about a minute, no review, republishing an earlier build under a higher version number.

Terminal window
sollar rollback --to 2.4.0 # publishes 2.4.2 carrying 2.4.0's content

Why not a real reversal: the monotonic version is what tells a client it needs to update. Lowering the number breaks that guarantee and creates ambiguity about what is installed.

Rollback skips review because the code was already reviewed. Publishing never-reviewed code through this path is abuse, and the platform detects it by comparing hashes against approved versions.

Distinct from rollback, and covered in Review policy: a signed revocation list consulted at launch with a short TTL; the client refuses the revoked version and updates to a safe one if there is one; a fully revoked app leaves the catalogue and stops opening.

  • Delta updates — a bsdiff patch against a specific prior version, with a full-download fallback when no patch path exists.
  • Merkle verification — blocks verified as they are read, so a mini app starts before the whole package is hashed.
  • Monotonic versions — the client accepts only a higher version than the one installed.

Apple’s Guideline 4.7.4 requires:

You must provide an index of software and metadata available in your app. It must include universal links that lead to all of the software offered in your app.

The catalogue at /apps/ is that artifact, with a universal link per mini app (https://sollar.com/app/<id>).

This means the public catalogue cannot be closed or invitation-only if Sollar wants App Store approval. That is a constraint on the product, not a documentation detail.

WeChat operates a service-provider platform that authorises an external company to administer many merchants’ mini programs, through its own handshake (component_verify_ticketpre_auth_code → authorisation), where the effective scope is the intersection of what the merchant granted and what the provider holds.

It is relevant here because a consultancy building mini apps for several tenants is an obvious case. It is not in v1, but the permission model is designed knowing it is coming — vendor_id and actor_token delegation already have the right shape.

Since September 2023, the MIIT’s ICP filing (备案) applies to mobile apps and mini programs as well as websites, and Tencent enforces it inside its own developer portal. Reported service levels: platform review 1–2 days, SMS verification 24 hours, and the provincial telecommunications bureau 1–20 days.

If Sollar operates a mini app store in mainland China, each mini app needs its own filing, and the provincial bureau’s timeline sits on the developer’s critical path. See China.