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

helix-js

v2.0.1

Published

Functional front-end UI framework

Downloads

48

Readme

⚒ Helix

Helix is a batteries-included front-end framework designed with Typescript in mind.

Created by Joseph Luck and with help from the good folks at Goodlord.

Motivation

Building complex front-end applications is difficult. As front-end developers, we need to ensure we're deliving not only user-friendly and feature-rich applications, but we do so in a safe and bug-free way.

We've seen recent trends in the front-end space that help front-end developers solve these problems, and the ecosystem is expanding rapidly. Helix attempts to solve these problems with emphasis on building safe applications using ideas from functional programming such as immutable state, explicit side-effects and one-way data flow. As a front-end developer building applications with Helix, you can be confident navigating, understanding and refactoring your code.

Documentation

Helix was designed with Typescript in mind. Whilst it's certainly possible to build a Helix application without Typescript, it's not recommended. All of the examples in the documentation are written in Typescript.

Since Helix can be paired with many view libraries, the documentation doesn't focus too much on the specifics of the views, although it'd be difficult to showcase Helix without it. The yo-yo library will be used in the examples, which is a simple library that uses tagged template literals to represent HTML in Javascript.

Through the course of the documentation, the three main concepts; models, routes and rendering will be discussed in the context of a simple blog application using Helix (you can view the blog application online here). Take a peek at the source code if you're interested.

Example

A Helix application is made up of three pieces: state, actions that can modify state and a user interface. Let's break it down and combine them into a simple application:

State

State can take any shape, but typically it's an object:

const state = {
  todos: [
    'Learn Helix',
    'Profit'
  ]
}

Actions

Actions make an application interactive:

const reducers = {
  addTodo (state, todo) {
    return { todos: [...state.todos, todo] }
  }
}

Interface

A user interface is essential for a web application. The interface both shows the user the current state of the application and provides a mechanism for the user to update the state of the application. We'll use the package yo-yo for the following example, but React, Inferno, Preact, Vue, jQuery etc are all supported.

import * as html from 'yo-yo'
const component = (state, previousState, actions) => html`
  <div>
    ${state.todos.map(todo => html`<span>${todo}</span>`)}
    <button onclick=${e => actions.addTodo('New Todo')}>Add Todo</button>
  </div>
`

Altogether now

import helix from 'helix-js'
import * as html from 'yo-yo'
import renderer from 'helix-js/src/renderers/yo-yo'

const state = {
  todos: [
    'Learn Helix',
    'Profit'
  ]
}

const reducers = {
  addTodo (state, todo) {
    return { todos: [...state.todos, todo] }
  }
}

const model = { state, reducers }

const component = (state, _previous, actions) => html`
  <div>
    ${state.todos.map(todo => html`<span>${todo}</span>`)}
    <button onclick=${e => actions.addTodo('New Todo')}>Add Todo</button>
  </div>
`

const render = renderer(document.getElementById('root'))

helix({ model, component, render })

Over the course of the documentation, we'll showcase Helix's architecture by building a simple blog application.

Contributing

Installation

To run locally, clone this repository and install npm dependencies:

yarn install

You'll also need to install Google Chrome and Java on your machine to run the selenium-based tests.