- Using Vue.js in the background for data reactivity
Impressed by the power of using a reactive library on our frontend, our team has included Vue.js in our persistent background page. By tapping into Vue's powerful lifecycle hooks and lightweight observer engine, we've been able to synchronize data very reliability.
Without access to a DOM, such as is available in the background page, libraries like Vue would never be able to run.
Without data persistence, this Vue reactivity could never work. The best workaround may involve setting up a system for writing back state data to IndexDB or local storage and then reading it out again when the server worker is initialized, but this would incur a very high startup cost each time an event occurred.
- Live Graph Database
As a solution to the synchronized state problem across tabs, our team built a realtime graph database that uses message passing to keep in-use JavaScript objects in synchronization across tabs (and also persists to the cloud).
Without a persistent background state, it would not be possible for this implementation to work (as currently designed).
Without persistent state, the cost of initialization would be rather high. The wrapping of these objects in proxies and initialization work would need to occur each time a Service Worker was activated.
Rather than provide a laundry list, I just wanted to provide 2 critical examples that apply to us.
For a use case like ours, where the content script calls into the background on every new page load to get context and load state, a persistent background page was ideal for our use case. The number of requests and communications that involved the background justifies having the process running persistently, especially for quickly responding to requests with in-memory data. It's also a convenient place where we can offload work that would otherwise lock up the main thread.

Here is a screenshot of the concept of our product, guiding an employee through their job -- all via an easy-to-use overlay in the browser.
Conclusion
When founding a company whose primary vision included building a new type of software solution on the browser extension platform, many laughed at us. "What major company was built as an extension?" they would ask. In my mind, the answer was -- none... yet.
The platform provides powerful opportunities to improve how people work, and it was my opinion that a company such as ours dedicated to this cause could innovate on the platform and show the world what is possible. We really believe in the capabilities of chrome extensions, and we want to show the world what's possible.
While the risk of developing on any platform is deprecations and changes such as this, I had assumed a certain stability of Chrome's web extension platform. That was further supported by the relatively recent votes of support by Firefox and now Edge. I know it's early days yet with the Manifest V3 draft, but if these changes do go through, our team may have to reconsider whether the platform risk is too high to justify substantial further investment. As disappointing as that would be to us, given excitement of our vision, we have a duty to our investors and our customers.
Seeing over two years of passionate engineering work (and millions of dollars of investor capital) at risk from deprecations of such the persistent background page, a defining component of chromium's extension standard, I am very concerned about our ability to continue down this path confidently. It also makes me concerned that I may have been wrong about believing the extension platform was stable enough to build a business on it.
We are very proud of the innovation we've brought to this platform, and we would be happy to discuss more with the chromium team. We want this platform to thrive, because we believe extensions hold the promise of a future of work that is simpler, more collaborative, and more accessible to people of a variety of skill levels. I hope the team will reconsider the deprecation of persistent background pages, which is a crucial enabler of this vision.
Sincerely,
Michael and the RocketVisor team
email: michael @
New York, NY