Zulip 10.0: Organized chat for distributed teams

We’re excited to announce the release of Zulip Server 10.0, containing hundreds of new features and bug fixes!
Zulip
is an open-source team chat application designed for seamless remote and hybrid
work. With conversations
organized by topic, Zulip is
ideal for both live and asynchronous
communication. Zulip’s 100% open-source software is available as a
cloud service or a
self-hosted solution, and is used by
thousands of organizations around the world.
Zulip Server 10.0 is a major release, with over 5,200 new commits merged across the project since the 9.0 release in July 2024. Notable new features include flexible permissions management, a new “general chat” experience for messages without a topic, fine-grained font size and line spacing options, and much more! A total of 121 people contributed commits to Zulip since the 9.0 release, bringing the project to over 1,500 code contributors. Zulip is remarkable for its number of major contributors, with 94 people who’ve contributed 100+ commits.
Huge thanks to everyone who’s contributed to Zulip over the last several months, whether by writing code and documentation, reporting bugs, suggesting features, translating, supporting us financially, participating in discussions in the Zulip development community, or just suggesting ideas! We could not do this without the hundreds of people giving back to the Zulip community.
Project highlights
Today marks a release of the Zulip server and web application. We’d also like to share news and updates for the project as a whole since the 9.0 release last July:
Apps
The Zulip mobile apps for Android and iOS reached a major milestone in December: the general beta release of the next-generation Zulip mobile app, built with Flutter. The Zulip core team has been using the new app almost exclusively for months, and it’s a major upgrade — much faster, a fresh new design, and full multi-account support. If you use Zulip on mobile, we hope you’ll try switching over (don’t worry, you can keep the non-beta app installed just in case) and let us know what you think.
Zulip Desktop 5.12.0 was released last week. New versions of the desktop app often contain important security or OS compatibility fixes from the upstream Chromium project. To keep your app secure, be sure to leave automatic updates enabled (on by default), or promptly upgrade after new security releases.
Zulip Terminal added support for collaborative to-do lists.
Learning about Zulip
-
In the course of working on Zulip, we’ve talked to hundreds of people about the team communication apps they use. We’ve distilled our understanding into a guide on choosing the best team chat app for your business. It’s the advice we’d give to a friend asking how to choose a SaaS team chat app.
-
A new case study describes how Zulip makes it easy for the Rush Stack community to provide support for mission-critical enterprise tools.
“Of all the apps I tested, Zulip’s approach stood out as the best fit for how we work.”
— Rush Stack maintainer Pete Gonzalez
-
Zulip is in the top 5 highest-rated products for its category on review sites like Capterra, AlternativeTo, and SoftwareReviews. Thanks to our amazing user community for sharing your experience with Zulip!
-
You can listen to an hour-and-a-half interview with Zulip’s head of product on The Changelog podcast: “We talk about Zulip’s origins, how it’s open source, the way it’s led, no VC funding, what makes it different/better, how you can self-host it or use their cloud, moving to Zulip, contributing and being a part of the community…all the things.”
-
Check out the 2024 year in review blog post for some fun facts and highlights.
Mentorship
2024 was the ninth consecutive year that Zulip participated in Google Summer of Code, and our 17 GSoC 2024 participants built many of the features described in this post. We’re delighted that many have continued as major contributors since the end of the official program, and are looking forward to welcoming the next cohort of GSoC participants this summer.
“Seeing code authored by me get merged upstream and used by thousands of users is a feeling I find hard to articulate well — it is to be experienced firsthand.”
— Kislay U. Verma, Google Summer of Code 2024 participant
Our blog post on how to make reviewing pull requests a better experience was featured on OpenSource.net.
Sponsorships
We proudly sponsor free Zulip Cloud Standard hosting for more than 1,500 open-source projects, non-profits, educational institutions, and academic research groups. All eligible organizations are encouraged to join this program, or sign up for the Community plan for self-hosted organizations.
Release highlights
This section gives an overview of the major features and improvements in Zulip Server 10.0.
Alongside these major changes, this release contains hundreds of refinements beyond what can be described here, including design improvements throughout the UI.
We believe that getting the little details right makes a big difference in a product that’s so central to people’s daily work. To make Zulip a joy to use, we relentlessly fine-tune the user experience, and consider it a priority to investigate and fix even minor bugs.
Flexible permissions management with roles and user groups
In this release, we’re rolling out a new, incredibly flexible system for permissions management. With it, you can:
- Configure the permissions you want, granting them to any combination of
roles (e.g., Moderators), groups, and
individual users. For example:
Express your organization’s structure with groups, which now can include other groups, in addition to individual users. For example, the managers group could be made up of engineering-managers, design-managers, etc.
- Decide how to manage each channel: centralized, self-managed, or anywhere in between.
Check out this walkthrough of how to start using the new functionality to make it easier to manage your organization, and see below for a detailed look at the new settings.
If you’re an engineer, you may be interested in the deep-dive into how we seamlessly transitioned thousands of organizations to a group-based permissions system in a performance-sensitive application.
New “general chat” experience for messages without a topic
Zulip’s topics help you keep conversations organized, but not everything has to be organized. You might:
- Have a one-off request or social chatter you don’t plan to refer back to.
- Have a low-traffic channel that doesn’t require another level of organization.
- Feel uncertain about starting a topic as someone who’s new to Zulip.
In these kinds of situations, you can now send messages to a special “general chat” topic simply by not entering a topic name. The “general chat” topic is labeled in italics, and the label is translated into each user’s language.
Organization administrators can configure whether topics are required in channel messages.
Fine-grained font size and line spacing options
You can now choose from a wide range of font size and line spacing options, to make the Zulip interface feel most comfortable for you. These options give you finer control than zooming in and out with your browser.
Improved user list
The user list now has a dedicated section that shows recent participants in the conversation you’re viewing.
- There’s a new option to show avatars in the user list, which can be configured directly from a menu in the sidebar.
- Availability indicators now have a more modern look, and there are a number of other design improvements.
Easier to link to Zulip content
Linking to Zulip from anywhere:
- When you link to a Zulip topic, the link will now work even when the topic is renamed, moved to another channel, or resolved. Previously, only links to messages and channels were permanent.
- When you paste a Zulip link anywhere that accepts HTML formatting (e.g., your email, GitHub, docs, etc.), the link will be automatically converted into the standard Zulip format (e.g., #channel > topic).
Linking within Zulip:
- When you paste a Zulip
message link
into the compose box, it’s now automatically converted into a nicely formatted
link (e.g.,
#**announce>Zulip updates@2108657**
for https://chat.zulip.org/#narrow/channel/1-announce/topic/Zulip.20updates/near/2108657). Previously, this only worked for topic and channel links. It’s now easier to link to a topic within Zulip: simply enter a channel, then choose the topic you wish to link to from the typeahead (no “>” required). Links in the channel you’re composing to now don’t require typing its name.
Improved experience for composing messages
You can now save snippets of message content that you can quickly insert into the compose box.
- Newly added “New topic” and “New direct message” buttons in the left sidebar make it convenient to start a new conversation from wherever you are.
It’s now simpler to create a collaborative to-do list, using a new compose box widget.
- A new “Forward message” option makes it easy to forward a message (or a selected part) to another conversation.
Improved reading experience
- When you go to a new view, it now loads almost instantly in the vast majority of situations, due to improvements in how the web and desktop apps process and store messages.
You’ll now see a typing notification when someone is editing a message, not just when they are writing a new message.
- You can now see long channel descriptions in full by hovering over the description in the navbar at the top of your view. This is especially handy for descriptions used to pin links to docs, key topics, etc.
- Long topic names are now shown on two lines in the left sidebar.
Improved user onboarding
- A new Welcome to Zulip video helps new users learn where to find everything they need to get started. Self-hosted organizations can provide their own introductory video.
- Zulip’s comprehensive help center guides users through their onboarding experience, and provides all the information users need to dive deeper into Zulip’s capabilities. In this release, we added or updated 150 pages of documentation.
Powerful group management options
-
You can now configure a comprehensive set of user group permissions:
- Who can create groups
- Who can administer all groups, and which additional users can administer each group
- Who can join the group, and who can add other members
- Who can leave the group, and who can remove other members
-
All the new configurations can be managed from the group settings panel, which now has dedicated tabs for general configurations, group members, and the group’s permissions.
-
The new group permissions tab lets administrators review all the permissions that a group has (for groups, channels, and the organization as a whole), and adjust them.
-
You can now add users to groups when you invite them to Zulip, and manage a user’s group memberships from their profile.
-
Group deletion has been replaced with deactivation, so Zulip’s audit logs will maintain a complete history of permissions changes. You can now view and manage deactivated groups in group settings.
Convenient channel management
- New channel permission settings let administrators delegate channel
management responsibilities. There are settings for
who can administer
each channel, and who can
subscribe and
unsubscribe
other users.
- You can now give users
and groups permission to read and subscribe to a
private channel,
just like everyone other than guests can do with public channels.
- You can now configure who can resolve topics, separately from permissions to move messages.
- There’s a new option to allow viewing message moves but not message edits.
- Users can now find messages in archived channels (if they are allowed to view them). You can now view and manage archived channels in channel settings, and hide channel content if you don’t want it to be visible.
Integrations
- A new Server to Server OAuth Zoom integration makes it convenient for self-hosted servers to set up calling under Zoom’s current App Marketplace policies.
- The BigBlueButton calling integration now supports voice-only calls, in addition to video calling.
- When sending Zulip messages from your email, you can now configure whether the sender will be the Email Gateway bot, you, or a bot you own.
- We’ve added integrations with Airbyte and Onyx, and improved the GitHub, GitLab, GoCD, Linear, NewRelic and Slack integrations.
- Git integrations (e.g., GitHub, GitLab, etc.) now let you configure which branches you’ll receive notifications from directly in the UI for generating the webhook URL. You can also decide whether to exclude notifications from private GitHub repositories.
- Setup instructions for dozens of integrations have been updated and simplified.
AI integrations
This release includes a beta topic summarization feature, which self-hosted organizations can set up with a model of their choice. This feature is not yet available on Zulip Cloud.
Server
- Zulip now supports uploading arbitrarily large files using the TUS
chunked-upload protocol. To allow larger uploads on your server,
update
the
MAX_FILE_UPLOAD_SIZE
setting. - The presence synchronization protocol has been optimized to use dramatically less network and CPU resources in large organizations.
- You can now configure whether users in your organization can edit custom profile fields for their own account. For example, you may want to restrict editing fields that you sync from an employee directory.
- You can now sync user roles with the SCIM integration.
- Personal Microsoft accounts are now supported in the Microsoft Entra ID (formerly AzureAD) authentication backend.
- When installing a new Zulip server, you can now decide whether to automatically register it for the Mobile Push Notification Service. There’s also a new automated flow for transferring a domain’s registration to a new server, even if the secrets have been lost.
Upgrading
We highly recommend upgrading to Zulip Server 10.0 to take advantage of the hundreds of improvements in this release.
We work hard to make sure that the upgrade process Just Works. If you have any questions or problems with your upgrade process, best-effort community support is available in the Zulip development community. For professional support, upgrade to Zulip Business, or reach out to sales@zulip.com.
Zulip Cloud is always up to date with the latest Zulip improvements.
Product roadmap
We’re continuing to focus on improving the design of the Zulip web app, and shipping a next-generation mobile app for Android and iOS.
We use project boards to publicly track goals for major server and mobile releases. These boards are updated on an ongoing basis as priorities evolve, and many community improvements integrated into Zulip are never specifically tracked as release goals.
Release schedule
This release is coming out about eight months after the Zulip Server 9.0 release last July. That’s longer than we initially planned, as we delayed this release in order to complete a smooth transition to the new flexible permissions management with groups. We’re targeting a shorter interval for the next major release, which is expected in July 2025.
New mobile app
The new Flutter-based mobile app will roll out to all users when it’s ready to exit beta. We’re now implementing a few remaining critical features, and plan to do the rollout in the next few months.
Community
Thanks again to the amazing global Zulip development community for making this possible!
If you appreciate Zulip, please recommend it to someone you know, for work or any other collaborative endeavor. If they say that Zulip won’t work for them, let us know why! Your feedback is a vital part of how we design and prioritize improvements to Zulip.
— Tim Abbott, Zulip project leader
P.S. We’re hiring! If you know an awesome go-to-market leader with startup experience or an amazing designer, please send them our way.
Non-code contributions
Our community translators have been hard at work keeping up with the product as it evolves. This release features translations that cover the majority of non-error strings in 25 languages.
We would like to thank the following folks for their non-code contributions. Please fill out this form if you’d like your name to be added, and keep an eye out for future announcements to get listed next time.
- Andrea Soc (Italian translation; feature suggestions including saved snippets, always showing a filter box in the user list, resolved topics, sorting recent conversations by message count)
- Arusekk (Polish translation)
- Breno Peres
- Flammie A Pirinen
- Ghazi Triki (Upgrade process debugging)
- Lev Shereshevsky (Russian translation)
- Pavel Fric (Finnish translation)
- soappp (Japanese translation)
- Yidan Wang (Chinese Simplified translation)
Code contributions
What follows is a summary of the commits contributed to Zulip during the 10.0 release cycle.
$ ./tools/total-contributions 10.0
438 Greg Price
422 Evy Kassirer
363 Anders Kaseorg
310 Karl Stolley
295 Sahil Batra
292 Aman Agrawal
245 Alex Vandiver
242 Shubham Padia
240 Zixuan James Li
230 Prakhar Pratyush
216 Tim Abbott
209 Chris Bobbe
208 Lauryn Menard
174 Alya Abbott
131 Sayam Samal
103 Niloth P
88 Rajesh Malviya
81 Mateusz Mandera
64 Maneesh Shukla
63 Apoorva Pendse
55 PieterCK
49 Sanchit Sharma
45 Steve Howell
44 Kunal Sharma
41 Pratik Chanda
37 Kumar Aniket
34 Varun Singh
32 Khader M Khudair
31 Sayed Mahmood Sayedi
29 Harsh Meena
28 Kislay Verma
27 Aman Vishwakarma
25 Saubhagya Patel
24 afeefuddin
19 Rohan Gudimetla
18 Aditya Kumar Kasaudhan
16 Joseph Ho
14 Bedo Khaled
14 Kenneth Rodrigues
14 Sourabh Patel
11 Harsh Bansal
11 Ujjawal Modi
10 Sujal Shah
10 lakshya1goel
9 Aditya Chaudhary
9 Adnan Shabbir Husain
9 Vishesh Singh
9 Sashank Ravipati
7 Emil Grehn
6 Tanmay Kumar
6 ubaidrmn
6 Hanson
6 Mikael Schirén
5 ahmedgulabkhan
5 Gaurav-Kushwaha-1225
3 Anushrut pandit
3 Jaimin Godhani
3 Kartikay Sambher
3 Ritwik Patnaik
3 kash2104
3 Tomlin7
2 Abhay Upadhyay
2 Gunnar Samuelsson
2 ImDooMLorD
2 Jitendra Kumar
2 Klara Brrettby
2 Vivek Tripathi
2 Vlad Korobov
2 qnhn22
2 K Akhil
2 Rishi Chirchi
2 Shivansh Sharma
2 chimnayajith
2 Guspan Tanadi
2 neiljp (Neil Pilgrim)
1 AJ Kerrigan
1 Aarya Patil
1 Abel Abate
1 Alex Dehnert
1 Aravind
1 Benjamin Masters
1 David Flanagan
1 Giovanni Silva
1 Ikko Eltociear Ashimine
1 Inge
1 Jenna Jaehnig
1 Johan Nilsson
1 Kartikay Nusture
1 Lalit Kumar Singh
1 Nehal Sharma
1 Niamh
1 Nicklas Steen
1 Pierre Carru
1 Quan Nguyen
1 Rahul Rajesh Kumar
1 Simon Michalke
1 Yaswanth Kosuru
1 aniebietafia
1 arthurzengg
1 bao-qian
1 codewithnick
1 crab
1 debghs
1 dinesh-gaire
1 lumpleme
1 minhphung152
1 oscar
1 shivam_sharma
1 swayam0322
1 LongCatIsLooong
1 Sam Rawlins
1 Victor Sanni
1 Yash Kumar
1 Alessandro Ogier
1 Florent Lévigne
1 Igor Loskutov
1 Isaac van Bakel
1 sev
1 mpagler
1 Chris
1 Gabriel Scherer
Commit range 9.0..main corresponds to 2024-07-25 to 2025-03-20
4019 commits from zulip/zulip: 9.0..main
1040 commits from zulip/zulip-flutter: c17dd0efd192..2117fe176aa7
49 commits from zulip/docker-zulip: ef3a379351cf..619cf223537b
33 commits from zulip/zulip-mobile: 2217c858e207..4d9d46d7f852
33 commits from zulip/zulip-desktop: 92260b0f97b5..15902e51f6ce
20 commits from zulip/python-zulip-api: e9d8ef3b272c..8c273311de70
23 commits from zulip/zulip-terminal: 743db7d8d0ef..23a773c387ed
3 commits from zulip/zulip-js: db9b0e4f7535..cee33876ce49
1 commits from zulip/zulint: a070f3a349bc..9be0a32bf75a
1 commits from zulip/zulip-archive: 5ff607209cbd..663518053b8f
Excluded 1 commit authored by bots.
5221 total commits by 121 contributors between 9.0 and main.