NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2033 most downloaded on pub.dev
Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API
Last release 2 days ago
06 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 55 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
84 releases · first in 2021
Added: optional state parameter on createOAuth2Token , returned unchanged on the success and failure URLs
state parameter on createOAuth2Token, returned unchanged on the success and failure URLsFull Changelog: 29.0.0...29.1.0
Stable release of the dedicated database APIs: mysql , postgresql , mongo , documentsDB , and vectorsDB services, previously released as release candi
mysql, postgresql, mongo, documentsDB, and vectorsDB services, previously released as release candidatestablesDB.cutoverMigration is renamed to tablesDB.createCutovermysql.updateCredentials, postgresql.updateCredentials, and mongo.updateCredentials now return DedicatedDatabaseOperation; poll the operation to a terminal status, then fetch the database for the refreshed credentialsusageAggregateOnlyMetrics on the BillingPlan modelcredentialGeneration on the DedicatedDatabase modeldocumentsdb.indexes.read, documentsdb.indexes.write, vectorsdb.indexes.read, and vectorsdb.indexes.write to ProjectKeyScopestransactionId is accepted again by documentsDB and vectorsDB createDocument and createDocumentsX-Appwrite-Response-Format is now 2.0.0FrameworkAdapter.fallbackFile is now optionalFull Changelog: 28.0.0...29.0.0
One column per quarter.
Breaking: EmbeddingModel no longer offers embedding-gemma or bge-small
EmbeddingModel no longer offers embedding-gemma or bge-smalldocumentsDB, vectorsDB, mysql, postgresql, and mongo services, no longer hidden from server SDKsDocumentsDBIndexType and VectorsDBIndexType enumsPostgresExtension, VectorsdbCollection, AttributeObject, and AttributeVector modelsuserId, emailHash, and name parameters to avatars.getPhotoerror, containerStatus, and lifecycleState on the Database modelchangelogWatermark on the DatabaseMigration modeltotal on the DedicatedDatabaseBranchList modelDedicatedDatabaseOperation.status documents the new queued stateFull Changelog: 28.0.0...29.0.0-rc.1
Breaking: Execution.functionId replaced by resourceId and resourceType , now that executions cover both functions and sites
Execution.functionId replaced by resourceId and resourceType, now that executions cover both functions and sitesavatars.getPhoto returning the user's best available profile photoproject.updateOAuth2HuggingFace and the OAuth2HuggingFace modelhuggingface OAuth providerExecutionResourceType enum and resourceType attribute on the Execution modelFormatExceptionFull Changelog: 27.0.0...28.0.0
Breaking: removed account.createJWT ; use users.createJWT instead. A leaked JWT could mint further JWTs, letting a credential outlive its own expiry —
account.createJWT; use users.createJWT instead. A leaked JWT could mint further JWTs, letting a credential outlive its own expiry — a session cannot duplicate itself to live forever eitherproject.createKey. A leaked key could mint further hidden keys, making a compromise far harder to contain and revokelistMigrations, createMigration, getMigration, deleteMigration, and cutoverMigration, plus the DatabaseMigration and DatabaseMigrationList modelsusers.getMFAChallenge and the MfaChallengeSecret modelproject.updateMFAFactorsPolicy and the PolicyMfaFactors modelinstallationScopes parameter to project.updateOAuth2Servercustom authentication factor, mfa-factors project policy, and the embeddings.write key scopeFull Changelog: 26.2.0...27.0.0
Added: Embeddings service with createTextEmbeddings and the EmbeddingModel enum
Embeddings service with createTextEmbeddings and the EmbeddingModel enumproxy.createInvalidation with ProxyInvalidation model and InvalidationType enumtablesdb.listOperations with DedicatedDatabaseOperation modelsapps.deleteInstallation to revoke an app installation and its tokensClient.setOrganization() for organization-scoped requestssyncMode parameter to tablesdb.create and tablesdb.updatefolder parameter to storage.createFile, and folder and key to FileDatabaseStatus and DedicatedDatabaseReplicasnode-26 to the Runtime and BuildRuntime enumsproxy.invalidations.write to the ProjectKeyScopes enumactivities.listEvents queries parameter now accepts a list of queriesproject.updateSessionLimitPolicy total parameter is no longer nullableOrganization billing and program fields are nullable, matching the APIBillingPlan, BillingPlanAddon, and UsageBillingPlan optional fields are nullableDedicatedDatabaseMember.lagSeconds is nullable when the lag is unknownFull Changelog: 26.1.0...26.2.0
Added: Apps service for managing OAuth2 applications, keys, and installations
Apps service for managing OAuth2 applications, keys, and installationsOAuth2 service with authorize, grant, device authorization, and consent flowslistConsents, getConsent, deleteConsent, and consent token methodsOrganization and Teams servicesinstallationAccessTokenDuration parameter to project.updateOAuth2Servertoken parameter to sites.getDeploymentDownloadoauth2.introspect and organization installation key scopesFull Changelog: 26.0.0...26.1.0
Breaking: Removed Health service with its health models and enums
Health service with its health models and enumsUsage service and UsageEvent, UsageGauge modelsMessaging log methods listMessageLogs, listProviderLogs, listSubscriberLogs, listTopicLogscountryCode/countryName from ActivityEvent (country remains)xdefault types to List<double>/List<List> in Databases and TablesDBOrganization service get, update, delete, and membership management methodsProject.updateOAuth2Appwrite and updateDenyCorporateEmailPolicy with OAuth2Appwrite and PolicyDenyCorporateEmail modelsappwrite OAuth provider to OAuthProvider and ProjectOAuthProviderId enumsBillingPlan, UsageBillingPlan, AdditionalResource) and BillingPlanGroup enumprompt and maxAge parameters to Project.updateOAuth2Oidc with ProjectOAuth2OidcPrompt enumProject.updateOAuth2Servertoken parameter to Functions.getDeploymentDownload; type to listSpecificationsnewSpecification parameter to Backups.createRestoration; specification to TablesDB.createcity, isp, latitude, longitude, timeZone) to Locale modelemailCanonical, emailIsDisposable, emailIsFree) to User modeluserAccessedAt to Membership model and membership privacy policyOrganization, Program models; DatabaseStatus enumFull Changelog: 25.1.0...26.0.0
Added: createSesProvider and updateSesProvider to messaging
createSesProvider and updateSesProvider to messagingupdateOAuth2Server to project for OAuth2 server settingsupdatePasswordStrengthPolicy and PolicyPasswordStrength to projectgetAuditsDB health check to healthpassword-strength to ProjectPolicyIdapps.read and apps.write to ProjectKeyScopesFull Changelog: 25.0.0...25.1.0
Breaking: Removed githubImagine and googleImagine from ProjectOAuthProviderId
githubImagine and googleImagine from ProjectOAuthProviderIddeno-1.21, deno-1.24, and deno-1.35 from Runtime and BuildRuntimeStatusCode redirect membersOrganization service for managing projects and API keysPolicyDenyAliasedEmail, PolicyDenyDisposableEmail, and PolicyDenyFreeEmail policy modelsdeny-aliased-email, deny-disposable-email, and deny-free-email to ProjectPolicyIdBrowserTheme, HealthQueueName, OrganizationKeyScopes, and Region enumsdart-3.12 and flutter-3.44 runtimesProjectList model and new attributes on Function, Site, and UsageGaugefunctions, sites, usage, health, and avatars servicesupdatePresence to update in the presences serviceFull Changelog: 24.1.0...25.0.0
Added sizeActual field to File model for actual stored size after compression/encryption
sizeActual field to File model for actual stored size after compression/encryptiondeno-1.21, deno-1.24, and deno-1.35 to BuildRuntime and Runtime enumsBillingLimits fields to be nullable to match the server's sparse "limits crossed" responseProject.billingLimits to be nullableFull Changelog: 24.0.0...24.1.0
Breaking: Renamed AuthMethod enum to ProjectAuthMethodId
AuthMethod enum to ProjectAuthMethodIdEmailTemplateType to ProjectEmailTemplateId and EmailTemplateLocale to ProjectEmailTemplateLocaleServiceId to ProjectServiceId, ProtocolId to ProjectProtocolId, Secure to ProjectSMTPSecure, ProjectPolicy to ProjectPolicyIdScopes enum with ProjectKeyScopes for project key endpointsProject.updateDenyCanonicalEmailPolicy; replaced with updateDenyAliasedEmailPolicy, updateDenyDisposableEmailPolicy, and updateDenyFreeEmailPolicyAuthProvider model; use new ProjectOAuthProviderId enum insteadProject.get method to fetch current project detailsAdvisor, Presences, and Usage servicesInsight, Presence, Report, UsageEvent, and UsageGauge models with list variantsProjectAuthMethod, ProjectProtocol, and ProjectService modelsProjectOAuthProviderId and ProjectOAuth2GooglePrompt enumsProject, Database, and OAuth2Google model schemasX-Appwrite-Response-Format header to 1.9.5Full Changelog: 23.1.0...24.0.0
Added: Introduced bigint create/update APIs for legacy Databases attributes
bigint create/update APIs for legacy Databases attributesbigint create/update APIs for TablesDB columnskey, resourceType, resourceId, and secretFull Changelog: 23.0.0...23.1.0
[BREAKING] Renamed Webhook model fields: security → tls, httpUser → authUsername, httpPass → authPassword, signatureKey → secret
security → tls, httpUser → authUsername, httpPass → authPassword, signatureKey → secretsecurity → tls, httpUser → authUsername, httpPass → authPasswordWebhooks.updateSignature() to Webhooks.updateSecret() with new optional secret parameterClient.getHeaders() method to retrieve request headerssecret parameter to Webhook create and update methodsx OAuth provider to OAuthProvider enumuserType field to Log modelpurge parameter to updateCollection and updateTable for cache invalidationKey, KeyList, Project, DevKey, MockNumber, AuthProvider, PlatformAndroid, PlatformApple, PlatformLinux, PlatformList, PlatformWeb, PlatformWindows, BillingLimits, BlockPlatformType, ProtocolId, ServiceIdBuildRuntime, Runtime enums with dart-3.11 and flutter-3.41Scopes enum with keysRead, keysWrite, platformsRead, platformsWriteX-Appwrite-Response-Format header to 1.9.1[BREAKING] Changed $sequence type from int to String for Row and Document models
$sequence type from int to String for Row and Document modelsIndexType enum: split into DatabasesIndexType (for Databases) and TablesDBIndexType (for TablesDB)specification parameter with buildSpecification and runtimeSpecification in Functions.create(), Functions.update(), Sites.create(), Sites.update()Project service with full CRUD for project-level environment variablesWebhooks service with full CRUD for project webhooks (including updateSignature)Webhook and WebhookList modelsUsers.updateImpersonator() method for enabling/disabling user impersonationsetImpersonateUserId(), setImpersonateUserEmail(), setImpersonateUserPhone() on Clientimpersonator and impersonatorUserId optional fields to User modeldeploymentRetention parameter to Functions and Sites create/updatestartCommand parameter to Sites create/updateDocumentsdb, Vectorsdb values to BackupServices and DatabaseType enumsWebhooksRead, WebhooksWrite, ProjectRead, ProjectWrite scopesgetQueueBillingProjectAggregation, getQueueBillingTeamAggregation, getQueuePriorityBuilds, getQueueRegionManager, getQueueThreats from Health serviceLog model field descriptions to clarify impersonation behaviorX-Appwrite-Response-Format header to 1.9.0Added ttl parameter to listDocuments
ttl parameter to listDocumentsttl parameter to listRowsAdded optional encrypt parameter to multiple attribute and column creation APIs (default: false) to support encryption at rest in database-related ope
Backups serviceNothing published for this version
Breaking change: Output enum has been removed; use ImageFormat instead.
permissions: List<BrowserPermission>).Output enum has been removed; use ImageFormat instead.getQueueAudits support to Health service.Databases and TablesDB services.Fix boolean parameter not handled correctly in Client requests
Added ability to create columns and indexes synchronously while creating a table
Rename VCSDeploymentType enum to VCSReferenceType
VCSDeploymentType enum to VCSReferenceTypecreateTemplateDeployment method signature: replace version parameter with type (TemplateReferenceType) and reference parametersTheme, Timezone and Output enumsAdd getScreenshot method to Avatars service
getScreenshot method to Avatars serviceTheme, Output and Timezonedart39 and flutter335 runtimesnull values and stripping only non-nullable optional parameters from the request bodyAdd total parameter to list queries allowing skipping counting rows in a table for improved performance
total parameter to list queries allowing skipping counting rows in a table for improved performanceOperator class for atomic modification of rows via update, bulk update, upsert, and bulk upsert operationscreateResendProvider and updateResendProvider methods to Messaging serviceAdd transaction support for Databases and TablesDB
Deprecate createVerification method in Account service
createVerification method in Account servicecreateEmailVerification method in Account service* Add orderRandom query support
orderRandom query supportRename CreditCard enum value unionChinaPay to unionPay
CreditCard enum value unionChinaPay to unionPayDeprecated updateMagicURLSession
notContainsnotSearchnotBetweennotStartsWithnotEndsWithcreatedBeforecreatedAfterupdatedBeforeupdatedAfterupdateMagicURLSessionupdatePhoneSessionThe TablesDB service is the new recommended way to work with databases. Existing databases/collections/attributes/documents can be managed using the TablesDB service. Existing Databases service will continue to work, but new features may only be added to the TablesDB service.
Add incrementDocumentAttribute and decrementDocumentAttribute support to Databases service
incrementDocumentAttribute and decrementDocumentAttribute support to Databases serviceencrypt support to string attribute modelsequence support to Document modelAdd gif support to ImageFormat enum
gif support to ImageFormat enumdart38 and flutter332 runtimesupsertDocument() method to Databases serviceconvertTo() method in Document and Preferences models to correctly accept Map<String, dynamic>upsertDocuments() method to have documents attribute as required parameterAdd to doc examples due to the new multi region endpoints
<REGION> to doc examples due to the new multi region endpointscreateDocuments, deleteDocuments etc.Sites serviceTokens serviceBuildRuntime , Adapter, Framework, DeploymentDownloadType and VCSDeploymentTypetoken param to getFilePreview and getFileView for File tokens usagequeries and search params to listMemberships methodruntimes with Pythonml312, Dart219, Flutter327 and Flutter329search param from listExecutions methodNothing published for this version
Nothing published for this version
Changed the typing of AppwriteException's response parameter from a dynamic object to an optional string (?String).
AppwriteException's response parameter from a dynamic object to an optional string (?String).Fixed issues with chunkedUpload method.
chunkedUpload method.List<dynamic> was incorrectly causing runtime type errors.updateMfaChallenge() from raw data to properly typed models.Session object.Nothing published for this version
Nothing published for this version
Nothing published for this version
You can find the new syntax for breaking changes in the Appwrite API references. Select version 1.6.x.
key attribute to Runtime response model.buildSize attribute to Deployments response model.scheduledAt attribute to Executions response model.scopes attribute to Functions response model.specifications attribute to Functions response model.Specifications.Builds.createJWT() : Enables creating a JWT using the userId.listSpecifications(): Enables listing available runtime specifications.deleteExecution() : Enables deleting executions.updateDeploymentBuild(): Enables cancelling a deployment.scheduledAt parameter to createExecution(): Enables creating a delayed executionotp parameter from deleteMFAAuthenticator.scopes parameter for create/update function.templateBranch to templateVersion in createFunction().downloadDeployment() to getDeploymentDownload()You can find the new syntax for breaking changes in the Appwrite API references. Select version 1.6.x.
Please note: This version is compatible with Appwrite 1.6 and later only. If you do not update your Appwrite SDK, old SDKs will not break your app. Appwrite APIs are backwards compatible.
Nothing published for this version
Nothing published for this version
* Minor bugfixes
Fixed MSG91 missing template ID
Fixed parameters using enum types
Added messaging service support
Nothing published for this version
Nothing published for this version
* Add new queue health endpoints * Fix between queries
Parameter url is now optional in the createMembership endpoint
url is now optional in the createMembership endpointruntime is now optional in the update endpoint of the Functions classAdded a new label function to the Role helper class
label function to the Role helper class* Added documentation comments * Added unit tests * Upgraded dependencies
Added support for new queries: isNull, isNotNull, startsWith, notStartsWith, endsWith, between and select.
isNull, isNotNull, startsWith, notStartsWith, endsWith, between and select.execute parameter to optionalupdate to updateNameAccount service to use the User model instead of AccountDeprecated InputFile default constructor and introduced InputFile.fromPath and InputFile.fromBytes for consistency with other SDKs
InputFile default constructor and introduced InputFile.fromPath and InputFile.fromBytes for consistency with other SDKs* Support for GraphQL
* Role helper update
read and write permission have been deprecated and they are now included in the permissions array
x-sdk-name, x-sdk-platform, x-sdk-language, x-sdk-versionstdout attributecreateBucket now supports different compression algorithmsdatabaseId is no longer part of the Database Service constructor. databaseId will be part of the respective methods of the database service.Users.create() method signature has now been updated to include a phone parametercolor attribute is no longer supported in the Avatars Servicenumber argument in phone endpoints have been renamed to phonelimit, offset, cursor, cursorDirection, orderAttributes, orderTypes as they have been moved to the queries arrayread and write permission have been deprecated and they are now included in the permissions arraypermission for collections and buckets are now renamed to documentSecurity & fileSecurity respectivelylesser renamed to lessThanlesserEqual renamed to lessThanEqualgreater renamed to greaterThangreaterEqual renamed to greaterThanEqualFull Changelog for Appwrite 1.0.0 can be found here: https://github.com/appwrite/appwrite/blob/master/CHANGES.md
Nothing published for this version
Nothing published for this version
* Dependency upgrades * Doc comments updates * Cleanup code
Your coding agent can read these notes before it upgrades. Set up the MCP server →