# Integrations

> The web SDK works in any framework. Each page here is a small app we install, build and run in Chrome every week, so the code works as written.

The web SDK is one npm package: the core as WebAssembly, a renderer for the page, a React component, and a stylesheet. It works with any framework and any package manager. Each integration needs the same three things:

1. **The stylesheet:** import `@morphscreen/web/morphscreen.css` once.
2. **The core, served as a file:** `morphscreen.wasm` (or `morphscreen-agent.wasm` for `connectAgent`) from the package, at an address `loadCore` can fetch. How depends on your build tool, and each page shows it.
3. **The browser only:** the core runs in the browser. On a framework that renders on the server, load it in a client component or after mount.

## Frameworks

- [React](/docs/integrations/react): the `<Answer>` component, with Vite.
- [Next.js](/docs/integrations/nextjs): the App Router, the page rendered on the server and the answer in a client component.
- [Vue and Nuxt](/docs/integrations/vue): a client-only component.
- [Svelte and SvelteKit](/docs/integrations/svelte): `onMount`, with the core imported as a URL.
- [Angular](/docs/integrations/angular): the core as an asset, after the view starts.
- [Plain JavaScript](/docs/integrations/vanilla): `createAnswer` with Vite and no framework.
- [webpack](/docs/integrations/webpack): the core as an asset module.

## Package managers

Every package manager works: npm, pnpm, Yarn (with node_modules or Plug'n'Play) and bun. We install with each of them under Vite every week.

## On your server

Your server keeps the key and talks to MorphScreen: [Node.js](/docs/integrations/node), [Python](/docs/integrations/python), or [HTML with no JavaScript](/docs/integrations/html) for pages drawn on the server.

In these examples a saved answer stands in for your server's stream, so they run anywhere. In your app, the text comes from your server's route ([Quick start](/docs/quickstart)).
