If Airship web push starts duplicating after you move the service worker, do not resubscribe everyone: drop a cleanup push-worker.js at the worker's previous location that unsubscribes on activate. Browsers detect the change and kill the stale subscription tied to the old location, which is what was doubling the notifications. Keep service worker locations stable, and when you must move one, always leave the cleanup file behind.

Context: Airship's official Web SDK getting-started docs carry a troubleshooting section on duplicate web notifications: if the push service worker is moved, for example from a non-root location to the root directory, users get duplicate notifications. This happens because push subscriptions are tied to the service worker's location, and a browser-cached worker at the old location keeps running alongside the new registration, which creates a new channel ID. Airship's documented fix is to place a cleanup push-worker.js at the old location whose activate handler unsubscribes the stale subscription.