Hey ๐, Sayed Mahmood Sayedi here. This is the summary of all the work I did while contributing to the new Zulip mobile client, zulip-flutter, as part of the Google Summer of Code 2025. My work primarily involved adding new features and addressing high-priority issues, related to launch and early post-launch milestones.
What is Zulip?
Zulip is an open-source chat application that combines the immediacy of real-time chat with an email threading model. With Zulip, you can always focus more on important conversations than finding an important message in a mountain of messages.
Title: New Zulip client using Flutter
Size: Large (350+ hrs)
Organization: Zulip
Repository: zulip-flutter
Mentor: Chris Bobbe
Contributor: Sayed Mahmood Sayedi
-
#1530 โ Muted users prep
- Adds preparation work to support muted users in the app. It includes API bindings such as getting the list of all muted users and receiving events about muted users.
-
#1629 โ Track user status
- Adds support for tracking user statuses of all users in a realm, including API bindings such as retrieving the list of user statuses and receiving events.
- This also adds the UI elements for displaying user status, which is used in #1702 (Show user status in UI).
-
#1643 โ Android keyboard image support
- Supports adding static images and GIFs straight from the keyboard into the compose box, on Android.
- This also supports pasting images from the keyboard, on Android.
-
#1701 โ Set user status
- Provides support for setting/changing own user status. This adds a button to the profile page, tapping which opens a new page where one can set/change both status emoji and text by editing any of them individually or by choosing from a list of pre-defined statuses.
-
#1702 โ Show user status in UI
- A continuation to #1629 (Track user status), supporting displaying user status in different parts of the app.
- This shows the status emoji besides the user avatar and display name in several places, such as in the message list, recent-DMs page, new-DM page, and user-mention autocomplete results.
- This also shows both status emoji and status text in the profile page.
-
#1706 โ Show read receipts
- Adds a new option button to the message action sheet, tapping which opens a new bottom sheet, displaying read receipts of the message (users who have read the message).
-
#1762 โ "Copy link to topic" in topic action sheet
- Adds a new option button to the topic action sheet, tapping which copies the topic permalink to the system clipboard.
-
#1766 โ "Copy link to channel" in channel action sheet
- Adds a new option button to the channel action sheet, tapping which copies the channel link to the system clipboard.
-
#1778 โ lightbox: Make image zoom 10x instead of the default (2.5x)
- To provide a better view of the little details in images, this adds support for zooming in images up to 10x (compared to 2.5x before), which could specifically be helpful in high-res images.
-
#1795 โ internal_link: Generate new narrow links with "channel", not "stream"
- Supports generating new narrow links with "channel" keyword instead of the legacy "stream".
- This replaces the "stream" keyword with "channel" in other APIs too, where applicable.
-
#1800 โ Set status page adjustments
- Adds some UI-design-wise tweaks to "Set status page", such as changing some margins, removing status-suggestion touch feedback, and fixing content rendering in landscape mode.
- #1429 โ Distinguish muted users in UI (closed in favor of #1560 and #1561)
- #1755 โ deps: Upgrade Flutter to 3.33.0-1.0.pre.1149 (closed in favor of #1763)
- #1784 โ On launch, go to the last visited account
- Supports going to the last visited account from the list of accounts on the device, instead of always going to the first one.
- This also adds support for sharing content from other apps to the last-visited account on Zulip, instead of always sharing to the first one.
As there is still one PR open (under review), I intend to continue working on that to get it merged.
Participating in GSoC with Zulip for the second year has been one of the most rewarding parts of my professional journey so far. The guidance I received gave me both technical growth and the confidence to take ownership of my contributions. Zulipโs clear documentation and welcoming communication style made it easy to collaborate and feel part of something meaningful. These two years have left me with valuable skills and fond memories, and I look forward to continuing my journey by giving back to the community that has supported me so much.
I want to thank Google and Zulip from the bottom of my heart, for believing in me the second time and giving me this golden opportunity to be part of this program and work on such an interesting project. I want to give special thanks to Greg Price and my amazing mentor Chris Bobbe, for their mentorship and guidance. I greatly appreciate their patience and support throughout. It was a blessing to learn from them and gain insightful knowledge of programming and software engineering in general.
I had a lot of fun during my summer at Zulip and I hope to stay involved in the project after the program too. There is a lot of work left to do to make the Zulip Flutter client more feature-rich. Apart from this, a large portion of issues that I initially planned to work on during GSoC got pushed back due to other issues getting top priority. I will try to pick up those issues and help in getting the app shipped with new features. I will also help newbie contributors in getting started with the project and make them feel at home, the way I felt in my early days with the help of the amazing maintainers of the project.
Check out my GSoC 2024 work with Zulip here.

can you give me the your selected proposal link.