Skip to main content

Limits

Technical limits for EdgeBase App Functions.

Execution

LimitDefaultConfigurableNotes
Max call depth5NoPrevents circular context.admin.functions.call() chains
Blocking hook timeout5 secondsNoFixed — beforeSignUp, beforeSignIn, onTokenRefresh, beforePasswordReset
Non-blocking hookNo timeoutafterSignUp, afterSignIn run via ctx.waitUntil()
Action handler timeout (Room)5 secondsNoPer onAction execution
Schedule function timeout10 secondsNoAbortSignal.timeout(10000) per function. Note: scheduleFunctionTimeout config type exists but runtime enforcement is not yet implemented — the 10s default is hardcoded.
Alarm wall-clock budget30 secondsNoCloudflare DO Alarm limit; functions split if exceeded

HTTP Triggers

FeatureDetails
RoutingFilesystem-based (SvelteKit style)
Dynamic params[param].tscontext.params.param
Catch-all[...slug].tscontext.params.slug
Route groups(group)/file.ts → parentheses removed from URL
MethodsGET, POST, PUT, PATCH, DELETE (named exports)
Middleware_middleware.ts applies to directory and subdirectories
Ignored files_helper.ts (underscore prefix, not middleware)

DB Triggers

TriggerExecutionNotes
afterInsertAsync (ctx.waitUntil())Never blocks API response
afterUpdateAsync (ctx.waitUntil())
afterDeleteAsync (ctx.waitUntil())
Trigger errorLogged onlyBest-effort; does not roll back the CUD operation

Auth Hooks

HookTypeTimeoutNotes
beforeSignUpBlocking5s (hardcoded)Can reject signup; skipped on timeout
beforeSignInBlocking5s (hardcoded)Can reject signin; skipped on timeout
onTokenRefreshBlocking5s (hardcoded)Can inject custom claims
afterSignUpNon-blockingNonectx.waitUntil()
afterSignInNon-blockingNonectx.waitUntil()
beforePasswordResetBlocking5sCalled on both reset-password and change-password

Schedule Triggers

LimitValueNotes
Cron syntaxStandard 5-fieldDefined in edgebase.config.ts, deployed as Cloudflare Cron Triggers
ExecutionWorker scheduled() handlerEach schedule function runs via ctx.waitUntil()
Concurrent executionParallelEach schedule trigger runs independently in the Worker

Rate Limiting

GroupDefaultKeyConfigurable
functions50 req / 60sIPYes
global10,000,000 req / 60sIPYes

Service Key requests bypass the functions group limit.

The same bypass semantics apply to all Admin SDKs.

FunctionError Codes

CodeHTTP Status
not-found404
permission-denied403
unauthenticated401
invalid-argument400
already-exists409
internal500
unavailable503
failed-precondition412
resource-exhausted429