Skip to main content

Quotas and limits

Use these limits when configuring an App Service Builder app.

The tables cover configuration limits and app and subscription quotas. Your subscription's assigned policy can impose lower limits; ask your preview contact which allowances apply. An allowance does not reserve regional capacity or guarantee that a deployment can start. When a request exceeds a limit, the error explains the limit and what to do next.

Contract limits​

AreaLimit
ManifestAt least one component; unique case-sensitive names and public paths
Deployed outputsAt most one static output and one public compute output, including inferred framework outputs
Public catch-allAt most one / component mount
Compute listening port1–65535; default 8080
Explicit health status listNonempty, unique HTTP codes in 100–599; requires explicit health path
VariablesAt most 100
Variable nameAt most 256 characters; identifier syntax; case-insensitive uniqueness
Variable valueAt most 32,768 UTF-8 bytes
Aggregate variable names and valuesAt most 65,536 UTF-8 bytes
Authentication entriesAt most 100 combined per provider; customer Entra API audiences included
Autoscale minimumInteger at least 0; 0 opts into scale-to-zero
Autoscale maximumGreater than minimum, at most 20
CPU/memory targetWhole percentage 1–100; with a positive minimum, select at least one target or enable HTTP scaling
HTTP scalingOptional with a positive minimum; always enabled by minimum 0
App countEffective-policy maximum per Azure subscription
Compute sizeEvery compute component must use a size allowed by the effective policy
Replicas per appSum of configured maximum replicas across all compute components
Replicas per subscriptionTotal allocated maximum replicas, including increases requested by operations still in progress
Concurrent builds per appOne active AppVersion build
Concurrent builds per subscriptionEffective-policy maximum across apps
Build starts per appRolling token allowance; replay of the same request does not consume another token
Build starts per subscriptionRolling token allowance shared by all apps
Build durationTotal time allowed for an accepted build to finish
Scale increases per appRolling allowance for a request that raises minReplicas, maxReplicas, or both
Scale increases per subscriptionRolling allowance shared by all apps; scale-down does not consume allowance
Non-build activations per appRolling allowance for retained-version activation or redeploy without a new build
Non-build activations per subscriptionRolling allowance shared by all apps

During the no-charge preview, the default preview-standard policy is intentionally permissive: 300 apps, every published compute size, 20 replicas per app, 6,000 replicas per subscription, 300 concurrent builds, 1,000 app build starts/hour, 300,000 subscription build starts/hour, 1,000 app operations/hour and 300,000 subscription operations/hour for each initial operation category, and a 60-minute build deadline. The available preview-free policy is 5 apps, small compute only, 2 replicas per app, 10 replicas per subscription, 2 concurrent builds, 10 app build starts/hour, 30 subscription build starts/hour, 10 app operations/hour and 30 subscription operations/hour for each initial operation category, and a 10-minute build deadline. Both policies retain the one-active-build-per-app invariant. preview-free is not selected by default.

When a limit is reached​

Configuration or replica limits return HTTP 409. Build and operation rate or concurrency limits return HTTP 429, build timeouts return HTTP 408, and a temporarily unavailable limit check returns HTTP 503. A deployment can be accepted before its build is checked. If that check fails, read the limit error in the completed operation rather than expecting another HTTP response from the original request. Builder CLI prints the error and recovery action; --json includes details under error.serviceLimit.

CodeMeaningRemediation
BuilderAppComputeSizeLimitExceeded (ComputeSizeLimitExceeded through ARM)A component requested a compute size outside the effective policyChoose one of allowedSizes or obtain a different policy
BuilderAppReplicaLimitExceeded (AppReplicaLimitExceeded through ARM)The app's summed component maxima exceed the per-app policyReduce configured maximum replicas or obtain a different policy
SubscriptionReplicaLimitExceededCommitted maxima plus in-flight positive deltas exceed the subscription policyScale down another app, wait for cleanup/release, or obtain a different policy
AppBuildAllowanceExceededThe app exhausted its rolling build-start allowanceWait until retryAt, then retry the same intent with a new request ID
SubscriptionBuildAllowanceExceededThe subscription exhausted its rolling build-start allowanceWait until retryAt, reduce build frequency, or obtain a different policy
SubscriptionBuildConcurrencyLimitExceededAll subscription build slots are occupiedWait for an active build to finish, then retry
AppBuildTimeoutExceededThe build exceeded its time limitInspect build logs, reduce build duration, and start a new build
BuildLimitCheckUnavailableThe service could not check the build allowanceWait for the supplied retry time and check operation status before retrying
AppOperationAllowanceExceededThe app exhausted the rolling allowance for the reported operationKindWait until retryAt, then retry the same intent with a new request ID
SubscriptionOperationAllowanceExceededThe subscription exhausted the rolling allowance for the reported operationKindWait until retryAt, reduce operation frequency, or obtain a different policy
OperationLimitCheckUnavailableThe service could not check the operation allowanceWait for the supplied retry time and check operation status before retrying

The error details identify the limit, its app or subscription scope, and the recovery action. Numeric limits include current, requested, and maximum values; compute-size errors include the requested and allowed sizes. For HTTP 503 responses, wait for the period specified by Retry-After before retrying.

Build and operation allowance details can also include remaining, capacity, refillPerHour, and retryAt. Failed and timed-out accepted builds still count toward the build-start allowance. Retrying the same accepted request with its original request ID does not consume another build start.

A component can emit more than one output. For example, hybrid framework output can use the whole static-plus-compute allowance. Counting only manifest entries is insufficient.

Availability boundaries​

CapabilityBoundary
Push deploymentNot ready for use in this Private Preview; keep automatic deployments off and deploy explicitly
Runtime versionsConfirm the language, version, and framework with your preview contact
Retained-version activationRequires ready, retained artifacts; no unlimited retention promise
Custom domainsNot supported in this Private Preview
Scale policySaved desired policy subject to app and subscription admission; not guaranteed regional capacity or live replica telemetry
Scale to zeroRequires an image-backed version; requests can be interrupted when the app sleeps. See scaling

VNet integration, managed database/cache provisioning, and shell access are not supported in this Private Preview. The Portal does not provide live runtime-log streaming or customer request-log browsing. Configurable runtime log export to Log Analytics is separate and requires an enabled preview environment and an app managed identity with ingestion permission. See feature status for current availability.

Use troubleshooting for evidenced failures and deployments for artifact and completion semantics.