Guide

Compatibility & Installation

Supported framework versions, peerDependency ranges, and installation instructions for Next.js, Vite, and Expo.

Compatibility matrix

Stareezy UI is tested against the following framework versions in CI (both the lowest and highest end of each supported range):

FrameworkSupported versionspeerDependency rangeNotes
React
1819
"react": "^18 || ^19"Both major versions fully supported
React DOM
1819
"react-dom": "^18 || ^19"Required for web targets
React Native
0.810.820.830.840.850.86
"react-native": ">=0.81 <0.87"Full range supported
Expo SDK
545556
via react-native peerDepSDK 55 is the primary target; 54 and 56 are tested
Next.js
141516
optional peer (web only)App Router supported on all three versions
Vite
4567
optional peer (web only)Vite plugin uses stable Plugin hook contract only
All @stareezy-ui/* packages declare ranged peerDependencies — they do not hard-pin a single major version. You can use Stareezy-ui in a React 18 project today and upgrade to React 19 without changing the Stareezy-ui version.

Installation

Next.js (App Router)

# Next.js 14, 15, or 16
npm install @stareezy-ui/components @stareezy-ui/tokens @stareezy-ui/compiler
# or
pnpm add @stareezy-ui/components @stareezy-ui/tokens @stareezy-ui/compiler
# or
yarn add @stareezy-ui/components @stareezy-ui/tokens @stareezy-ui/compiler
// next.config.ts
import { stareezyVitePlugin } from '@stareezy-ui/compiler'
import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  webpack(config) {
    config.plugins.push(stareezyVitePlugin())
    return config
  },
}
export default nextConfig

Vite + React

# Vite 4, 5, 6, or 7
npm install @stareezy-ui/components @stareezy-ui/tokens @stareezy-ui/compiler
// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { stareezyVitePlugin } from '@stareezy-ui/compiler'

export default defineConfig({
  plugins: [
    react(),
    stareezyVitePlugin(),
  ],
})

// main.tsx — import the generated CSS once
import 'virtual:stareezy-ui/styles'

Expo (React Native)

# Expo SDK 54, 55, or 56
yarn add @stareezy-ui/components @stareezy-ui/tokens @stareezy-ui/compiler
// metro.config.js
const { getDefaultConfig } = require('expo/metro-config')
const config = getDefaultConfig(__dirname)

config.transformer = {
  ...config.transformer,
  babelTransformerPath: require.resolve('@stareezy-ui/compiler/metro'),
}

module.exports = config

peerDependencies

All @stareezy-ui/* packages declare the following peerDependencies with optional flags where the peer is not required on all platforms:

// Declared across all packages:
{
  "peerDependencies": {
    "react":        "^18 || ^19",
    "react-dom":    "^18 || ^19",
    "react-native": ">=0.81 <0.87"
  },
  "peerDependenciesMeta": {
    "react-dom":    { "optional": true },
    "react-native": { "optional": true }
  }
}

react-dom is optional because React Native projects do not need it. react-native is optional because web-only (Vite / Next.js) projects do not need it.

Quick scaffolding with the CLI

Instead of wiring everything manually, use the CLI to scaffold a pre-wired project in one command:

npx stareezy create my-app --template next   # Next.js App Router
npx stareezy create my-app --template vite   # Vite + React
npx stareezy create my-app --template expo   # Expo SDK 55

See the CLI guide for details on the create, init, and add commands.

Version-specific notes

React 19

Stareezy UI is compatible with React 19. The ref prop changes in React 19 are handled internally — no changes to your component usage are required.

Next.js 15 and 16

The "./server" entry and the client boundary pattern work on Next.js 14, 15, and 16 with the App Router. The Pages Router is not officially supported.

Vite major versions

The stareezyVitePlugin() uses only the stable Plugin hook contract (resolveId, load, transform) — no version-specific internal APIs. It works on Vite 4, 5, 6, and 7.

Expo SDK compatibility

The Metro transformer is compatible with Expo SDK 54, 55, and 56 on React Native 0.81 through 0.86. It does not depend on Expo-version- specific Metro internals.

If you run into a compatibility issue on a version within the supported range, please open an issue on GitHub.