Every time I start a new project, someone asks: what framework are you using?
Sometimes the honest answer is: none. Just an HTML file.
What a no-build frontend is
A no-build frontend is a web interface written in plain HTML and JavaScript, with libraries loaded from a CDN via <script> tags. No bundler (Webpack, Vite), no transpiler (Babel), no package manager for the frontend.
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
You edit the file. You refresh the browser. You see the change. That's the entire workflow.
Why this exists
Modern frontend toolchains — React, Next.js, Vue — are genuinely powerful. They solve real problems at scale: component reuse, type safety, shared state, server-side rendering.
But they add overhead. npm install pulls in hundreds of packages. Build times add friction. Deployments need a pipeline. For a personal dashboard or an internal tool, that overhead isn't justified by the complexity of the UI.
The no-build approach trades framework power for zero friction. It's the right tool for a specific set of problems.
When to use it
- Personal tools and dashboards — you're the only user, UI is simple
- Internal tools — limited audience, no SEO requirements
- MVPs — validate the idea before investing in infrastructure
- When one developer does everything — no need to coordinate frontend conventions across a team
I used this approach for a personal data monitoring dashboard — a single HTML file served directly by the Python backend, with a charting library loaded from CDN. No npm, no build step, no deployment pipeline for the frontend. For a solo internal tool, it was the right call.
When to graduate to a framework
The no-build approach starts to hurt when:
- You need 3+ distinct "pages" with routing between them
- Multiple developers work on the frontend simultaneously — no module system makes coordination hard
- You need TypeScript for type safety on complex data structures
- You're building a public product that needs SEO (server-side rendering matters)
- Component reuse becomes painful — you're copy-pasting the same HTML in multiple places
The inflection point is usually when you catch yourself manually managing state across a growing number of UI elements. That's when Vue via CDN (still no build step) or migrating to Vite earns its complexity.
The professional framing
This pattern is sometimes called a zero-toolchain frontend or vanilla JS SPA (Single-Page Application). The underlying principle is choosing the right level of complexity for the problem — one of the most underrated skills in software.
Over-engineering is a real cost. An internal monitoring dashboard doesn't need the same infrastructure as a SaaS product. Recognising that line is a product skill as much as a technical one.