I wish Shared Workers had more browser support (currently just Chrome and Firefox). Service Workers are great, but not for long-running processes.
With a Shared Worker, you can have one instance of your app that will actually keep running continually as long as you have a tab open. Then you can treat multiple open tabs as multiple different clients of the Shared Worker. All state and communication with the server can be handled by the Shared Worker, reducing a lot of duplicated effort and cross-tab coordination. It's pretty great... but only in Chrome and Firefox.