Hacker News Launch - FAQ Answers
Quick reference for responding to common questions during the HN launch.
๐ Comparison Questions
"How is this different from React/Vue/Svelte?"
Short answer: LARC complements React/Vue rather than replacing them. Use React for complex UIs, LARC for cards, modals, tables, and shared components. Reduce framework overhead by 60%+. Detailed answer:- React/Vue are full application frameworks with virtual DOM, JSX/templates, and complete state management
- LARC is a lightweight layer on top of Web Components that solves the "coordination problem"
- Use both together: Keep React for your complex product UI, use LARC for design system components that work everywhere
- Key difference: LARC components work with zero build in development, and mix across frameworks via PAN messaging
- React: ~140KB (React + ReactDOM + ecosystem)
- Vue: ~90KB (core + ecosystem)
- LARC Core Lite: 9KB minified (~3KB gzipped) โ
- LARC Core (full): 40KB minified (12KB gzipped)
- LARC Components: ~7KB per component minified
"How does PAN compare to Redux/Zustand/other state management?"
Short answer: PAN is a message bus, not a state store. Think MQTT for the browser. Components coordinate without coupling. Detailed answer:- Redux/Zustand: Centralized state stores with reducers/actions
- PAN: Decentralized messaging - components publish/subscribe to topics
- When to use PAN: Cross-component coordination, micro-frontends, framework interop
- When to use Redux: Complex app-wide state with strict rules and time-travel
- Can use both: PAN for component communication, Redux inside React components
- MQTT (pub/sub messaging)
- Redis Pub/Sub
- EventBus patterns
๐ Browser & Compatibility
"What's the browser support?"
Tested and supported:- Chrome 90+ โ
- Firefox 88+ โ
- Safari 14+ โ
- Edge 90+ โ
- ES Modules (
import/export) - Custom Elements v1
- Shadow DOM v1
- IntersectionObserver
"Does it work in Internet Explorer?"
No. IE doesn't support Custom Elements or ES Modules. Use polyfills if you must support IE, but we recommend modern browsers only.
๐จ Production & Readiness
"Is it production-ready?"
Yes, with caveats: Production-ready:- โ 261 tests passing (Chromium, Firefox, WebKit)
- โ Zero security vulnerabilities (npm audit)
- โ Published to npm (@larcjs/core@3.0.1)
- โ Used in real applications
- โ TypeScript support
- โ Semantic versioning
- ๐ก Young ecosystem (v3.0.1, launched 2024)
- ๐ก Small community (growing)
- ๐ก Component library still expanding
- ๐ก Best practices still emerging
- New projects willing to be early adopters
- Design systems and component libraries
- Micro-frontends
- Progressive enhancement
- Large enterprise apps with long lifespans
- Projects requiring extensive third-party components
"Who's using this in production?"
Currently used by:
- Early adopters building design systems
- Micro-frontend architectures
- Progressive web apps
๐ ๏ธ Build & Tooling
"Do I really not need a build step?"
Development: Zero build required. Write.mjs files, refresh browser.
Production: Build is optional but recommended:
- โ Minification (reduce size)
- โ Tree-shaking (remove unused code)
- โ Bundling (reduce HTTP requests)
- esbuild โก (recommended)
- Rollup
- Vite
- webpack
- Your choice
"What about TypeScript?"
Full TypeScript support:npm install @larcjs/core-types
npm install @larcjs/ui-types
Features:
- โ Type definitions for all components
- โ IDE autocomplete and IntelliSense
- โ Type-safe PAN messaging
- โ
Works in both
.tsand.jsfiles (JSDoc)
๐ฆ Dependencies & Size
"What are the dependencies?"
Core: Zero runtime dependencies. Dev dependencies:- Playwright (testing)
- esbuild (optional build)
- @larcjs/core-lite: 9KB minified (~3KB gzipped) โ Start here!
- @larcjs/core: 40KB minified (~12KB gzipped) - includes routing & debug
- @larcjs/ui: 396KB minified (~110KB gzipped) - 57 components
"Why should I add another framework?"
You're not adding a framework, you're reducing one. Before LARC:- React app: 500KB bundle
- Every component tightly coupled
- React (complex UI): 350KB
- LARC (core + 8 components): ~100KB minified
- Total: 450KB (-10% from pure React approach)
- Components work in Vue, Svelte, vanilla JS
- No lock-in to React version
- Easier to migrate frameworks later
- Use only what you need (57 components available, load on demand)
๐ฏ Learning Curve
"How hard is it to learn?"
If you know:- HTML โ
- JavaScript โ
- ES Modules โ
- Custom Elements (2 methods:
connectedCallback,disconnectedCallback) - Shadow DOM (optional, for style encapsulation)
- PAN publish/subscribe
"Where are the docs?"
- ๐ Main docs: https://larcjs.com/
- ๐ฎ Interactive playground: https://larcjs.com/playground/
- ๐ Guides: https://github.com/larcjs/larc/tree/main/docs
- ๐ฌ Discussions: https://github.com/larcjs/core/discussions
- ๐น Tutorial: (Coming soon - video walkthrough)
๐๏ธ Architecture & Design
"Why Web Components instead of framework components?"
Web Components advantages:- โ Native browser API - No framework lock-in
- โ True interoperability - Work in React, Vue, Angular, vanilla JS
- โ Long-term stability - Browser standard, not framework churn
- โ No compilation required - Direct browser execution
- โ Style encapsulation - Shadow DOM prevents CSS conflicts
- โ Locked to one framework
- โ Version coupling headaches
- โ Require compilation
- โ Framework churn (React 15, 16, 17, 18...)
"What's the PAN bus actually doing?"
PAN (Page Area Network) is a lightweight message bus for component coordination. Without PAN:// Components tightly coupled
<ThemeToggle onThemeChange={(theme) => {
card.setTheme(theme);
table.setTheme(theme);
modal.setTheme(theme);
}} />
With PAN:
<!-- Theme toggle publishes -->
<pan-theme-toggle></pan-theme-toggle>
<!-- Components subscribe automatically -->
<pan-card></pan-card>
<pan-table></pan-table>
<pan-modal></pan-modal>
Features:
- Pub/sub with topic wildcards
- Retained messages (like MQTT)
- Request/reply pattern
- Message routing
- No coupling between components
๐ Security
"What about security vulnerabilities?"
Current status:- โ
npm audit: 0 vulnerabilities - โ Zero runtime dependencies
- โ Regular security updates
- โ Security policy: SECURITY.md
- Keep packages updated
- Review component code before use
- Use Content Security Policy
- Sanitize user input (standard web security)
๐ Performance
"How's the performance?"
Metrics:- โก First load: <50ms (core)
- ๐ฆ Bundle size: 9KB core-lite minified (~3KB gzipped) โ
- ๐ฏ Per component: ~7KB each minified (~2KB gzipped)
- ๐ Autoload time: <5ms per component
- React: ~140KB initial bundle
- Vue: ~90KB initial bundle
- LARC Core Lite: 9KB + components used (94% smaller than React!)
๐ค Common Concerns
"What if the project gets abandoned?"
Mitigation strategies:- Your components keep working (they're just Web Components)
- You can maintain your own fork
- Easy to migrate to vanilla Web Components
"Can I use this with X framework?"
Yes! LARC works with:- โ React (via React 19's Web Component support)
- โ Vue (native Web Component support)
- โ Angular (native Web Component support)
- โ Svelte (compile target)
- โ Vanilla JavaScript
- โ Any framework that supports Custom Elements
// React
<pan-card title="Hello">Content</pan-card>
// Vue
<pan-card title="Hello">Content</pan-card>
// Svelte
<pan-card title="Hello">Content</pan-card>
It's just HTML elements!
"Why not use Lit or Stencil instead?"
Great question! LARC is complementary: Lit/Stencil:- Component authoring libraries
- Help you build Web Components
- Provide templating, reactivity, decorators
- Component coordination system
- Helps components communicate
- Provides auto-loading, messaging bus
// Build components with Lit
@customElement('my-card')
class MyCard extends LitElement { ... }
// Coordinate with LARC
// Components auto-load and communicate via PAN
LARC's unique features:
- Zero-build dev workflow
- PAN messaging bus
- Auto-loading system
- Config management
๐ Contact & Community
"How do I get help?"
- ๐ฃ๏ธ Discord: https://discord.gg/zjUPsWTu
- ๐ฌ GitHub Discussions: https://github.com/larcjs/core/discussions
- ๐ Issues: https://github.com/larcjs/core/issues
- ๐ง Email: (use GitHub issues for now)
"How can I contribute?"
We welcome contributions!
See CONTRIBUTING.md for guidelines.
๐ฏ Quick Copy-Paste Responses
For "Yet another framework?"
LARC isn't a framework replacementโit's framework reduction. Keep React for complex UIs, use LARC for components that work everywhere. Reduce bundle by 60%+ and eliminate vendor lock-in.
For "Why Web Components?"
Web Components are the only way to build truly framework-agnostic components. LARC solves the coordination problem that makes them practical for real applications.
For "Production ready?"
Yes: 261 tests passing, 0 vulnerabilities, v3.0.1 on npm. Young ecosystem (2024), but stable core. Perfect for new projects and early adopters. We'd love your feedback!
For "Performance?"
9KB core-lite (~3KB gzipped) vs 140KB React - that's 94% smaller! Progressive loadingโonly pay for what you use. Test it: https://larcjs.com/playground/
For "Learning curve?"
If you know HTML + vanilla JS, you're ready. No JSX, no new syntax. 5 min to use components, 1 hour to build custom ones.
Remember: Be humble, helpful, and responsive. Good luck! ๐