One of the key challenges in implementing collaborative web applications is perfectly explained by Aaron Boodman, the founder of Roricorp, in a podcast on localfirst.fm. A key challenge is that storage works differently on the web compared to native platforms: web apps have limited and unreliable storage, meaning that app data can disappear unexpectedly at any moment.
When working with multi-user flows, these challenges grow even more complex:
- Developers need to resolve editing conflicts.
- Due to storage limitations, it’s often possible to store only part of the data.
- Users only have access to the data they are authorized to see.
Not trivial constraints, right?
As Boodman emphasizes:
“The permissionless nature of the web means it avoids permissions, that could pose security or privacy risks to users and their devices. Unlike managed platforms, integrating storage into browsers is challenging. A malicious app could fill up your disk, disrupt other apps, or consume all storage quota.”
This openness has fostered a unique ecosystem for web applications, distinct from native ones. According to Boodman, web-based personal productivity apps, like note-takers, have become more popular in recent years. Unlike platforms such as iOS, which focus on single-user apps and thus have straightforward storage management, the web allows for more complex, collaborative applications—especially those requiring more data than a single device can manage. Examples include services like Google Search, Google Maps, and Gmail, which rely on vast computing resources.
Even though earlier technologies like Google Gears (a precursor to modern browser APIs) aimed to improve web storage capabilities, managing data in a multi-user environment remains a complex task. Developers must address challenges such as synchronization, conflict resolution, and partial data syncing due to the limitations of device storage. Authorization further complicates things, as web apps often only allow users access to specific subsets of data, requiring developers to implement more granular permissions.
Boodman also highlights another crucial issue:
“Browser storage isn’t always reliable, as it must prevent app abuse. This unreliability means developers need robust syncing mechanisms that can handle disappearing storage, a challenge native platforms don’t face.”
Overall, developing advanced web applications involves numerous technical and human challenges, requiring developers to consider limitations and obstacles that don’t exist on native platforms.
At Flexum, we specialize in helping product teams tackle the complexities of building advanced editing and collaboration features for web applications. If your team needs support in implementing these challenging aspects, don’t hesitate to reach out to us.