Extending Reactium
Reactium is designed to make modular React applications easy to create.
Reactium is extended primarily a number of Domain Driven Design (DDD) artifacts, that you can place throughout your project, as well as in Node modules and Reactium plugin modules, the implementation of one or or more runtime build-time or run-time hooks, and the use and extension of the Reactium SDK.
By default, Reactium can be treated much like any other React application. Our intention is to provide a small set of impactful opinions, but without taking away your ability to make decisions for your app as much as possible.
Reactium is extended by either a Build-time plugin or a Run-time plugin.

Which do I need?

Build-time Plugin
Run-time Plugin
Use this pattern if you just want your project organized well for modularity and reuse, and can rebuild / redeploy when you need new functionality.
Use this pattern when you want to be able to introduce new functionality to your app at run-time by loading from a <script> tag. For example, say you have premium or 3rd-party features that can't be compiled into your project.
In technical terms, this means you can achieve a Micro-Frontend Architecture without special webpack configuration in either your main project, or your plugin projects. This differs from the strategy used for module federation for the most recent versions of webpack (5+).
Components are shared and consumed programmatically, not by special build configuration.

What is the simplest plugin?

Build-time Plugin
Run-time Plugin

Generated By

arcli component
In any sub-directory of src/app, reactium_modules, node_modules/**/reactium-plugin, any of the following DDD artifacts are found:
  • route.js
  • services.js
  • zone.js
  • reactium-hooks.js
  • domain.js
  • _reactium-style*.scss (node_modules excluded)
  • reactium-gulp.js
  • reactium-webpack.js
  • reactium-boot.js
Of the above, reactium-hooks.js can be (is often) the most significant bind-point, and is the most relevant artifact to discussing Run-time plugins.
Pre-compiled UMD javascript module loaded into the browser with similar content to what can be found in reactium-hooks.js for Build-time plugins.