Use aparté in React, Vue, Svelte or Angular
Pick the package for your framework — a chat component, typed tags for every element, and a way to mount any custom element — over the same web components.
On this page
Pick the package
Section titled “Pick the package”| Framework | Package | Versions | The chat | Its state | The client |
|---|---|---|---|---|---|
| React | @aparte/react | ^18.0.0 || ^19.0.0 | <AparteChat> | useAparteChat() | useAparteClient() |
| Vue | @aparte/vue | ^3.5.0 | <AparteChat> | useAparteChat() | useAparteClient() |
| Svelte | @aparte/svelte | ^4.0.0 || ^5.0.0 | <AparteChat> | createAparteChat() | createAparteClient() |
| Angular | @aparte/angular | ^19.2.0 | AparteChatComponent | the component, by viewChild | provideAparte(), AparteAiService |
@aparte/core is web components, so it works in any framework as it is; a wrapper adds the
framework’s idiom — refs, events and lifecycle wired for you. Each one gives you:
- a chat component, the whole chat with its slots and callbacks;
- typed tags for every element of core, real attributes and real events checked by your compiler, to place a select, a conversation list or a composer of your own (Elements, typed); a plugin’s element, like the model selector, is typed by the plugin;
AparteUi—AparteUiComponentin Angular — which mounts any custom element as a component, for an element of yours or a third party’s.
A wrapper depends on @aparte/core alone, never on a provider: register the one you want
(Connect a model).
The same in all four
Section titled “The same in all four”The same slots — empty-state, composer, above-composer, toolbar and a bubble of your own
— and the same callbacks — messageSent, action, messagesChange, messageAppended,
typingChange and conversationCreated — each in its framework’s idiom.
Wrapper surface has the four syntaxes side by side, generated from the
wrappers’ source. Without a framework, the elements are the API:
Installation and first chat.