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

@zynq/vue

v1.0.6

Published

Synchronize application state with the URL using Vue 3 composables and Vue Router

Readme

@zynq/vue

Synchronize application state with the URL in Vue 3 apps using composables and Vue Router. Keep filters, pagination, search, and other UI state in the query string so users can share and bookmark links.

Requirements

  • Vue ^3.0.0
  • Vue Router ^4.0.0

Installation

npm install @zynq/vue
# or
pnpm add @zynq/vue
# or
yarn add @zynq/vue

Install Vue and Vue Router if you don't have them yet:

npm install vue vue-router

Quick start

  1. Define a schema with the s builders and call useZynq(schema) inside a component that has access to the router (e.g. under <RouterView> or where useRouter() works).

  2. The returned state is reactive and stays in sync with the URL: when the user changes the URL (or back/forward), state updates; when you change state, the URL updates (via replaceState by default).

<script setup lang="ts">
import { useZynq, s } from '@zynq/vue';

const schema = {
  name: s.string(),
  count: s.number(0),
  active: s.boolean(true),
};

const { state } = useZynq(schema);
</script>

<template>
  <div>
    <input v-model="state.name" placeholder="Name" />
    <input v-model.number="state.count" type="number" />
    <label>
      <input v-model="state.active" type="checkbox" />
      Active
    </label>
  </div>
</template>

Visiting /?name=foo&count=10&active=false will set state to { name: 'foo', count: 10, active: false }. Changing state in the UI will update the query string without full page reloads.

API

useZynq(schema)

  • Parameters: schema – object of keys to codecs (e.g. from s.string(), s.number(), s.boolean()).
  • Returns: { state } – reactive object whose keys match the schema and stay synced with the URL query.

Must be called in a component that runs in a Vue Router context (so useRouter() and useRoute() are available).

Schema builders (s)

Included in this package for convenience:

  • s.string() – string (optional in URL)
  • s.number(default?) – number with optional default
  • s.boolean(default?) – boolean with optional default

VueRouterAdapter

Adapter that implements Zynq’s router interface using Vue Router. Used internally by useZynq; you typically don’t need to use it directly unless you’re building custom integration.

Types

  • Schema – schema shape
  • InferState<S> – inferred state type from schema S

Building

This package is built with tsup. From the repo root (monorepo) or package directory:

pnpm build
# or
pnpm --filter @zynq/vue build

Output is emitted to dist/ (ESM, CJS, and type declarations). Vue and Vue Router are external and not bundled.

License

MIT