Back to flin
flin

FlinUI: Zero-Import Component System

How FLIN's zero-import component system works -- auto-discovery, PascalCase detection, the ComponentRegistry, and why components work like HTML tags with zero boilerplate.

Thales & Claude | March 25, 2026 9 min flin
flinflinuicomponentszero-import

In React, before you can use a button component, you write import Button from './Button'. In Vue, you write import Button from './Button.vue' and then register it in the components object. In Svelte, you write import Button from './Button.svelte'. One line of boilerplate per component, per file. In a real application with 50 components per page, that is 50 import statements at the top of every file.

In FLIN, you write ```

// Usage
<Button label="Save" variant="primary" onClick={save()} />
<Button label="Cancel" />
<Button disabled={true}>Loading...</Button>

The props object is a map populated from the component tag's attributes. props.label reads the label attribute. props.onClick reads the onClick attribute. The || operator provides default values for optional props.

Why This Is Revolutionary

The zero-import system is not just convenience. It fundamentally changes how developers think about components.

Comparison: Lines of Boilerplate Per File

FrameworkImport/Setup RequiredLines
Reactimport React from 'react' + import Button from './Button' + export default App3+
Vueimport { ref } from 'vue' + import Button from './Button.vue' + export default { components: { Button } }3+
Svelteimport Button from './Button.svelte'1+
FLINNothing0

In a file that uses 20 components (a typical dashboard page), the savings are substantial:

  • React: 20+ import lines at the top of the file
  • Svelte: 20 import lines
  • FLIN: 0 import lines

The file starts immediately with logic and markup. No preamble. No ceremony. No boilerplate.

Time to First Component

FrameworkStepsTime
Reactnpm init, npm install react, create component file, import, export, render5-10 minutes
Vuenpm init, npm install vue, create component file, import, register, use5-10 minutes
Sveltenpm init, npm install svelte, create component file, import, use2-5 minutes
FLINCreate .flin file, write 0 seconds

The zero-import system means there is no setup step. The moment a .flin file exists in a search path, it is available everywhere. Drop Button.flin into your components/ directory, and every file in your project can use