Repository navigation
Scheduled messages (4/4): Scheduled Messages Demo App - #4365
Merged
Merged
Conversation
|
Caution Review failedThe pull request is closed. Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Oct 26, 2026
Generated by 🚫 Danger |
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 26, 2026 17:29
8e46563 to
c0a956c
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
from
October 26, 2026 17:29
be1bb81 to
3c3237a
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 26, 2026 17:50
c0a956c to
70901a7
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
2 times, most recently
from
October 26, 2026 18:05
93cf328 to
6d5d8a3
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
2 times, most recently
from
October 26, 2026 18:41
d7f2189 to
7ccbd09
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
2 times, most recently
from
October 26, 2026 18:49
3c46fb4 to
2b638a0
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
2 times, most recently
from
October 26, 2026 19:29
d210bf1 to
3d2e9d6
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
2 times, most recently
from
October 26, 2026 19:49
8625ad5 to
bdc4285
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 26, 2026 19:49
3d2e9d6 to
8708d5e
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
from
October 26, 2026 20:17
bdc4285 to
fecbfba
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 26, 2026 20:18
8708d5e to
f403eda
Compare
3 of 6 tasks
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 26, 2026 20:28
f403eda to
b50305a
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
from
October 26, 2026 20:28
fecbfba to
2681d40
Compare
laevandus
reviewed
Oct 27, 2026
| "\(dayString(from: date, now: now, calendar: calendar)) at \(timeString(from: date))" | ||
| } | ||
|
|
||
| static func separatorString(from date: Date, now: Date = Date(), calendar: Calendar = .current) -> String { |
Member
Author
There was a problem hiding this comment.
Right, separatorString was left over from an earlier version of the scheduled list. Removed it and made timeString private, since only the formatter uses it: 29ccbcde9
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 27, 2026 15:18
b50305a to
faa8d50
Compare
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
from
October 27, 2026 15:18
2681d40 to
214d9df
Compare
Add ScheduledMessageList and ScheduledMessageListState, created with ChatClient.makeScheduledMessageList(with:), and async methods on Chat to schedule, update, reschedule, delete and send now scheduled messages and replies.
Without a next cursor, loadMoreScheduledMessages() requested the first page again. It now returns an empty array.
Like the controllers, scheduling, editing, rescheduling and resending save the changes locally and return. The server answers later on the scheduled message, unlike sendMessage, which waits for it.
…e sent Like the controllers, sending now marks the message locally and does not wait for the server.
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
from
October 28, 2026 18:58
39234c8 to
400a2f7
Compare
Long press the send button to schedule a message, like in Slack. A banner above the composer shows how many messages are scheduled in the channel or thread, and a scheduled message can be edited in the composer. The Scheduled tab lists the scheduled messages of every channel, pending ones first, with swipe actions to send now, reschedule, retry or delete them. The feature is enabled on the US East staging app.
Use ScheduledMessageFailure and the failure of a scheduled message, receive the updated scheduled messages in the list controller delegate, and pass extraData last when scheduling.
- Show the scheduling confirmation once the server accepts the message, and a red error toast with the reason when it rejects it - Create the composer's scheduled message list controller on set up - Describe each rejection reason, with a generic text for unknown ones - Offer scheduling for commands, so the SDK's local validation is shown - Remove only the quote when closing it while editing a scheduled message
…o app The SDK refuses locally what the server would reject, so the confirmation shows as soon as the message is saved. A later failure of the server shows in the Scheduled list.
nuno-vieira
force-pushed
the
add/scheduled-messages-demo-app
branch
from
October 28, 2026 19:00
5ee16b5 to
0948d96
Compare
Collaborator
SDK Size
|
Collaborator
StreamChat XCSize
Show 71 more objects
|
|
Public Interface🚀 No changes affecting the public interface. |
nuno-vieira
force-pushed
the
add/scheduled-messages-state-layer
branch
from
October 28, 2026 22:09
400a2f7 to
f5b9e52
Compare
Base automatically changed from
add/scheduled-messages-state-layer
to
develop
October 28, 2026 23:26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




🔗 Issue Links
Stacked PRs (review and merge in order):
🎯 Goal
Show how to schedule messages from the composer, like in Slack, and how to list them with
ScheduledMessageListController.📝 Summary
🛠 Implementation
ChatChannelControllerandChatMessageController, and edits a scheduled message in place.includeScheduledMessages, so the banner readsChatChannel.scheduledMessages.DemoScheduledMessageListVCis a SwiftUI list hosted in aUIHostingController, driven by aScheduledMessageListController. Each row shows thestatusand thefailureof the scheduled message, and only offers the actions that apply.🧪 Manual Testing Notes
vfa6gxospjf0 (US East Staging), then log in as Alice.☑️ Contributor Checklist
docs-contentrepo🤖 Generated with Claude Code