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 🙏

© 2026 – Pkg Stats / Ryan Hefner

aniview

v1.1.1

Published

Absolute World Coordinate Animation Engine for React Native

Readme

Aniview

npm version License: MIT React Native

Aniview is a coordinate-based animation and page-navigation engine for React Native. It lets you describe a 2D page world, place components on named pages, and define style frames that interpolate as the camera moves between pages or as custom Reanimated SharedValues change.

What it is good for

  • Swipeable multi-page interfaces that are not just a flat carousel.
  • Components that morph between pages without imperative animation code.
  • Event-driven effects such as scroll, zoom, or progress-linked animation.
  • React Native apps that need gesture coordination between page swipes and nested interactions.
  • Persistent animated surfaces such as video, canvas, or GL content that must not unmount offscreen.

Install

Aniview expects a working React Native app with Reanimated and React Native Gesture Handler configured.

npm install aniview react-native-reanimated react-native-gesture-handler

For Expo projects, prefer Expo's version resolver for the peer dependencies:

npx expo install react-native-reanimated react-native-gesture-handler
npm install aniview

Make sure the Reanimated Babel plugin is configured according to the Reanimated docs for your app.

Minimal Example

import React from "react";
import { Text, StyleSheet } from "react-native";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { Aniview, AniviewProvider } from "aniview";

const pageMap = {
  HOME: 0,
  PROFILE: 1,
};

export default function App() {
  return (
    <GestureHandlerRootView style={styles.root}>
      <AniviewProvider layout={[[1, 1]]} pageMap={pageMap} defaultPage="HOME">
        <Aniview pageId="HOME" style={[styles.page, styles.home]}>
          <Text style={styles.title}>Home</Text>
        </Aniview>

        <Aniview pageId="PROFILE" style={[styles.page, styles.profile]}>
          <Text style={styles.title}>Profile</Text>
        </Aniview>

        <Aniview
          pageId="HOME"
          style={styles.badge}
          frames={{
            atProfile: {
              page: "PROFILE",
              style: {
                backgroundColor: "#e91e63",
                transform: [{ scale: 1.4 }],
              },
            },
          }}
        />
      </AniviewProvider>
    </GestureHandlerRootView>
  );
}

const styles = StyleSheet.create({
  root: { flex: 1 },
  page: {
    width: "100%",
    height: "100%",
    alignItems: "center",
    justifyContent: "center",
  },
  home: { backgroundColor: "#e3f2fd" },
  profile: { backgroundColor: "#fce4ec" },
  title: { fontSize: 32, fontWeight: "700" },
  badge: {
    width: 72,
    height: 72,
    borderRadius: 36,
    backgroundColor: "#2196f3",
    left: 32,
    top: 64,
  },
});

Swipe horizontally to move between HOME and PROFILE. The badge belongs to HOME, but its frame describes how it should look when the camera reaches PROFILE.

Documentation

Mental Model

Aniview has three moving parts:

  1. AniviewProvider owns the camera, dimensions, page layout, gesture handler, and custom event shared values.
  2. AniviewConfig maps page IDs to world coordinates and builds gesture/navigation rules.
  3. Aniview components declare a home page plus optional spatial or event frames. On mount, frames are baked into interpolation lanes consumed by Reanimated worklets.

The important composition rule: use sibling Aniview components for world-positioned elements. Nest Aniview components only when you intentionally want parent and child transforms to combine.

License

MIT (c) Madelyn Cruz Tan (TitanicEclair)