Community
Releases
Release notes for every Bascik version, including new features, bug fixes, and breaking changes. This page is generated from the repository CHANGELOG.md, which follows Keep a Changelog and Semantic Versioning.
1.0.0-rc.12 - 2026-11-09
The release candidate for 1.0.0: the full pre-launch audit lands here so every site can be tested against it before the stable release. Install it with npm create bascik@rc or @bascik/bascik@rc. This candidate ships @bascik/bascik, create-bascik and @bascik/adapter-cloudflare as 1.0.0-rc.12, @bascik/adapter-netlify as 1.0.0-rc.2, @bascik/language-server as 1.0.0-rc.1, and the VS Code extension as 0.7.0 on the pre-release channel.
Bascik is a build tool for HTML components with automatically scoped CSS and JavaScript and no runtime: you write vanilla HTML, CSS, and JavaScript in one file per component, and bascik --build emits static HTML pages with the component's styles and scripts scoped to each instance. The notes below cover everything since the project started; 1.0.0 will carry the same notes plus whatever the candidate period finds.
Added
- Components: one
.htmlfile per component, used as a custom tag in pages and other components; props throughdata-bascik-prop-*, slots with fallbacks and named slots, attribute inheritance onto the component root, and companion.cssand.tsfiles. - Scoped styles and scripts at build time: class, id, and element selectors are rewritten per component, and the scripts that query them are rewritten to match, covering
@layer,@container,@scope, keyframes, custom properties, CSS nesting,querySelector,getElementById,classList, template literals, and more. The compatibility page lists every supported pattern;preserveopts an element or a selector out. - Scripts that run at build, request, and stream time:
data-bascik-buildfor build-time rendering with a disk cache,data-bascik-serveranddata-bascik-streamfor request-time rendering that expands components in their output,data-bascik-routesfor dynamic routes, API routes, andexecscripts with pre, parallel, and post phases. Scripts are TypeScript by default; Node strips the types. - Development server with live reload over Server-Sent Events, an error overlay, incremental rebuilds that only touch dependent pages, and a worker pool for large sites. Production server over HTTP/1.1 and HTTP/2 with TLS, precompression, caching headers, and body limits, or a plain static
dist/for any host. - Hosting adapters:
@bascik/adapter-cloudflarebuilds a Workers bundle with static assets, and@bascik/adapter-netlifybuilds a Functions v2 deployment; both keep request-time scripts and API routes working, and the custom adapter API covers other hosts. bascik --check, a linter for components, pages, config, and the built output (WHATWG parsing, scoping compatibility rules, API route rules, TypeScript errors with--typescript), backed by@bascik/language-server, which also powers the VS Code extension: diagnostics, completions, hovers, go to definition, and references across components.create-bascik(npm create bascik my-site): a starter site with components, unit tests on Vitest, Playwright end-to-end tests, alintscript, VS Code settings, and templates for Cloudflare and Netlify.- Agent skills for coding assistants, installed by
create-bascikandbascik initor withnpx skills add bascikdev/bascik, plusAGENTS.mdandCLAUDE.mdproject briefs andllms.txton the docs site. @bascik/bascik/html, a dependency-free tagged template for safe HTML in server and build scripts, and@bascik/bascik/configwithdefineConfigfor a typedbascik.config.ts.- Production build options: identifier minification, HTML and CSS minification with a bring-your-own-minifier hook, asset fingerprinting, sitemap and robots generation, base paths, and a build log.
- API routes:
export defaulthandles every method the file has no named export for, so one function can serve a proxy, a webhook, or a mounted router. Named exports still win,OPTIONSandHEADreach the default export, and methods outside the seven supported ones are still refused with405. It works the same in the dev server,bascik --server, and the Cloudflare and Netlify adapters. A route that already had a default export alongside its method exports now sends other methods to it instead of answering405. See One Handler for Every Method. @bascik/language-server:missing-method-handleraccepts an API route whose only handler is a default export.
Changed
- The minimum supported Node.js version is 24.21.0. Earlier release candidates supported Node 22.22; npm 10.9 (bundled with Node 22) cannot install the starter project's dependencies, and Node 24.21 is the first release where
node --checklocates a syntax error in a.jsconfig, whichbascikrelies on to name the line. The floor is the first version proven to work end to end. create-bascik: in the Cloudflare and Netlify templatesnpm run devis the Bascik dev server again (bascik,http://localhost:8080), as in the default template. The host's local runtime moves to its own script,npm run dev:cloudflareornpm run dev:netlify(bascik --target ..., with source watching and browser live reload). Existing projects are not changed; to match, set"dev": "bascik"and add thedev:<host>script. See Cloudflare and Netlify.bascik-configskill: a "Tune build and server performance" table says when to turn onpipeline.workers,assets.symlink,http.precompressandhttp.cacheControl, and which of them do nothing on Cloudflare and Netlify.
Fixed
- The pinned
Server running atlink in the dev server's terminal no longer opens a garbled address. In VS Code's terminal, when a long log line wrapped and its first half scrolled away, the remaining half was read as part of the pinned row, so Cmd/Ctrl+click opened something likehttp://localhost:8080ages/img/photo.webp.