Skip to content

Add Presence API announcement, docs, and changelog#3010

Open
adityaoberai wants to merge 25 commits into
mainfrom
add-presence-api-docs
Open

Add Presence API announcement, docs, and changelog#3010
adityaoberai wants to merge 25 commits into
mainfrom
add-presence-api-docs

Conversation

@adityaoberai
Copy link
Copy Markdown
Contributor

What does this PR do?

(Provide a description of what this PR does.)

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)

Related PRs and Issues

(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)

Have you read the Contributing Guidelines on issues?

(Write your answer here.)

@appwrite
Copy link
Copy Markdown

appwrite Bot commented May 19, 2026

Appwrite Website

Project ID: 69d7efb00023389e8d27

Sites (1)
Site Status Logs Preview QR
 website
69d7f2670014e24571ca
Failed Failed View Logs Preview URL QR Code

Website (appwrite/website)

Project ID: 684969cb000a2f6c0a02

Sites (1)
Site Status Logs Preview QR
 website
68496a17000f03d62013
Queued Queued View Logs Preview URL QR Code


Tip

Git integration provides automatic deployments with optional PR comments

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 19, 2026

Greptile Summary

This PR adds a full announcement, documentation, and changelog entry for the new Appwrite Presence API — a first-class resource for tracking short-lived user statuses with built-in Realtime broadcast, automatic expiry, and permission-aware subscriptions.

  • Blog post (announcing-presence-api) introduces the API, correctly seeds the initial onlineUsers map with presences.list() before subscribing, and uses the right presences.*.delete wildcard event format throughout.
  • Reference docs (docs/apis/realtime/presence) provide comprehensive per-SDK examples for upsert, get, list, update, delete, and subscribe operations; the subscribe snippets now use the correct presences.*.* wildcard form, and all channel-table descriptions consistently list upsert, update, and delete (no stale create events).
  • Auth guide (docs/products/auth/presence) and channels reference additions are consistent with the reference page; the heartbeat setStatus helper correctly calls presences.upsert() to slide expiresAt forward.

Confidence Score: 4/5

Safe to merge; the documentation is comprehensive and the issues raised in previous review rounds appear to be addressed in the current iteration.

The subscribe examples now use the correct wildcard event format throughout, the heartbeat helper calls upsert() instead of update() so expiresAt slides forward as documented, and the channel tables consistently list upsert/update/delete with no stale create references. The remaining open questions from prior threads (ID.unique() reuse pattern, update()-event semantics) are still present in the content but were pre-existing discussion points — they do not introduce new wrong behavior in the current diff. No new functional defects were identified.

src/routes/docs/apis/realtime/presence/+page.markdoc is the largest new file and deserves a final human read-through; the other files are straightforward additions.

Important Files Changed

Filename Overview
src/routes/docs/apis/realtime/presence/+page.markdoc New 1891-line reference page for the Presence API; subscribe examples and event format now use correct presences.. wildcard form; channel table descriptions are consistent (upsert/update/delete, no stale create); previously flagged ID.unique() and update()-event issues from prior threads remain in the previous-threads log
src/routes/blog/post/announcing-presence-api/+page.markdoc Announcement blog post; now correctly seeds onlineUsers with presences.list() before subscribing; event list in bullets (upsert/update/delete) matches the reference page; ID.unique() inline-in-upsert pattern still present (previously flagged)
src/routes/docs/products/auth/presence/+page.markdoc Auth-section guide for Presence; heartbeat setStatus now correctly calls presences.upsert() (not update()); subscribe examples use presences.*.delete wildcard correctly; list()+subscribe two-step pattern shown
src/routes/docs/apis/realtime/channels/+page.markdoc Adds presences and presences. channel rows; both now list upsert/update/delete events, consistent with the dedicated presence reference page
src/routes/changelog/(entries)/2026-05-22.markdoc New changelog entry for the Presence API; uses cover.avif consistently with the blog post frontmatter and the static asset added in this PR

Reviews (18): Last reviewed commit: "update code examples to include permissi..." | Re-trigger Greptile

Comment thread src/routes/blog/post/announcing-presence-api/+page.markdoc
Comment thread src/routes/changelog/(entries)/2026-05-22.markdoc
Comment thread src/routes/changelog/(entries)/2026-05-19-2.markdoc Outdated
Comment thread src/routes/changelog/(entries)/2026-05-22.markdoc Outdated
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc Outdated
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc Outdated
@adityaoberai
Copy link
Copy Markdown
Contributor Author

@ArnabChatterjee20k I'm still working on some more updates, will ping on Discord once ready

Comment thread src/routes/blog/post/announcing-presence-api/+page.markdoc Outdated
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc Outdated
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc
Comment thread src/routes/docs/apis/realtime/channels/+page.markdoc Outdated
adityaoberai and others added 2 commits May 19, 2026 22:37
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc Outdated
adityaoberai and others added 2 commits May 19, 2026 22:47
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc Outdated
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc
Comment thread src/routes/docs/products/auth/presence/+page.markdoc
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc Outdated
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc
Comment thread src/routes/docs/apis/realtime/presence/+page.markdoc
Comment thread src/routes/blog/post/announcing-presence-api/+page.markdoc
- Rust `list` code block did not compile: `Query::equal` returns a
  `Query` but `list` expects `Vec<String>`, and `vec!["online".into()]`
  was type-ambiguous. Use
  `Query::equal("status", vec!["online".to_string()]).to_string()`.
- Add the Presence API announcement cover image, optimized to avif.
@adityaoberai adityaoberai force-pushed the add-presence-api-docs branch from bd1f1a9 to 2060e68 Compare May 22, 2026 18:03
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.

3 participants