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

@webflow/app

v0.1.0-beta.1

Published

Build a JS framework app (Vite, Next.js, Astro) into a Webflow Cloud (Cloudflare Workers) bundle. Framework detection, adapter injection, and config generation are handled for you — declare what you need in webflow.json and nothing else.

Downloads

43

Readme

@webflow/app

Build a JS framework app into a Webflow Cloud bundle that runs on Cloudflare Workers — without your app having to know anything about Cloudflare.

You declare what you need in webflow.json. @webflow/app figures out your framework (Vite, Next.js, Astro), injects the right Cloudflare adapter and config, runs the build, and produces a worker-ready output directory. No wrangler.json, no adapter packages in your package.json, no generated config files in your tree — all of that happens in an ephemeral build workspace.

This is the same engine the Webflow CLI and Webflow Cloud's server-side builder use, so a build is identical wherever it runs.

Status: early. The public API and the host port seam below are stable; the framework build pipeline is being extracted from the canonical (cosmic-builder) implementation. buildApp throws NotImplementedError until that lands.

Install

npm install @webflow/app

Usage

import { buildApp, consoleLogger, nodeCommandRunner } from '@webflow/app';

const result = await buildApp({
  projectDir: process.cwd(),
  outputDir: './.webflow-output',
  ports: {
    logger: consoleLogger,
    runCommand: nodeCommandRunner,
    // telemetry + fs fall back to no-op / node defaults
  },
});

console.log(result.framework, result.deploymentType, result.entrypointPath);

Ports — running the same engine anywhere

Everything environment-specific is injected, so the engine itself is pure build logic and stays public-safe (no auth, upload, secrets, or vendor SDKs baked in).

| Port | Required | Default | Why a host overrides it | | --- | --- | --- | --- | | logger | yes | consoleLogger / silentLogger provided | route output into oclif spinners, ECS structured logs, etc. | | runCommand | yes | nodeCommandRunner provided | control/sandbox how npm, the framework build, and wrangler execute | | telemetry | no | noopTelemetry | wrap dd-trace so existing dashboards keep working | | fs | no | nodeFileSystem | plug in a virtual filesystem (e.g. browser-based agents) |

webflow.json

The only Webflow-owned file in your project. Framework is auto-detected (you can pin it) and bindings are declared here rather than in wrangler.json:

{
  "cloud": {
    "framework": "nextjs",
    "bindings": {
      "kv": [{ "binding": "MY_KV" }],
      "r2": [{ "binding": "MY_BUCKET", "bucket_name": "my-bucket" }],
      "d1": [{ "binding": "DB", "database_name": "app-db", "migrations_dir": "./migrations" }]
    }
  }
}

You declare the binding name (and, for R2/D1, the resource name) — Webflow Cloud provisions the resource and namespaces it per environment. KV ids / D1 database_ids are assigned for you; omit them. Limits: up to 5 of each type; R2 bucket names are lowercase alphanumeric + hyphens, ≤27 chars. (vars is not supported yet — it needs deployer support to propagate.)

The deploy-contract fields (contract_version, framework, deployment_type, entrypoint_path, skip_no_bundle) are filled in by the build and validated against @webflow/cosmic-deploy-contract before output is produced.

Development

npm install      # from the monorepo root
npm test         # jest
npm run build    # tsc → dist/
npm run typecheck