Universal plugin ecosystem for dynamic module sharing
Expozr enables any web bundler to expose and consume modules at runtime, creating a truly decentralized application architecture that's simpler and more flexible than traditional approaches.
๐ง Current Status: Expozr is in active development. The core functionality and Webpack adapter are working with examples available. See examples for working demos.
The application that exposes modules. Think of it as a supplier in the ecosystem.
- Contains the actual implementation of shared components/utilities
- Generates an Inventory (exposure map)
- Can be deployed independently
The application that consumes exposed modules from expozrs.
- Loads modules from Expozrs at runtime
- Uses a Catalog to discover available modules
- Handles dependency resolution automatically
Individual module/component being shared.
- Can be a React component, utility function, entire library, etc.
- Has metadata: name, version, dependencies, entry point
- Loaded dynamically at runtime
JSON manifest generated by Expozrs that lists all available Cargo with metadata.
Universal runtime system that handles dynamic loading, dependency resolution, and caching.
The fastest way to understand Expozr is to run the examples! We have working examples for different bundlers and frameworks. Check out the examples directory for complete working examples and detailed setup instructions.
โก๏ธ View all examples
| Example | Description | Stack |
|---|---|---|
| Webpack + Get Started | Simplest possible setup | TypeScript |
| Webpack + Vanilla | Basic module sharing | Vanilla JS + TypeScript |
| Webpack + React | React component sharing | React + TypeScript |
| Webpack + Express (Node.js) | Express server module sharing (ESM) | Node.js + Express + TypeScript |
| Webpack + ESM | Modern ES modules | ESM + TypeScript |
| Webpack + UMD | Universal module format | UMD + TypeScript |
| Vite + React | Vite React components | Vite + React + TS |
Try the simplest Get Started example:
# 1. Clone and setup
git clone https://github.com/brunos3d/expozr.git
cd expozr
npm install && npm run build
# 2. Start the expozr (port 3001)
cd examples/webpack/get-started/remote
npm run dev
# 3. In a new terminal, start the host (port 3000)
cd examples/webpack/get-started/host
npm run dev
# 4. Open http://localhost:3000 in your browserThat's it! You'll see the host loading and using utilities from the remote expozr in real-time.
- โ Automatic Config Discovery: Zero configuration needed
- โ Runtime Module Loading: Modules loaded dynamically from remote
- โ Hot Reloading: Changes update instantly in development
- โ Error Handling: Clear error messages and troubleshooting
- ๐ Bundler Agnostic: Works with any bundler (Webpack, Vite, Rollup, Rspack, etc.)
- โจ Multi-Format Support: ESM, UMD, CJS, AMD, IIFE, SystemJS with automatic detection
- ๐ง Intelligent Fallbacks: Graceful degradation when preferred formats fail
- โก Hybrid Mode: Load both ESM and UMD versions of the same module
- ๐ Dynamic Loading: Load modules at runtime without build-time coupling
- ๐ฏ Smart Format Detection: Automatically detects and loads the best available format
- ๐ ๏ธ Error Recovery: Comprehensive error handling with detailed feedback
- ๐ Format Tracking: Monitor which formats are successfully loaded
- ๐ง Great DX: Simple APIs, CLI tools, and comprehensive documentation
- ๐๏ธ TypeScript First: Full type safety with intelligent autocompletion
- ๐ฑ Cross-Platform: Works seamlessly in Browser and Node.js environments
- ๐ฅ Hot Reloading: Development-time module reloading support
- ๐ Version Management: Semantic versioning with automatic resolution
- ๐๏ธ Dependency Resolution: Smart dependency handling and conflict resolution
- โ๏ธ Configuration Presets: Pre-built configurations for common scenarios
- ๐ ๏ธ Plugin Architecture: Extensible system for custom functionality
- ๐พ Multiple Strategies: Memory, localStorage, IndexedDB, or no caching
- โฑ๏ธ TTL Support: Time-based cache invalidation
- ๐ง Cache Analytics: Monitor cache performance and hit rates
- ๐ Smart Invalidation: Automatic cache updates when modules change
- ๐ก๏ธ Error Boundaries: Graceful error handling and recovery
- ๐ Performance Monitoring: Track loading times and cache efficiency
- ๏ฟฝ Debug Mode: Detailed logging for development and troubleshooting
- ๐ Optimized Loading: Preloading and lazy loading strategies
- @expozr/core - Core abstractions, types, and configuration system with multi-format module support (ESM, UMD, CJS)
- @expozr/navigator - Universal runtime loader with smart format detection, caching strategies, and cross-platform support
- @expozr/adapter-sdk - Shared SDK and utilities for building bundler adapters with configuration management and format utilities
- @expozr/webpack-adapter - Webpack 5+ support with inventory generation and hot reloading
- @expozr/vite-adapter - Vite support with ESM-first approach and development server integration
- @expozr/rollup-adapter - Rollup support (coming soon)
- @expozr/rspack-adapter - Rspack support (coming soon)
- @expozr/react - React component loading utilities
- @expozr/cli - Command line tools
| Bundler | Status | Package |
|---|---|---|
| Webpack 5+ | โ Ready | @expozr/webpack-adapter |
| Vite | โ Ready | @expozr/vite-adapter |
| esbuild | ๐ Planned | @expozr/esbuild-adapter |
| Rollup | ๐ Planned | @expozr/rollup-adapter |
| Rspack | ๐ Planned | @expozr/rspack-adapter |
| Parcel | ๐ Planned | @expozr/parcel-adapter |
| Bun | ๐ Planned | @expozr/bun-adapter |
| Turbopack | ๐ Planned | @expozr/turbopack-adapter |
| SWC | ๐ Planned | @expozr/swc-adapter |
| Farm | ๐ Planned | @expozr/farm-adapter |
| Framework | Status | Package | Features |
|---|---|---|---|
| Vanilla JS | โ Ready | @expozr/core | Universal module loading |
| React | โ Ready | @expozr/react | Component loading, Suspense integration |
| Next.js | ๐ Planned | @expozr/nextjs | SSR/SSG support, App Router integration |
| Modern.js | ๐ Planned | @expozr/modernjs | Module federation, SSR support |
| Remix | ๐ Planned | @expozr/remix | Route-based loading, loader integration |
| Gatsby | ๐ Planned | @expozr/gatsby | Static generation, build-time integration |
| Vue | ๐ Planned | @expozr/vue | Component loading, async components |
| Nuxt | ๐ Planned | @expozr/nuxt | SSR/SSG support, auto-imports |
| Angular | ๐ Planned | @expozr/angular | Module loading, lazy loading integration |
| Svelte | ๐ Planned | @expozr/svelte | Component loading, reactive updates |
| SvelteKit | ๐ Planned | @expozr/sveltekit | SSR support, route-based loading |
| Solid | ๐ Planned | @expozr/solid | Component loading, lazy components |
| SolidStart | ๐ Planned | @expozr/solidstart | SSR support, file-based routing |
| Astro | ๐ Planned | @expozr/astro | Multi-framework support, island loading |
| Qwik | ๐ Planned | @expozr/qwik | Resumable components, edge optimization |
| Lit | ๐ Planned | @expozr/lit | Web component loading |
| Tool | Status | Package | Features |
|---|---|---|---|
| Node.js | โ Ready | @expozr/core | Native runtime support |
| npm | โ Ready | @expozr/core | Standard package manager support |
| TypeScript | โ Ready | @expozr/core | Full TypeScript support |
| Bun | ๐ Planned | @expozr/bun | All-in-one runtime, package manager, bundler |
| Deno | ๐ Planned | @expozr/deno | Secure runtime, built-in tooling |
| Nx | ๐ Planned | @expozr/nx | Monorepo integration, workspace management |
| Turbopack | ๐ Planned | @expozr/turbopack | Fast builds, incremental compilation |
| Turborepo | ๐ Planned | @expozr/turborepo | Monorepo builds, remote caching |
| Lerna | ๐ Planned | @expozr/lerna | Package publishing, version management |
| Rush | ๐ Planned | @expozr/rush | Scalable monorepo, dependency management |
| Changesets | ๐ Planned | @expozr/changesets | Version management, changelog generation |
| pnpm | ๐ Planned | @expozr/pnpm | Workspace support, efficient installs |
| Yarn PnP | ๐ Planned | @expozr/yarn-pnp | Zero-installs, workspace optimization |
| esbuild | ๐ Planned | @expozr/esbuild | Ultra-fast builds, module transformation |
| SWC | ๐ Planned | @expozr/swc | Fast compilation, TypeScript support |
| Babel | ๐ Planned | @expozr/babel | Code transformation, plugin ecosystem |
| Biome | ๐ Planned | @expozr/biome | Linting integration, code formatting |
| ESLint | ๐ Planned | @expozr/eslint | Code quality, custom rules |
| Prettier | ๐ Planned | @expozr/prettier | Code formatting integration |
| Husky | ๐ Planned | @expozr/husky | Git hooks, pre-commit validation |
| Vitest | ๐ Planned | @expozr/vitest | Testing integration, module mocking |
| Jest | ๐ Planned | @expozr/jest | Testing framework integration |
| Playwright | ๐ Planned | @expozr/playwright | E2E testing, module loading tests |
| Storybook | ๐ Planned | @expozr/storybook | Component documentation, isolated testing |
- Core library and types
- Navigator runtime system
- Webpack adapter
- Vite adapter
- React utilities
- Working examples (Get Started, Vanilla, React, ESM, UMD, Vite)
- Basic CLI tools (in beta)
- Stable CLI with templates
- Rollup adapter
- Advanced CLI features
- More framework examples (Vue, Angular, Svelte)
- Documentation website
- Performance optimizations
- Security features
- Monitoring tools
- Registry service
- VS Code extension
- Plugin marketplace
- Community tools
- Enterprise features
We welcome contributions! Please see our Contributing Guide for details.
MIT ยฉ Bruno Silva