
Security News
rv Is a New Rust-Powered Ruby Version Manager Inspired by Python's uv
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
vanilla-native-federation
Advanced tools
A lightweight **runtime micro frontend orchestrator** that loads micro frontends built with native federation into any web page. Unlike other solutions, it caches dependencies across page reloads, making it perfect for traditional server-rendered apps (PH
A lightweight runtime micro frontend orchestrator that loads micro frontends built with native federation into any web page. Unlike other solutions, it caches dependencies across page reloads, making it perfect for traditional server-rendered apps (PHP, Java, Rails, etc.) that refresh on navigation. Drop it into any HTML page with a script tag - no build tools or framework migrations required.
Important! We are planning on releasing v1 soon, for that we need feedback on what is still missing on the library and what is working well. Please feel free to create an issue or feature request. All feedback is welcome!
The library runs in the browser to orchestrate the integration of micro frontends into plain HTML pages. While the main application can be server-rendered, the micro frontends are loaded as ES modules at runtime, providing the benefits of micro frontend architecture without requiring a full SPA framework for the host.
This library provides an alternative runtime to @softarc/native-federation-runtime, extending native federation capabilities specifically for non-SPA environments while maintaining full compatibility with the broader ecosystem. It can load any remotes that have been built using @softarc/native-federation and expose a remoteEntry.json
metadata file.
This orchestrator offers the possibility to cache the remoteEntries in localStorage or sessionStorage. This way the downloaded dependencies can be reused, even over multiple page changes. This is not an issue with SPA websites that don't reload the page on rerouting but essential to traditional websites where every route is a full page refresh.
Get up and running in under 2 minutes:
<!DOCTYPE html>
<html>
<head>
<title>My Application</title>
<!-- Define your micro frontends (remotes) -->
<script type="application/json" id="mfe-manifest">
{
"team/mfe1": "http://localhost:3000/remoteEntry.json",
"team/mfe2": "http://localhost:4000/remoteEntry.json"
}
</script>
<!-- Handle loaded modules -->
<script>
window.addEventListener(
'mfe-loader-available',
e => {
// Load your remote modules, a remote can have multiple modules
e.detail.loadRemoteModule('team/mfe1', './Button');
e.detail.loadRemoteModule('team/mfe2', './Header');
},
{ once: true }
);
</script>
<!-- Include the orchestrator runtime -->
<script src="https://unpkg.com/vanilla-native-federation@0.19.3/quickstart.mjs"></script>
</head>
<body>
<!-- Use your loaded components -->
<my-header></my-header>
<my-button>Click me!</my-button>
</body>
</html>
Your micro frontends are now loaded and ready to use. The runtime handles:
<!-- Development and quick testing -->
<script src="https://unpkg.com/vanilla-native-federation@0.19.3/quickstart.mjs"></script>
The quickstart is intended for experimenting. For production environments it is recommended to use a custom orchestrator based on the vnf library, this gives more control over the initialization process and allows for custom logging implementations like Bugsnag or Sentry rather than the default consoleLogger
:
import { initFederation } from 'vanilla-native-federation';
import { consoleLogger, localStorageEntry } from 'vanilla-native-federation/options';
const { loadRemoteModule } = await initFederation(
// Manifest
{
'team/mfe1': 'http://localhost:3000/remoteEntry.json',
'team/mfe2': 'http://localhost:4000/remoteEntry.json',
},
// Options
{
logLevel: 'error',
logger: consoleLogger,
storage: localStorageEntry,
// ... see docs for all available options
}
);
// Load specific modules
const ButtonComponent = await loadRemoteModule('team/mfe1', './Button');
const HeaderComponent = await loadRemoteModule('team/mfe2', './Header');
📖 See the Configuration Guide for complete configuration options
Guide | Description |
---|---|
🚀 Getting Started | Detailed setup instructions and examples |
🏗️ Architecture | Understanding the native federation domain |
⚙️ Configuration | Complete configuration reference |
🔄 Version Resolution | How dependency conflicts are resolved |
This library is part of the broader native federation
ecosystem: | Purpose |
---|---|
@softarc/native-federation | Core build toolchain |
@softarc/native-federation-runtime | Core runtime |
vanilla-native-federation | Alternative runtime |
@angular-architects/native-federation | Build toolchain for Angular |
✅ Full compatibility with standard remoteEntry.json format ensures seamless interoperability
While this orchestrator focusses on compatibility and native-federation support. There are other orchestrators out there that provide support for other use cases:
Package | EcoSystem | Description |
---|---|---|
@softarc/native-federation-runtime | Native federation | The default provided orchestrator for native federation |
picard | native-federation, module-federation and Piral | An agnostic orchestrator that focusses on compatibility between ecosystems |
@module-federation/runtime | module federation | The orchestrator specifically for module federation |
🧠 It is recommended to expose webcomponents as remote modules to ensure maximum compatibility
FAQs
A lightweight **runtime micro frontend orchestrator** that loads micro frontends built with native federation into any web page. Unlike other solutions, it caches dependencies across page reloads, making it perfect for traditional server-rendered apps (PH
The npm package vanilla-native-federation receives a total of 222 weekly downloads. As such, vanilla-native-federation popularity was classified as not popular.
We found that vanilla-native-federation demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.