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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@eficy/core

v2.0.0

Published

A modern React component system with signals reactivity for B-end applications.

Downloads

60

Readme

Eficy

Using TypeScript MIT License NPM downloads

Eficy is a no-compilation JSX rendering engine for React components. As LLMs become increasingly capable at generating HTML web pages, Eficy bridges the gap by providing a way to render React components without compilation barriers. Originally built as a low-code rendering engine, Eficy now fully supports JSX rendering in non-compilation environments, enabling LLMs to generate precise, concise pages with just one sentence.

English | 简体中文

🎯 Why Eficy?

While LLMs excel at generating HTML web pages, React ecosystem components still face compilation barriers that prevent direct rendering in pure HTML environments. Eficy solves this by providing:

  1. Signal-based reactive system - Reducing anti-intuitive React features like Hooks, minimizing complexity and debugging costs
  2. No compilation required - Directly transpile and run content within <script type="text/eficy"> tags in browser environments
  3. Protocol rendering - Register React components in environment variables and use e-Button for consistent rendering, reducing LLM variability

✨ Key Features

🔄 Signal-based Reactive System

  • Intuitive State Management: Eliminates the need for complex React Hooks
  • Automatic Dependency Tracking: Signals used in JSX are automatically tracked
  • Fine-grained Updates: Only components using changed signals re-render
  • Async Data Support: Built-in async signals with automatic loading/error handling

🚀 No-compilation Rendering

  • Direct Browser Execution: Run JSX directly in browser environments
  • Script Tag Support: Use <script type="text/eficy"> for inline JSX
  • Real-time Transpilation: Instantly convert JSX to executable JavaScript

🧩 Protocol-based Component Rendering

  • Prefix-based Components: Use e-Button syntax for registered components
  • Global Component Registry: Register components once, use everywhere
  • Consistent LLM Output: Reduce variability in LLM-generated components

🎨 UnoCSS Integration

  • Atomic CSS Generation: Automatically generate styles from className attributes
  • Real-time Style Processing: Extract and generate CSS during rendering
  • Smart Caching: Avoid regenerating identical styles

📦 Seamless React Integration

  • Full React Compatibility: Work with existing React component libraries
  • Custom JSX Runtime: Transparent integration with signals
  • TypeScript Support: Complete type safety

📦 Installation

npm install eficy
# or
yarn add eficy
# or
pnpm add eficy

🚀 Quick Start

Browser Usage (No Compilation)

<!DOCTYPE html>
<html>
<head>
  <title>Eficy Demo</title>
  <script type="module" src="https://unpkg.com/@eficy/[email protected]/dist/standalone.mjs"></script>
</head>
<body>
  <div id="root"></div>
  
  <script type="text/eficy">
    import { signal } from 'eficy';
    import * as antd from 'antd';
    
    // Register components
    Eficy.registerComponents(antd);
    
    const App = () => {
      const count = signal(0);
      const name = signal('World');
      
      return (
        <div className="p-6 bg-gray-100 min-h-screen">
          <h1 className="text-2xl font-bold mb-4">Hello, {name}!</h1>
          <p className="mb-4">Count: {count}</p>
          
          <input 
            className="border p-2 mr-2"
            value={name}
            onChange={(e) => name.set(e.target.value)}
            placeholder="Enter your name"
          />
          
          <e-Button 
            type="primary" 
            onClick={() => count.set(count() + 1)}
          >
            Increment
          </e-Button>
        </div>
      );
    };
    
    Eficy.render(App, document.getElementById('root'));
  </script>
</body>
</html>

Node.js Usage

import React from 'react';
import { createRoot } from 'react-dom/client';
import { create, EficyProvider } from 'eficy';
import { signal } from '@eficy/reactive';
import * as antd from 'antd';

// Create Eficy instance
const core = await create();

// Register components
core.registerComponents(antd);

const App = () => {
  const count = signal(0);
  const name = signal('Eficy');
  
  return (
    <div className="p-6 bg-gray-100 min-h-screen">
      <h1 className="text-2xl font-bold mb-4">Hello, {name}!</h1>
      <p className="mb-4">Count: {count}</p>
      
      <input 
        className="border p-2 mr-2"
        value={name}
        onChange={(e) => name.set(e.target.value)}
        placeholder="Enter your name"
      />
      
      <e-Button 
        type="primary" 
        onClick={() => count.set(count() + 1)}
      >
        Increment
      </e-Button>
    </div>
  );
};

// Render application
const root = createRoot(document.getElementById('root'));
root.render(
  <EficyProvider core={core}>
    <App />
  </EficyProvider>
);

🧠 Core Concepts

Signals for State Management

import { signal, computed } from 'eficy';

// Create signals for state
const count = signal(0);
const name = signal('World');

// Create computed values
const greeting = computed(() => `Hello, ${name()}!`);

// Use in JSX (automatic subscription)
const App = () => (
  <div>
    <h1>{greeting}</h1>
    <p>Count: {count}</p>
    <button onClick={() => count.set(count() + 1)}>
      Increment
    </button>
  </div>
);

Async Data Handling

import { asyncSignal } from 'eficy';

const userList = asyncSignal(async () => {
  const response = await fetch('/api/users');
  return response.json();
});

const UserList = () => (
  <div>
    {userList.loading() && <div>Loading...</div>}
    {userList.error() && <div>Error: {userList.error().message}</div>}
    {userList.data() && (
      <ul>
        {userList.data().map(user => (
          <li key={user.id}>{user.name}</li>
        ))}
      </ul>
    )}
  </div>
);

Protocol-based Components

// Register components globally
core.registerComponents({
  Button: ({ children, ...props }) => (
    <button className="px-4 py-2 bg-blue-500 text-white rounded" {...props}>
      {children}
    </button>
  )
});

// Use with e- prefix
const App = () => (
  <div>
    <e-Button onClick={() => console.log('Clicked!')}>
      Click me
    </e-Button>
  </div>
);

📦 Included Modules

The Eficy package includes the following core modules:

Core Framework

  • @eficy/core-jsx - Third-generation core engine based on custom JSX runtime
  • @eficy/reactive - High-performance reactive state management system
  • @eficy/reactive-react - React reactive integration
  • @eficy/reactive-async - Async reactive support

Built-in Plugins

  • @eficy/plugin-unocss - UnoCSS atomic CSS auto-generation plugin

Special Packages

  • @eficy/browser - Browser-ready bundle for no-compilation usage

🖥 Environment Support

  • Modern browsers
  • Node.js environments
  • Server-side Rendering
  • Electron

| IE / Edge | Firefox | Chrome | Safari | Electron | |---|---|---|---|---| | IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions |

📚 Related Documentation

🔗 API Reference

Core API

  • create() - Create a pre-configured Eficy instance
  • EficyProvider - Component that provides Eficy context
  • useEficyContext() - Hook to get Eficy instance

Reactive API

  • signal(value) - Create reactive signal
  • computed(fn) - Create computed property
  • asyncSignal(fn, options) - Create async signal
  • useObserver(fn) - React Hook to observe signal changes

Plugin API

  • core.install(Plugin, config) - Install plugin
  • core.registerComponent(name, component) - Register single component
  • core.registerComponents(components) - Batch register components

🤝 Contributing

We welcome issues and pull requests!

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add some amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

MIT License - see LICENSE file for details

🙏 Acknowledgements

Thanks for the inspiration and support from the following open-source projects: