A plugin-based universal web framework

Fusion.js gives you the developer experience you expect from a React/Redux setup and provides tools to take project quality to the next level.
Let's get started >

Build more, configure less

Universal plugins enable one-liner library integrations with even the most complex requirements

import App from 'fusion-react';
import Router from 'fusion-plugin-react-router';

const root = <div>...</div>;

export default () => {
  const app = new App(root);

  One line of code sets up everything you need for routing:
  - Server rendering
  - React Providers on both server and browser
  - Bundle splitting integration
  - HMR integration
  - Metadata hydration

  return app;

Manage complexity like a boss

Testable, statically typed primitives that don't get in your way

/* @flow */

import {createPlugin, createToken} from 'fusion/core';
import {UserServiceToken as User} from './user';
import {ProjectServiceToken as Project} from './project';

export const TeamServiceToken = createToken('TeamServiceToken');
export const TeamService = createPlugin({
  deps: {User, Project},
  provides: ({User, Project}) => ({
    async findByProjectId(projectId) {
      const {users} = await Project.findById(projectId);
      return Promise.all(users.map(id => User.findById(id)));

Core features

  • Plugin-based architecture and DI system for maintainability
  • Out-of-the-box support for server-rendering of React components, bundle splitting and hot module reloading
  • Tree-shaking support on universal code
  • Ready-to-use testing environment with Jest, Enzyme, Puppeteer and integration test utilities

Plugin integrations

Fusion.js core team

Fusion.js Core Team

Meet the Fusion.js core team. They work on the Fusion.js core and default plugins. Start contributing and join us today!

Fusion.js support

Need help?

Find out how to get help from the Fusion.js community on the support page.

Fusion.js GitHub


Have a question about Fusion or want to contribute? Check it out on GitHub.