// the find
stenciljs/core
A toolchain for building scalable, enterprise-ready component systems on top of TypeScript and Web Component standards. Stencil components can be distributed natively to React, Angular, Vue, (+ more) and traditional web applications from a single, framework-agnostic codebase.
Stencil is the compiler Ionic built to generate standard Web Components from a React-like TSX/decorator syntax, so you write components once and ship them as native custom elements usable in Angular, React, Vue, or plain HTML. It's aimed at teams building a design system or component library that has to serve multiple frontend stacks, not at people building a single app.
The output is genuinely framework-agnostic — you get real custom elements with automatic lazy-loading and code-splitting per component, not a React library with a compatibility shim bolted on. It's been battle-tested at scale: it's the toolchain behind Ionic Framework itself, so the compiler has to handle large, real component sets, not just toy examples. Built-in SSR/SSG via the hydrate app output target is a genuine differentiator over most component-library tooling, which punts on server rendering entirely.
The decorator-based API (@Component, @Prop, @State) is a DSL you have to learn on top of TypeScript and JSX, and it doesn't transfer to anything else you'll work on — it's Stencil-only knowledge. Shadow DOM styling and slot projection are where teams hit real friction, especially when a design system needs to support theming across the consuming frameworks it's supposedly agnostic to. The repo's test workflows (jest.config.js alongside a separate test-wdio.yml) suggest an in-progress migration off the old Jest/Puppeteer-based testing story, which has historically been one of Stencil's weaker points compared to component-first tools like Storybook-native setups.