npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

nativ

v0.8.10

Published

Core utilities and components for React Native apps

Readme

nativ

A complete frontend stack for React Native apps that eliminates setup overhead and provides production-ready components out of the box.

What's Included

Nativ prescribes a comprehensive React Native stack with the following technologies:

Core Framework

  • Expo (v54) - Platform and tooling for universal React Native apps
  • React Native - Build native mobile apps using React
  • TypeScript - Type-safe JavaScript development
  • valtio - Proxy-state library for React with minimal boilerplate
  • @tanstack/react-query - Powerful data synchronization for React with caching, background updates, and optimistic updates

Navigation & Routing

UI & Styling

Animation

Database & ORM

  • expo-sqlite - Local SQLite database access
  • drizzle-orm (v1) - Lightweight TypeScript ORM with zero dependencies
  • drizzle-plus - Utility extensions for Drizzle ORM including count(), nest(), caseWhen(), and JSON helpers

Utilities & Helpers

Device & Platform APIs

Build & Development Tools

Runtime Support

  • react (v19) - React library for building user interfaces
  • react-dom - React DOM bindings (for web compatibility)
  • @types/react - TypeScript definitions for React

Getting Started

  1. Clone the template and create your project:

    git clone https://github.com/alloc/nativ-template my-project-name --depth 1
    cd my-project-name
  2. Run the setup script:

    Note: Requires Node.js v23.6+ for TypeScript support

    node setup.mts

    This will:

    • Recreate the git repository
    • Install all dependencies
    • Install nativ peer dependencies
    • Clean up the setup script

    Note: After dependencies are installed, you may need to run pnpm approve-builds to approve certain dev dependencies like esbuild and puppeteer.

  3. Customize your app metadata:

    Edit the following files to configure your app:

    • package.json: Update app name, description, and other metadata
    • app.json: Configure bundle identifier, native permissions, and Expo plugins
    • App Icon: Place your app icon in ./assets/images/ folder

    For app icon and splash screen guidance, see the Expo documentation.

  4. Start the development server:

    pnpm start
  5. Run on a platform:

    pnpm ios     # iOS
    pnpm android # Android
    pnpm web     # Web

[!IMPORTANT] See the template readme to learn what else is available to you.

API Reference

UI Primitives

import {
  createView,
  createText,
  createImage,
  createPressable,
  createScrollView,
  createMotiView,
  createMotiPressable,
  createMotiText,
  createMotiImage,
  createMotiScrollView,
} from 'nativ/ui'
import type { Theme } from '~/theme'

const View = createView<Theme>()
const Text = createText<Theme>()
const Image = createImage<Theme>()
const Pressable = createPressable<Theme>()
const ScrollView = createScrollView<Theme>()
const MotiView = createMotiView<Theme>()
const MotiPressable = createMotiPressable<Theme>()
const MotiText = createMotiText<Theme>()
const MotiImage = createMotiImage<Theme>()
const MotiScrollView = createMotiScrollView<Theme>()

Factory functions exported by nativ/ui:

  • createView -> View (Base layout component with Restyle props)
  • createText -> Text (Typography with theme variants)
  • createImage -> Image (Image with styling)
  • createPressable -> Pressable (Touchable with styling)
  • createScrollView -> ScrollView (Scrollable container with styling)
  • createMotiView -> MotiView (Animated View with Moti integration)
  • createMotiPressable -> MotiPressable (Animated Pressable with Moti interactions)
  • createMotiText -> MotiText (Animated Text with Moti integration)
  • createMotiImage -> MotiImage (Animated Image with Moti integration)
  • createMotiScrollView -> MotiScrollView (Animated ScrollView with Moti integration)

Additional UI Components

import type { Theme } from '~/theme'
import {
  createLinearGradient,
  createFlashList,
  createKeyboardAvoidingView,
  createKeyboardAwareScrollView,
  createKeyboardBackgroundView,
  createKeyboardControllerView,
  createKeyboardStickyView,
} from 'nativ/ui'

const LinearGradient = createLinearGradient<Theme>()
const FlashList = createFlashList<Theme>()
const KeyboardAvoidingView = createKeyboardAvoidingView<Theme>()
const KeyboardAwareScrollView = createKeyboardAwareScrollView<Theme>()
const KeyboardBackgroundView = createKeyboardBackgroundView<Theme>()
const KeyboardControllerView = createKeyboardControllerView<Theme>()
const KeyboardStickyView = createKeyboardStickyView<Theme>()

You can find more details about each component in the links below:

  • expo-linear-gradient
    • LinearGradient - Linear gradient view with from/to props (instead of start/end) for compatibility with Restyle
  • @shopify/flash-list
    • FlashList - High-performance list component with Restyle props
  • react-native-keyboard-controller
    • KeyboardAvoidingView - Automatically adjusts its height, position, or bottom padding based on the keyboard height to remain visible while the virtual keyboard is displayed
    • KeyboardAwareScrollView - Effortlessly handles keyboard appearance, automatically scrolls to focused TextInput and provides a native-like performance
    • KeyboardBackgroundView - Visual-only utility that replicates the background of the system keyboard
    • KeyboardControllerView - A plain react-native View with some additional methods and props
    • KeyboardStickyView - Seamlessly ensures that a designated view sticks to the keyboard's movements, maintaining visibility and interaction

License

MIT