substance is a free, open source publishing project written in JavaScript and released under MIT. It has 2,733 GitHub stars, 121 forks and 41 open issues, and was last pushed 6 months ago. On this registry it ranks #18 of 46 tracked projects in Publishing, with 5 head-to-head comparisons available.

What is substance?

What it is

Substance is a JavaScript library for web-based content editing. It lives in the JavaScript and Content & Publishing / Publishing ecosystem, and it is distributed under the MIT license. The README describes it as a library that provides building blocks for realizing custom text editors and web-based publishing systems, and it was developed to power the online editing platform Substance.

The concrete problem it addresses is the need to edit content in web applications without accepting a fixed editor or publishing product. Because the README presents Substance as a library rather than a finished application, it is aimed at builders who need to compose their own text editor or web-based publishing system from JavaScript components. The topic list reinforces that scope by including annotations, editing, HTML, JavaScript, publishing, text-editor, and XML.

Key capabilities

  • It provides JavaScript building blocks for custom text editors.
  • It provides JavaScript building blocks for web-based publishing systems.
  • It was developed to power the online editing platform Substance.
  • Its topic list includes annotations, editing, HTML, JavaScript, publishing, text-editor, and XML.
  • It includes a browser test suite that can be run at http://localhost:4001/test after starting the development server.
  • It supports headless test execution through npm test.

Who uses it and how

  • Developers who need web-based content editing can use Substance as a JavaScript library.
  • Teams building custom text editors can use its building blocks.
  • Teams building web-based publishing systems can use it as part of the editing and publishing layer.
  • The online editing platform Substance uses it as the editing library it was developed to power.
  • Contributors and maintainers use npm install, npm start, the browser test suite, and npm test during development.

Getting started

The README shows the typical development path: install dependencies with npm install, start the development server with npm start, and open http://localhost:4001/test for the browser test suite. Headless tests can be run with npm test.

When to use it — and when not to

Use Substance when the goal is to build a web-based editing or publishing experience from JavaScript building blocks, especially when annotations, HTML, XML, and custom editor behavior matter. Do not choose it when a complete hosted editor, database, storage, or SMTP setup is required, because the provided facts show a library and development commands rather than a turnkey publishing product. The repository age, 41 open issues, and missing contributor count also suggest that adopters should review maintenance status before depending on it.

project readme (upstream, from github) — read inline

Substance.js Build Status

Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing system. It is developed to power our online editing platform Substance.

Development

Install the dev dependencies.

npm install

Run the dev server.

npm start

Navigate to http://localhost:4001/test for the running the browser test suite. The test suite is rebuilt as you make changes to the source files.

To run the test-suite headless.

$ npm test

Frequently asked questions

Is substance free to use?

substance is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does substance do?

A JavaScript library for web-based content editing.

What is substance written in?

substance is primarily written in JavaScript. Its source is publicly available at https://github.com/substance/substance, and it has 2,733 GitHub stars.