third-party-components

Wrap npm Web Components and React components for Vaadin 25 Flow applications.

11|3|Updated Feb 26, 2026
One-click install
npx skills add https://github.com/vaadin/claude-plugin --skill third-party-components
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: third-party-components
Source: https://github.com/vaadin/claude-plugin/tree/main/skills/third-party-components
Command: npx skills add https://github.com/vaadin/claude-plugin --skill third-party-components

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Developers need a clear, repeatable way to wrap and integrate third-party Web Components and React components from npm into Vaadin 25 Flow applications. This integration is complex due to mismatched packaging formats, annotation requirements, and differing state-synchronization models. This Skill guides you through two primary paths and best practices so wrappers work reliably in production.

Core Features & Use Cases

  • Web Component path: create Java wrappers using @Tag, @NpmPackage, and @JsModule with proper property handling, DomEvent mappings, and optional Binder support via AbstractSinglePropertyField.
  • React path: implement a thin ReactAdapterComponent and a TSX ReactAdapterElement to bridge server state and client UI, including stable initialization via setState and binder-friendly updates.
  • Use Cases: wrap npm Web Components or React components for Vaadin 25 apps, enable property synchronization, handle events, and optionally embed Flow components inside React adapters.

Quick Start

Create a minimal wrapper using the Web Component path with @Tag, @NpmPackage, and @JsModule, then validate a simple property binding and a DOM event.

Frequently Asked Questions about third-party-components

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I integrate third-party npm Web Components into a Vaadin 25 Flow application?▼

Integrating npm Web Components in Vaadin 25 involves creating Java wrappers using @Tag, @NpmPackage, and @JsModule annotations. This approach ensures proper property handling, DOM event mapping, and optional Binder compatibility for reliable production use.

Can I use React components from npm inside a Vaadin 25 Flow application?▼

Yes, you can use React components in Vaadin 25 by implementing a ReactAdapterComponent and a ReactAdapterElement via a TSX file. This adapter pattern bridges server state and client UI while supporting stable initialization and binder-friendly updates.

What is the best way to synchronize component state between the server and client in Vaadin 25?▼

State synchronization in Vaadin 25 is best handled through property descriptors and event listeners for Web Components, or via setState in React adapters. This ensures stable client-side initialization and binder-friendly server-state updates.

How do I make a wrapped Web Component compatible with the Vaadin Binder?▼

To make a Web Component compatible with the Vaadin Binder, extend the AbstractSinglePropertyField class in your Java wrapper. This creates a single-property field that automatically supports state synchronization and validation within the Binder framework.

Does Vaadin 25 support embedding Flow components inside a React adapter?▼

Yes, Vaadin 25 supports embedding Flow components within React adapters using the getContent feature. This allows you to nest server-side Vaadin UI elements directly inside your client-side React components seamlessly.

Why do my wrapped npm components fail to handle DOM events in Vaadin 25?▼

Wrapped npm components fail to handle DOM events in Vaadin 25 when the @DomEvent annotation mapping is missing or incorrect. Properly mapping client-side CustomEvent firing to server-side listeners resolves the synchronization failure.