Problem: When you deploy a new version of your SPA, users with a tab open will keep using the old SPA code.
Yesterday, I shared one solution. People suggested dozens of useful variations and alternatives. 🙏
So, here are the best options in the massive thread.
6 ways to tell the SPA a new release is available, simplest options first:
1. Write the version from package.json into index.html as part of the build process. Poll index.html every x minutes and compare the server's index.html to the client's index.html.
2. Create an endpoint on the UI web server that reads the package.json version, and returns it. Poll this every x minutes. This is more efficient than option 1, because the payload is smaller.
3. Use web sockets or server sent events to push a notification to the UI after a deploy instead. This is especially attractive if you’re already using these technologies.
4. Use a service worker to notify the user when the UI is stale. For example, Vite's PWA plugin supports this.
5. Use an API proxy like Cloudfront to fetch the version without involving the backend. More here: https://t.co/Esr4Q9tOqS
6. Specify the app version in each HTTP call from the UI via a x-app-version header (or whatever name you like). Validate the x-app-version header on the API server. If x-app-version doesn't match the server's version, notify the UI in the response, either via an HTTP 205, 400, or 422 (the HTTP response you return depends on whether you want calls from a “stale” UI to succeed).
Another thing angering employees:
More new hires are joining the coming days/weeks. Klarna is reaching out to confirm to these new joiners that they are safe to join.
Rescinding offers: not cool. Klarna employees feel laying off tenured folks instead is worse though.
It depends a lot on the business case you are facing to know if it will be worth using Micro-frontend architecture or not.
Business... Business... Business
https://t.co/5Iz1j1tY98
"Advanced JavaScript Series - Part 1: Behind the scenes (JavaScript Engine, ATS, Hidden Classes, Garbage Collection)" by @Pranav046#DEVCommunity https://t.co/LXoWcaBw4I