Skip to content

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
FrameworkPackageVersionsThe chatIts stateThe 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.0AparteChatComponentthe component, by viewChildprovideAparte(), 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 — AparteUiComponent in 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 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.