{"id":20681,"library":"vite-plugin-rnw","title":"Vite Plugin for React Native Web","description":"Vite plugin for React Native Web (RNW) that integrates RNW with Vite's dev server and build pipeline. Current stable version is 0.0.11, with active development. Release cadence is irregular. Key differentiators: provides HMR for RNW components, handles CSS-in-JS processing, and supports multiple Vite versions (4, 5, 6, 7, 8). Unlike other solutions, it directly applies RNW-specific config while leveraging Vite's React plugin. Requires react-native-web, TypeScript 5+, and Vite 4+. Includes expo-modules-core compatibility plugin since v0.0.8.","status":"active","version":"0.0.11","language":"javascript","source_language":"en","source_url":"https://github.com/dannyhw/vite-plugin-rnw","tags":["javascript","vite","vite-plugin","react-native-web","react-native","typescript"],"install":[{"cmd":"npm install vite-plugin-rnw","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-rnw","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-rnw","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core peer dependency required at runtime for RNW components","package":"react-native-web","optional":false},{"reason":"Peer dependency for type checking and plugin configuration","package":"typescript","optional":false},{"reason":"Peer dependency - the plugin is a Vite plugin","package":"vite","optional":false}],"imports":[{"note":"Plugin is ESM-only; require() fails. Use default import.","wrong":"const reactNativeWebPlugin = require('vite-plugin-rnw')","symbol":"reactNativeWebPlugin","correct":"import reactNativeWebPlugin from 'vite-plugin-rnw'"},{"note":"Named export for Expo compatibility; default export is reactNativeWebPlugin only.","wrong":"import expoModulesCoreFixPlugin from 'vite-plugin-rnw'","symbol":"expoModulesCoreFixPlugin","correct":"import { expoModulesCoreFixPlugin } from 'vite-plugin-rnw'"},{"note":"Type imports are available; runtime usage of the type is a common error.","wrong":"const VitePluginRnwOptions = require('vite-plugin-rnw').VitePluginRnwOptions","symbol":"Types","correct":"import type { VitePluginRnwOptions } from 'vite-plugin-rnw'"}],"quickstart":{"code":"import { defineConfig } from 'vite';\nimport reactNativeWebPlugin from 'vite-plugin-rnw';\n\nexport default defineConfig({\n  plugins: [reactNativeWebPlugin()],\n});","lang":"typescript","description":"Shows minimal setup to add the RNW plugin to a Vite config file."},"warnings":[{"fix":"Remove duplicate react() plugin from vite config; rely on reactNativeWebPlugin to handle it","message":"v0.0.8 changes plugin API: now uses Vite's React plugin directly; old config may break","severity":"breaking","affected_versions":"<0.0.8"},{"fix":"Run 'npm install react-native-web' along with the plugin","message":"Plugin depends on 'react-native-web' peer; install manually","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Use import syntax or set type: 'module' in package.json","message":"Plugin is ESM-only; CommonJS require() fails","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Upgrade TypeScript to version 5 or higher","message":"TypeScript 5+ is required; older versions can't read plugin types","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"npm install react-native-web","cause":"Missing peer dependency react-native-web","error":"Error: Module not found: Can't resolve 'react-native-web'"},{"fix":"Use import reactNativeWebPlugin from 'vite-plugin-rnw'","cause":"Incorrect import: using require() or wrong import path","error":"TypeError: reactNativeWebPlugin is not a function"},{"fix":"npm install vite-plugin-rnw","cause":"Plugin not installed","error":"Cannot find module 'vite-plugin-rnw'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}