ExternalBuildState enum
This package's vocabulary for Apple's externalBuildState.
A build's processing state and its external state answer different questions, and conflating them is the defect this vocabulary was added for: a consumer showed one TestFlight number per platform, so a build that had merely finished processing rendered identically to one external testers actually had. ProcessingState.valid means Apple finished ingesting the binary. This says who can install it.
The members are what this package names, not what Apple has — see ProcessingState, whose argument this follows exactly. AppStoreBuildEntry.externalBuildStateRaw carries Apple's own word.
Values
- processing → const ExternalBuildState
-
Apple is still processing the upload, so no audience has it yet.
const ExternalBuildState('processing', 'PROCESSING') - processingException → const ExternalBuildState
-
Processing ended in an error. Terminal.
const ExternalBuildState('processingException', 'PROCESSING_EXCEPTION') - missingExportCompliance → const ExternalBuildState
-
The build cannot be submitted until export compliance is answered.
const ExternalBuildState('missingExportCompliance', 'MISSING_EXPORT_COMPLIANCE') - inExportComplianceReview → const ExternalBuildState
-
Apple is reviewing the export compliance answer.
const ExternalBuildState('inExportComplianceReview', 'IN_EXPORT_COMPLIANCE_REVIEW') - readyForBetaSubmission → const ExternalBuildState
-
Processed, and never submitted for beta review. The state a build sits in after an upload that was not followed by a beta release — which is the ordinary state of the newest build most of the time, and the one most easily mistaken for "the testers have it".
const ExternalBuildState('readyForBetaSubmission', 'READY_FOR_BETA_SUBMISSION') - waitingForBetaReview → const ExternalBuildState
-
Submitted, and Apple has not started the review.
const ExternalBuildState('waitingForBetaReview', 'WAITING_FOR_BETA_REVIEW') - inBetaReview → const ExternalBuildState
-
Apple is reviewing it now.
const ExternalBuildState('inBetaReview', 'IN_BETA_REVIEW') - betaRejected → const ExternalBuildState
-
Apple refused the build for external testing. Terminal: the API never carries the reason, which arrives by e-mail and in App Store Connect.
const ExternalBuildState('betaRejected', 'BETA_REJECTED') - betaApproved → const ExternalBuildState
-
Review passed. Not the same as inBetaTesting — approval is Apple's verdict, delivery is the group assignment.
const ExternalBuildState('betaApproved', 'BETA_APPROVED') - readyForBetaTesting → const ExternalBuildState
-
Apple reports the build ready to give to external testers.
const ExternalBuildState('readyForBetaTesting', 'READY_FOR_BETA_TESTING') - inBetaTesting → const ExternalBuildState
-
Beta review has cleared and Apple describes the build as in testing.
Not sufficient on its own, and this used to say it was. It read the one state that answers yes, which contradicted AppStoreBuildEntry.inExternalTesting once that moved to two facts: delivery is this state or betaApproved or readyForBetaTesting, and an attached external group. A state says Apple would allow it; an attachment says somebody asked for it. Read that field rather than comparing against this member.
It is also the state Apple did not once use across 123 builds measured 2026-09-14 — betaApproved is the terminal one after review — so a predicate written against this member alone is a constant
false, which is the defectinExternalTestingwas changed to fix.const ExternalBuildState('inBetaTesting', 'IN_BETA_TESTING') - expired → const ExternalBuildState
-
The build's ninety days are up.
const ExternalBuildState('expired', 'EXPIRED') - unknown → const ExternalBuildState
-
Apple sent a state this version does not name. What Apple said is in AppStoreBuildEntry.externalBuildStateRaw. See ProcessingState.unknown.
const ExternalBuildState('unknown', null)
Properties
- appleValue → String?
-
Apple's spelling, or null for unknown, which Apple has no word for.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- index → int
-
A numeric identifier for the enumerated value.
no setterinherited
- name → String
-
Available on Enum, provided by the EnumName extension
The name of the enum value.no setter - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- wire → String
-
This package's spelling, and what the document carries.
final
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
read(
String? appleValue) → ExternalBuildState? -
Apple's
appleValueread as a member: unknown for a value this version does not name, null when Apple sent nothing. See ProcessingState.read, which says why reading to a member first is what makes the branches exhaustive.
Constants
-
values
→ const List<
ExternalBuildState> - A constant List of the values in this enum, in order of their declaration.