Skip to content

feat: SDK update for version 27.2.0 - #340

Merged
ChiragAgg5k merged 2 commits into
27.xfrom
release/27.2.0
Oct 13, 2026
Merged

ChiragAgg5k merged 2 commits into
27.xfrom
release/27.2.0

Conversation

@ChiragAgg5k

Copy link
Copy Markdown
Member

This PR contains updates to the SDK for version 27.2.0.

What's Changed

  • Added: analytics.createEvent in a new Analytics service to send tracking events
  • Added: Tracking helper for app lifecycle events and screen views, and TrackingObserver for automatic route tracking
  • Added: avatars.updatePhoto and avatars.deletePhoto to manage the user's custom profile photo, and the Account model
  • Added: Webflow to the OAuthProvider enum
  • Added: optional state on account.createOAuth2Session and account.createOAuth2Token, returned unchanged on the success and failure URLs
  • Added: optional duration on account.createEmailPasswordSession to set the session length
  • Added: optional current on account.deleteSessions to keep the current session signed in
  • Added: optional membershipId on teams.createMembership
  • Added: optional total on account.listSessions, the locale list methods and listTransactions

Patched onto 27.1.0: the diff of the SDK generated with and without these features, three-way merged onto the release. Everything else on the release is unchanged, including its X-Appwrite-Response-Format. membershipId is the last parameter of teams.createMembership, so existing positional calls keep working.

@hansi-codes

hansi-codes Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🟡 Tier B · Needs changes before merging

The previously reported source-compatibility break in the public Client signature remains unresolved.

This release adds analytics event creation and tracking helpers, custom avatar photo management, and the Account model. It also adds optional parameters and OAuth provider support across account, locale, transaction, and team APIs, and updates chunked uploads for the new avatar endpoint.

Latest changes: The latest commit adds a test assertion that avatars.updatePhoto passes PUT as the chunked upload method.

Verdict New comments Fixed Still open
💬 Commented 0 0 1

Note

Not approving while a bug finding is open: This signature breaks downstream Client implementations

Fix with agent prompt
### Issue 1
lib/src/client.dart:44
**This signature breaks downstream Client implementations**

Because `Client` is public, downstream classes that implement it with the previous `chunkedUpload` signature will no longer compile: Dart implementers must accept the newly added named parameter even though it has a default. This makes the 27.2.0 update source-incompatible for custom clients.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
📂 Walkthrough · 8
File Change
CHANGELOG.md, README.md, pubspec.yaml Document and version the 27.2.0 SDK release.
docs/examples/** Add examples for analytics and avatar endpoints and demonstrate the new optional API parameters.
lib/services/account.dart, lib/services/analytics.dart, lib/services/avatars.dart, lib/services/databases.dart, lib/services/documents_db.dart, lib/services/locale.dart, lib/services/tables_db.dart, lib/services/teams.dart, lib/services/vectors_db.dart Add the Analytics service and avatar photo operations, and extend API methods with the new optional parameters.
lib/appwrite.dart, lib/models.dart, lib/src/models/account.dart Export tracking helpers and the Account model, and add the Account response model.
lib/src/client.dart, lib/src/client_browser.dart, lib/src/client_io.dart Support configurable chunked-upload methods and update the SDK version header.
lib/src/enums/o_auth_provider.dart, lib/src/tracking.dart, lib/src/tracking_observer.dart Add the Webflow OAuth provider and lifecycle, event, screen-view, and route tracking helpers.
test/** Update test doubles and add coverage for the new services, models, and avatar operations; the latest commit also verifies photo uploads use PUT.
lib/src/enums/o_auth_provider.dart Add Webflow as an OAuth provider.
⏳ Still open from earlier reviews · 1

Reviewed the commits since 5709514 · Details · Comment @hansi-codes review to re-run, or mention @hansi-codes with a question.

@hansi-codes hansi-codes Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Tier A · See the inline comments. Summary

Comment thread lib/src/client.dart
required String idParamName,
required Map<String, String> headers,
Function(UploadProgress)? onProgress,
HttpMethod method = HttpMethod.post,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This signature breaks downstream Client implementations

Because Client is public, downstream classes that implement it with the previous chunkedUpload signature will no longer compile: Dart implementers must accept the newly added named parameter even though it has a default. This makes the 27.2.0 update source-incompatible for custom clients.

Prompt To Fix With AI
This is a comment left during a code review.
Path: lib/src/client.dart
Line: 44

Comment:
**This signature breaks downstream Client implementations**

Because `Client` is public, downstream classes that implement it with the previous `chunkedUpload` signature will no longer compile: Dart implementers must accept the newly added named parameter even though it has a default. This makes the 27.2.0 update source-incompatible for custom clients.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

🟡 Minor · bug · Reply if this doesn't apply.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keeping this. updatePhoto has to upload with PUT, and adding a named parameter with a default is how the newer SDK line already shapes chunkedUpload, so implementations have to take this step whenever they upgrade. Client is built through its factory; outside test mocks, custom implementations of it are not a supported extension point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is still a source-compatibility break. The factory creates the SDK’s built-in client, but Client is also a public, exported abstract type (client.dart, appwrite.dart), and services accept a Client instance (service.dart). A downstream implements Client using the old signature will no longer satisfy the interface. The default lets callers omit method; it does not provide an implementation for downstream implementers.

Whether custom clients are a supported extension point doesn’t change that compile-time effect. Please preserve the existing Client contract or treat this as a breaking API change.

Comment thread test/services/avatars_test.dart
@ChiragAgg5k
ChiragAgg5k merged commit bf612ae into 27.x Oct 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant