Library / SDK
alibaba-fusion/next avatar
alibaba-fusion/next

The theme pipeline is the product, and react@16 is the floor

🦍 A configurable component library for web built on React.

4,679 stars597 forksTypeScriptMIT

At a glance

What is it?
alibaba-fusion/next publishes @alifd/next, a component library for backend systems that is normally used together with the Fusion Design platform. The components are the substrate; the designer to developer handoff, expressed as an npm theme package, is what the project is actually built around.
Who is it for?
alibaba's @alifd/next fits a team already inside the Fusion Design workflow, where designers publish theme packages as npm modules and developers consume them without touching component CSS. It does not fit a team that just wants a React component set, because the value the page sells lives in the collaboration platform, and the stated floor is react@16 with moment as a required peer dependency.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 5, 2026, and from our analysis. They are not legal advice.

Editorial analysis

react@16 is the stated floor and moment comes with it

The dependency section is short and it carries the two constraints that matter most. The library is based on react@16 development and is currently not compatible with versions below react@16. React and React DOM are peerDependencies, so you install them yourself rather than inheriting a copy. Moment is the second one: it is used for the date and time components and is also a peerDependency you must install or import. That arrangement means a bundle decision is being pushed onto you at install time, because the library will not bring either package along. Nothing on this page states a supported range above 16, so if your application is on a later React major, the page gives you no basis for a decision and you have to test it. The moment requirement is the one people forget, and it arrives as an explicit install rather than a resolution.

Per component imports pull their own styles

There are two import routes and they produce different bundles. Importing everything looks like this:

js
import '@alifd/next/dist/next.css';
// import '@alifd/next/index.scss';

import { Button, Input } from '@alifd/next';

Importing one module by hand pulls its style with it:

js
import Button from '@alifd/next/lib/button';
import '@alifd/next/lib/button/style';

The recommended route is to let babel-plugin-import do the second form for you:

js
// webpack babel loader option or .babelrc
{
    // ...
    plugins: [
        [
            'import',
            {
                libraryName: '@alifd/next',
                style: true,
            },
        ],
    ],
}

With style set to true, the plugin rewrites a named import such as Button from the package root into the module path plus its style import. The style side effect is declared in package.json rather than left to convention, which is what lets the transform be safe under tree shaking.

The same files load in a browser as a global called Next

There is a second distribution route for pages that are not bundled. The npm package ships next.js and next.min.js alongside next.css and next.min.css in its dist directory, and the page shows how to load them directly:

html
<link rel="stylesheet" href="https://unpkg.com/@alifd/next/dist/next.css" />

<script src="https://unpkg.com/@alifd/next/dist/next.js"></script>

// The above ways import latest @alifd/next, we recommend you specify version.
<script src="https://unpkg.com/@alifd/[email protected]/dist/next.min.js"></script>

// Or import as your own static resource
<script src="../build/public/@alifd/next.js"></script>

The component library lands as a global variable called Next, so there is no module system involved. Two things are worth noticing. Unpinned script tags resolve to the latest published version, which is why the page recommends naming a version. And the version it names in its own example is 1.8.6, while the package version in package.json is 1.27.34, so copying the example verbatim gives you a much older build than the current one.

The theme package is the artefact developers actually install

The reason the page gives for using this library is not the component count, it is the handoff. A designer customises the UI of components in Fusion Design and releases the result as an npm theme package. A developer installs that package and uses it directly, with no UI refactoring of their own. The page names the supporting tools on both sides: Fusion Cool, described as an easy to use plugin on sketch, hands design materials to designers, and IceWorks hands code fragments to developers, and the claim is that consistency between the code and the visual manuscript is guaranteed. So the collaboration platform is the point and the component library is the substrate. Three further guides sit under site/en-us for the cases this workflow creates: using a theme package, internationalization, and deploying a font file.

The browser support table has lost its header row

The compatibility section is a seven column table of check marks, and the column headings are not present. Six cells are a plain tick and one reads 9+ next to its tick. There is no way to tell from this page which browser each column stands for, or which one carries the version floor, so the table cannot be used to decide whether a target browser is supported. That is a real gap for an enterprise component library, where the browser matrix is usually the first question an infrastructure team asks, and it is not answered elsewhere on the page. The documentation directory and the site sources in the tree are where you would look instead. Reading the table as it stands, the honest summary is that the project claims support across seven targets without naming any of them.

The published tarball carries es, lib, types and .fusion

package.json describes the package shape precisely. The files array ships dist, es, lib and types, the stylesheet and reset entry points including index.scss, index.css, reset.scss, reset.css, variables.scss, components.css equivalents, index-noreset.scss and index.js, index-with-locales.js, and a hidden .fusion entry. The .fusion file matters more than it looks: a theme package and the platform have to be able to identify each other, and that entry is how the descriptor travels inside the npm tarball. Entry points are main at index.js, module at es/index.js, and typings at types/index.d.ts, so a bundler gets the ES build while a CommonJS consumer gets the compiled one. A sideEffects list marks dist, the per module style.js and style2.js files in both es and lib, and every scss and css file as side effectful, which is what allows the babel transform from the previous section to drop unused components safely.

Tags are named build/1.27.x and versioning lives in the manifest

The published releases are named with a build prefix: build/1.27.34 on 2026-03-31, build/1.27.33 on 2025-12-01 and build/1.27.32 on 2025-03-10. The version in package.json is 1.27.34, matching the newest tag, and the default branch is master. Two consequences for tooling. A dependency pin written as a plain semver range still resolves through npm, but anyone reading git tags has to know the tag is not a bare version string, and automation that parses refs has to strip the prefix. And the gap between tags is months, not days: 1.27.32 to 1.27.33 spans about nine months. The last push to master was on 2026-10-04, so commits continue to land after the newest tag, which means the tag you depend on and the head of the branch are different things.

Checks, builds and releases are all ts-node scripts

The tooling is visible in the scripts section rather than hidden behind a framework. Build is ts-node ./tools/build/index.ts, with separate transform, sass, docs and dist entry points, and there is a dev server at ts-node ./tools/serve/index.ts. Checks run through ts-node ./tools/checkers/index.ts with a changed-only variant, linting is eslint driven with .eslintrc, .eslintignore and a separate a11y.eslintrc for accessibility rules, and formatting is prettier with .prettierrc and .prettierignore. Changelog and release are scripts too, including a release:ding target for the DingTalk group and a release:github target. The theme server is run with node --max_old_space_size=8192, which tells you theme generation wants eight gigabytes of heap. Testing spans TESTING.md, cypress.config.ts and a cypress directory, with vite.config.ts for local development while the CI badges point at travis-ci and codecov.

Editorial conclusion

alibaba's @alifd/next fits a team already inside the Fusion Design workflow, where designers publish theme packages as npm modules and developers consume them without touching component CSS. It does not fit a team that just wants a React component set, because the value the page sells lives in the collaboration platform, and the stated floor is react@16 with moment as a required peer dependency. Before you adopt it, confirm your React version is not below 16, decide whether you want per component imports with styles or the whole library through next.css, and check which unpkg version you pin, because the page's own CDN example points at 1.8.6 while the package version is 1.27.34.

Frequently asked questions

What is @alifd/next?

It is a configurable component library for web built on React, published to npm as @alifd/next and described as an enterprise-class UI solution for backend systems. The page positions it as something usually used together with Fusion Design to improve designer and developer collaboration.

How do I install @alifd/next?

Run `npm install @alifd/next --save`, or load next.css and next.js from the dist directory with link and script tags, including through unpkg. React, React DOM and moment are peer dependencies that you install or import yourself.

Which React versions does @alifd/next support?

The page states it is based on react@16 development and is currently not compatible with versions below react@16. No upper bound is given, so a newer React major is not covered by the documentation.

How do I use a Fusion theme with @alifd/next?

A designer customises the UI of components in Fusion Design and releases an npm theme package, and a developer uses that package directly without doing UI refactoring. Guides for theme packages, internationalization and font deployment live under site/en-us.

Can I load @alifd/next from a CDN?

Yes. Use link and script tags with files such as next.js, next.min.js, next.css and next.min.css from the @alifd/next/dist directory, or the same paths on unpkg, and the library is available as a global variable called Next. The page recommends specifying a version, and its own example pins 1.8.6.

Official sources

  1. alibaba-fusion/next on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/alibaba-fusion-next.svg)](https://hysenlabs.com/projects/alibaba-fusion-next)