Real-time co-authoring in the Excel Web App: Why and how we did it

This post is brought to you by Micah Myerscough, a Program Manager on the Excel team.

Recently, we released some exciting new features in the Excel Web App. One of the highlights is real-time co-authoring, which can change the way people work together on spreadsheets by allowing simultaneous collaboration. Here’s why we did it and how we made it happen.

What is real-time co-authoring?

You can check out all of the new real-time co-authoring features on SkyDrive and Office 365, but the biggest changes you’ll experience are:

Real-time presence. The ability to see what your collaborators have selected in the spreadsheet and if they’re currently editing a cell.

Real-time data. When someone changes the content, you see the new data immediately.

List of collaborators. At the top right of your screen, a list shows everyone working in the file and lets you click their name to jump to their location.

Figure 1: Real-time presence and co-authoring in Excel Web App.

Why we did it

We’ve heard feedback that customers would really like to see more collaboration features. We did some site visits, met at conferences, and invited people to visit the Microsoft office so we could observe how you use the Excel Web App to collaborate with each other. We found that one of the biggest challenges with collaboration was that it wasn’t easy to discover where other people were working in the workbook. Because of this, content would appear without any indication of the change. To provide a first-class collaboration experience, we knew we needed to solve this problem.

How we did it

To truly understand how co-authoring works today, we need to start with how it used to work. The Excel Web App has had co-authoring for many years, but it hasn’t been real-time. In the past, your browser would communicate with the server using a timer. Depending on how active you were in the spreadsheet, the browser would ask the server for updates anywhere from every few seconds to every few minutes. As a result, you would see the changes eventually, but there could be quite some time between when the other person updated the spreadsheet and when they appeared on your screen. If you were trying to work together with someone else, the speed of these updates just wasn’t fast enough.

Figure 2: Browsers used a timer and only received updates from the server when they asked for them.

To get us to real-time, we added a component on the server that sends notifications to all browsers connected to a workbook each time selection or content changes. This means whenever you type in a cell or move your selection rectangle to a different place, the server immediately sends an update to everyone, and their browsers immediately download the new information. You can think of it like a school ringing the lunch bell once the food is ready so that all of the students know to pick up their meals. This eliminates unnecessary server requests from the browser, since browsers don’t have to ask if there are changes when there aren’t any. It also greatly reduced the amount of time between the update making it to the server and everyone else receiving it, since browsers are notified immediately when a change is available. With these changes, the time it takes to see other collaborators’ updates decreased from 2-30 seconds to less than 1 second on average.

Figure 3: Browsers now get updates as soon as they are made since all of the browsers are always connected.

Optimizing the data transfer

In designing the model, we quickly realized that if everyone is active in the spreadsheet, we could be sending quite a bit of information over the network, resulting in slower connections and higher data plan costs. To remedy this, we send updates for only the things you need. We do this by having the browser tell the server what part of the workbook it’s looking at so that the server only sends down the relevant portion. For example, if I make a change on sheet1 while you are looking at sheet2, we wouldn’t send it to you unless you switch to sheet1. Additionally, we segment certain types of information so that if only a single thing changes, we don’t have to send the whole package again. A good example of this is selection: if there are 20 people in the workbook and only 1 person changes their selection, we send you that one person’s new location rather than resending all 20. The result is much less data over the wire, which means faster collaboration and better data plan usage for you.

Figure 4: Only the user in the middle received the change to A1 since the third user can’t even see it.

Tell us what you think

Hopefully this gives you some insight into how and why we added real-time presence and real-time data to the Excel Web App. Please tell us what you think in the comments or click the Give Feedback button in the Excel Web App. Happy collaborating!

Please do run it through some work scenarios. We have been using it for many of our Excel collaboration tasks recently and it has made quite a difference. I will pass along your SkyDrive Pro syncing feedback to the SkyDrive Pro team.

We don’t currently have any plans to release these features in a service pack, but they will be available in all new versions of on-premise. I am currently checking with our deployment team to see what builds these changes will be available for on-premise.

I got confirmation from our deployment team, we don’t have plans to ship these features in a Service Pack, so to get these features on-premise, you will need to upgrade to the next major version when it is released. These updates are available today on Office 365 and SkyDrive though.

This is a great enhancement that would be even more useful in Excel rich clients. The user experience is not consistant. So users are confused. They don’t know when to use the web apps or the rich client. It seems awkward not to bring this coauthoring feature in the rich clients first like in Word and PowerPoint or OneNote. Hope you’ll make it available soon. Final question: does the MS strategy "Cloud first" means "web first" ? Thx

As of May, we changed our strategy from the web apps from one of companions to comprehensive productivity experiences. The details can be found in our May 8th post "Office Web Apps Announcement" (link below). This means that there will be cases where we make updates or add new features to the web before the desktop. We realize the importance of collaboration for all endpoints, but right now we don’t have any dates for updates to the desktop client.

Micah, thanks for this good article! Real time co-authoring is a great feature, and our customers have been liking this a lot ! I believe the pace of change your team is bringing is amazing! Look forward to more!

One comment outside of this: I am not able to post comment using IE 11, and am being forced to do through Chrome. Please pass this on to the IE team!

Great! Glad you and your customers are enjoying the new features. I am currently using IE 11 and am able to post, so I will follow up with you in a private message to see if we can figure out what is happening.

If a team is collaborating on a project, is it possible to have the app automatically send periodic email notifications to supervisors who may not be involved in the collaboration at all times? That way the supervisor would be able to monitor progress and become involved in the collaboration as needed, while being able to focus on other tasks in the interim.

If this app does not have this feature, do you know of another one that does?

If you are using SharePoint on Office 365 you can use the "Send an email" action in SharePoint workflows to send emails when specific actions happen (like the version of the file changes). If you are using SkyDrive, it is not currently possible to set up emails for when the version changes, but you can log in and check to see if the version has changed by right clicking the file and viewing the version history.