Skip to content

fix: release Android 31.0.1 with isolated realtime clients - #146

Merged
ChiragAgg5k merged 10 commits into
mainfrom
dev
Oct 23, 2026
Merged

ChiragAgg5k merged 10 commits into
mainfrom
dev

Conversation

@ChiragAgg5k

@ChiragAgg5k ChiragAgg5k commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Realtime connections previously used process-wide mutable state, allowing separate Clients to share sockets, subscriptions and callbacks. Android 31.0.1 gives each Client its own connection and keeps cancellation scopes independent between wrappers sharing that Client. Realtime handshakes now use the configured JWT header.

Generated from Cloud with sdk-generator 5.13.14, including appwrite/sdk-generator#2139 and #2140. Java and Kotlin examples leave unset optional strings as null and preserve explicit string "0" examples.

Regeneration also refreshes dependencies/build tools and API metadata (x-appwrite-response-format: 2.6.1). Client service signatures and model shapes remain unchanged; both the previous 2.5.0 header and the new header use the same Cloud compatibility-filter path.

Validation:

  • Release AAR build, Android lint and 37 unit tests passed on JDK 17.
  • Direct JUnit regression against real WebSocket backends passed: separate endpoints, same endpoint/project with different JWTs, same-client reuse, presence/callback/reconnect/disconnect isolation and cancellation/recreation.
  • Generated output passed ktlint; Maven POM declares io.appwrite:sdk-for-android:31.0.1.
  • Runtime source is byte-for-byte identical after the final 5.13.14 regeneration; that follow-up changes examples.
  • Canonical generator fix passed all 61 CI checks and Hansi Tier S before merge.

Closes #102.
Cloud release metadata: https://github.com/appwrite-labs/cloud/pull/6910.

@hansi-codes

hansi-codes Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

🟢 Tier S · Ready to merge

This Android SDK 31.0.1 update refreshes API metadata and response headers, Gradle and dependency versions, and release documentation. It also scopes realtime connection state per client and sends the configured JWT in WebSocket handshakes. Java and Kotlin examples now use null for unset optional strings while retaining explicit zero-valued examples.

Latest changes: The newest commits update Java and Kotlin OAuth and storage examples to pass null for unset optional string parameters, and record the example fixes in the changelog while preserving explicit zero values.

Verdict New comments Fixed Still open
✅ Approved 0 1 0
📂 Walkthrough · 14
File Change
CHANGELOG.md Adds 31.0.1 release notes covering SDK fixes and updated API metadata.
README.md Refreshes SDK version examples and supported Appwrite server version.
build.gradle.kts Updates Android Gradle plugin versions.
docs/examples/java/oauth2/authorize-post.md Omits unset OAuth response type in the Java POST example.
docs/examples/java/oauth2/authorize.md Omits unset OAuth response type in the Java authorization example.
docs/examples/java/storage/update-file.md Omits the unset file name when updating permissions.
docs/examples/kotlin/oauth2/authorize-post.md Omits unset OAuth response type in the Kotlin POST example.
docs/examples/kotlin/oauth2/authorize.md Omits unset OAuth response type in the Kotlin authorization example.
docs/examples/kotlin/storage/update-file.md Omits the unset file name when updating permissions.
example/build.gradle.kts Updates example app dependencies.
gradle/wrapper/gradle-wrapper.properties Updates the Gradle wrapper distribution version.
library/build.gradle.kts Refreshes library dependency versions.
library/src/main/java/io/appwrite/Client.kt Updates response-format metadata and keeps realtime state isolated per client.
library/src/main/java/io/appwrite/services/Realtime.kt Shares realtime state among wrappers for a client and uses the configured JWT in WebSocket handshakes.
✅ Fixed since the last review · 1
  • Use null to omit the optional file name · docs/examples/java/storage/update-file.md:22

Reviewed the commits since cd22bc8 · 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

@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 · Looks good to merge. Summary

@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 S · Looks good to merge. Summary

@ChiragAgg5k ChiragAgg5k changed the title feat: Android SDK update for version 31.0.1 fix: release Android 31.0.1 with isolated realtime clients Oct 23, 2026
@ChiragAgg5k
ChiragAgg5k merged commit 4095416 into main Oct 23, 2026
1 check 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.

Realtime only has a single socket even with different endpoints

2 participants