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

@koppajs/koppajs-core

v3.0.7

Published

Koppa.js is a lightweight, high-performance frontend framework designed for building modern web applications without relying on a virtual DOM. It offers a modular architecture, reactivity, and seamless integration with TypeScript and Vite.

Readme


What is KoppaJS Core?

@koppajs/koppajs-core is the runtime package at the center of the KoppaJS stack.

It owns the public bootstrap surface, component registration, DOM runtime setup, lifecycle coordination, and the stable contracts that other KoppaJS packages build on top of.

In practice that means:

  • applications register components through Core.take(...)
  • the runtime boots once through Core()
  • the Vite plugin handles .kpa transformation, while core stays focused on runtime behavior

Features

  • component registration via the stable Core.take(...) API
  • one-time runtime bootstrap through Core()
  • reactive component model with explicit methods, refs, props, and lifecycle hooks
  • modular extension surface for plugins and modules
  • no virtual DOM dependency
  • published package with ESM, CommonJS, and TypeScript types

Installation

pnpm add @koppajs/koppajs-core
pnpm add -D @koppajs/koppajs-vite-plugin vite typescript
npm install @koppajs/koppajs-core
npm install -D @koppajs/koppajs-vite-plugin vite typescript

The fastest path for most users is still the official starter:

pnpm create koppajs my-app

Requirements

For package consumers:

  • a browser-based application environment
  • a build pipeline that can consume KoppaJS components, typically Vite plus @koppajs/koppajs-vite-plugin
  • package installation supports Node.js >= 22

For local repository work:

  • Node.js >= 22
  • pnpm >= 10.24.0

Getting Started

Recommended bootstrap path:

pnpm create koppajs my-app
cd my-app
pnpm install
pnpm dev

Manual registration with the public core API:

import { Core } from '@koppajs/koppajs-core'

import appView from './app-view.kpa'
import counterComponent from './counter-component.kpa'

Core.take(appView, 'app-view')
Core.take(counterComponent, 'counter-component')
Core()

This mirrors the bootstrap used in the official example project.


Runtime Model

KoppaJS Core deliberately keeps its top-level contract small:

  • Core.take(componentSource, name) registers a component definition
  • Core.take(pluginOrModule) installs an extension definition
  • Core() initializes the DOM environment and flushes queued registrations
  • repeated Core() calls are safe and idempotent

The runtime does not own .kpa parsing. That stays in @koppajs/koppajs-vite-plugin, which emits the component source objects that core consumes at runtime.


Roadmap

  • continue hardening the stable runtime contracts
  • keep the public bootstrap surface small and explicit
  • deepen runtime specs and package-level governance documents
  • support ecosystem packages such as the router, component library, and editor tooling without growing hidden runtime coupling

Architecture & Governance

Project intent, contributor rules, and documentation contracts live in the local repo meta layer:

The file-shape contract for README.md, CHANGELOG.md, CODE_OF_CONDUCT.md, and CONTRIBUTING.md is defined in docs/specs/repository-documentation-contract.md.

Run the local document guard before committing:

pnpm run check:docs

Community & Contribution

Issues and pull requests are welcome:

https://github.com/koppajs/koppajs-core/issues

Contributor workflow details live in CONTRIBUTING.md.

Community expectations live in CODE_OF_CONDUCT.md.


License

Apache License 2.0 — © 2026 KoppaJS, Bastian Bensch