
Spinner visto en la apertura de una nueva pestaña: 

export default { ssr: false, target: 'static', head: { titleTemplate: '', title: 'NocoDB', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { hid: 'description', name: 'description', content: process.env.npm_package_description || '' } ], link: [ { rel: 'icon', type: 'image/x-icon', href: './favicon-32.png' } ] }, plugins: [ // plugins ], buildModules: [ '@nuxtjs/vuetify', '@nuxtjs/pwa' ], modules: [ // Doc: https://axios.nuxtjs.org/usage '@nuxtjs/axios', 'vue-github-buttons/nuxt', '@nuxtjs/toast' ], axios: { baseURL: process.env.NC_BACKEND_URL || (process.env.NODE_ENV === 'production' ? '..' : 'http://localhost:8080') }, router: { mode: 'hash', base: process.env.NODE_ENV === 'production' ? './' : '', middleware: ['auth'] }, vuetify: { defaultAssets: { icons: false }, optionsPath: '@/config/vuetify.options.js', treeShake: true, customVariables: ['./config/variables.scss'] }, build: { parallel: true, plugins: [ new MonacoEditorWebpackPlugin({ languages: ['sql', 'json', 'javascript'], features: ['!gotoSymbol'] }) ], extend(config, { isDev, isClient }) { if (isDev) { config.devtool = isClient ? 'source-map' : 'inline-source-map' } config.externals = config.externals || {} config.externals['@microsoft/typescript-etw'] = 'FakeModule' return config } }, pwa: { workbox: { assetsURLPattern: /\/_nuxt\//, config: { debug: true } }, icon: { publicPath: './' }, manifest: { name: 'NocoDB', start_url: '../?standalone=true', theme_color: '#ffffff' } } } Informe del faro: 
Referencia del problema de Github: https://github.com/nuxt-community/pwa-module/issues/501
Debe configurar el trabajador de servicio que borra el caché según las versiones. Configure service-worker.js como se muestra a continuación. y actualice LATEST_VERSION en los cambios que implemente.
// service-worker.js importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); workbox.core.setCacheNameDetails({ prefix: 'pwa' }) //Change this value every time before you build to update cache const LATEST_VERSION = 'v1.0.1' self.addEventListener('activate', (event) => { console.log(`%c ${LATEST_VERSION} `, 'background: #ddd; color: #0000ff') if (caches) { caches.keys().then((arr) => { arr.forEach((key) => { if (key.indexOf('pwa-precache') < -1) { caches.delete(key).then(() => console.log(`%c Cleared ${key}`, 'background: #333; color: #ff0000')) } else { caches.open(key).then((cache) => { cache.match('version').then((res) => { if (!res) { cache.put('version', new Response(LATEST_VERSION, { status: 200, statusText: LATEST_VERSION })) } else if (res.statusText !== LATEST_VERSION) { caches.delete(key).then(() => console.log(`%c Cleared Cache ${LATEST_VERSION}`, 'background: #333; color: #ff0000')) } else console.log(`%c Great you have the latest version ${LATEST_VERSION}`, 'background: #333; color: #00ff00') }) }) } }) }) } }) workbox.core.skipWaiting(); workbox.core.clientsClaim(); self.__precacheManifest = [].concat(self.__precacheManifest || []) // workbox.precaching.suppressWarnings() workbox.precaching.precacheAndRoute(self.__precacheManifest, {})No sé para nuxt, pero para angular necesitamos actualizar el elemento de version de ngsw-config.json en cada implementación (1, 2, 3, ...) y también llamar a SwUpdate.checkForUpdate() al inicio. Solo entonces se recuperará la nueva versión de la aplicación del servidor.