Skip to content

Repository files navigation

@vite-pwa/react-router - Zero-config PWA for React Router

Zero-config PWA for React Router

NPM version NPM Downloads Docs & Guides
GitHub stars


Anthony Fu SVG sponsors image

๐Ÿš€ Features

  • ๐Ÿ“– Documentation & guides
  • ๐Ÿ‘Œ Zero-Config: sensible built-in default configs for common use cases
  • ๐Ÿ”ฉ Extensible: expose the full ability to customize the behavior of the plugin
  • ๐Ÿฆพ Type Strong: written in TypeScript
  • ๐Ÿ”Œ Offline Support: generate service worker with offline support (via Workbox)
  • โšก Fully tree shakable: client virtual modules are strictly optimized for Dead Code Elimination.
  • ๐Ÿ“„ Web Manifest: auto-inject Web App Manifest and PWA assets seamlessly.
  • ๐Ÿ’ฌ Prompt for new content: built-in support for Vanilla JavaScript, Vue 3, React, Svelte, SolidJS and Preact
  • โš™๏ธ Stale-while-revalidate: automatic reload when new content is available
  • โœจ Static assets handling: configure static assets for offline support
  • ๐Ÿž Development Support: debug your custom service worker logic as you develop your application
  • ๐Ÿ” Inspector: visually inspect your resolved configuration, web manifest and service worker during development, via middleware or DevFrame
  • ๐Ÿงฉ Modular: use the ready-to-use plugins or compose your own integration from the building blocks in @unplugin-pwa/core and @unplugin-pwa/vite
  • ๐Ÿ“ฆ Universal Bundlers: native integration with Vite, Rolldown, Webpack (WIP), Rspack (WIP), and Rsbuild (WIP).
  • ๐Ÿ› ๏ธ Meta-Frameworks: seamless integration with รฎles, SvelteKit, VitePress, Astro, Nuxt 3/4/5, React Router, TanStack and Next (WIP).
  • ๐Ÿ’ฅ PWA Assets Generator: generate all the PWA assets from a single command and a single source image
  • ๐Ÿš€ PWA Assets Integration: serving, generating and injecting PWA Assets on the fly in your application

๐Ÿ“ฆ Install

npm i @vite-pwa/react-router -D

# yarn
yarn add @vite-pwa/react-router -D

# pnpm
pnpm add @vite-pwa/react-router -D

๐Ÿฆ„ Usage

You need to provide your React Router plugin to the ReactRouterPWAPlugin:

// vite.config.ts
import { defineConfig } from 'vite'
import { ReactRouterPWAPlugin } from '@vite-pwa/react-router'

const reactRouterPlugin = reactRouter()

export default defineConfig({
  plugins: [
    reactRouterPlugin,
    ReactRouterPWAPlugin(
      reactRouterPlugin,
      {
        /* PWA options */
      }
    )
  ]
})

then, add the ReactRouterPWAPreset to your React Router configuration:

// react-router.config.ts
import type { Config } from '@react-router/dev/config'
import { ReactRouterPWAPreset } from '@vite-pwa/react-router/preset'

export default {
  // Config options...
  // Server-side render by default, to enable SPA mode set this to `false`
  presets: [ReactRouterPWAPreset()]
} satisfies Config

Read the ๐Ÿ“– documentation for a complete guide on how to configure and use this plugin.

๐Ÿ‘€ Full config

Check out the type declaration src/types.ts and the following links for more details.

๐Ÿ“„ License

MIT License ยฉ 2026-PRESENT Anthony Fu

Releases

Packages

Contributors

Languages