# Picard.js > Picard.js (npm: `picard-js`) is a framework-agnostic micro frontend orchestrator. It loads micro frontends (pilets, Module Federation, Native Federation) from a discovery service ("feed") or from URLs, and mounts their components into custom elements (`pi-component`, `pi-slot`). It runs in the browser, and on the server (Node.js, Bun, Deno) for SSR/SSG with an islands architecture. Picard.js is in early preview (0.3.x pre-releases). Prefer the latest `picard-js` 0.3.0 pre-release; APIs below refer to it. ## Essentials for writing code with Picard.js Pick the variant by environment: - Website without a bundler: ``. It starts automatically; configure it via attributes (`feed`), or a `config` property set in the script's `onload` handler. - Bundled app (SPA, Electron, Tauri, Capacitor): `import { initializePicard } from 'picard-js/client'; initializePicard({ feed: 'FEED_URL' });`. Call it once at startup, e.g., next to bootstrapping the framework. - Server or build time: `import { initializePicard, getIslandsFile, getIslandsFileNames } from 'picard-js/node';` - Don't use `picard-js/client` with Metro (React Native). Use the browser script in a WebView instead. Render a component of a micro frontend listed in the feed: ```html ``` - `name` is the exposed component, `source` is the micro frontend's name in the feed (or a URL together with `format="module|native|pilet"`; Module Federation v1 also needs `remote-name`, plus `remote-type="esm"` for ES module remotes). - `data` is JSON. The `data` property accepts an object or a JSON string. Changing it calls the component's `update` lifecycle, not a re-mount. - `fallback-template-id` / `loading-template-id` reference `