<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/adam-bien-s-blog-psooywbzi" -->

---
title: adam bien's blog | daily.dev
description: A web components quickstarter project called bce.design eliminated its entire build system by replacing Redux Toolkit with a custom 70-line reduction.js using...
canonical: https://daily.dev/posts/adam-bien-s-blog-psooywbzi
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: adam bien's blog | daily.dev
og:description: A web components quickstarter project called bce.design eliminated its entire build system by replacing Redux Toolkit with a custom 70-line reduction.js using...
og:url: https://daily.dev/posts/adam-bien-s-blog-psooywbzi
og:image: https://api.daily.dev/og/posts/PSOoyWBzI.png
og:image:alt: adam bien's blog
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# adam bien's blog

**[Adam Bien](https://daily.dev/sources/adam-bien)** · 1 min read · 0 upvotes · 0 comments

## Summary

A web components quickstarter project called bce.design eliminated its entire build system by replacing Redux Toolkit with a custom 70-line reduction.js using structuredClone, and vendoring lit-html directly from npm via curl. The only remaining dependency is lit-html, mapped via a standard import map in index.html. Routing uses the Navigation API and URLPattern with no router library. The result: no Node.js, no npm, no rollup, no lockfiles — 777 lines deleted.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://adambien.blog/roller/abien/entry/buildless_web_components_bce_ecb_quickstarter>

## Questions this post answers

### How can I replace Redux Toolkit with a build-free alternative in a vanilla web components project?

Redux Toolkit can be replaced with a small standards-based module written from scratch that implements only the API actually used, relying on the native structuredClone function instead of Immer for state cloning. In one project, this reduced the dependency to a 70-line file called reduction.js, eliminating the need for immer, redux, and reselect entirely, and removing the requirement for a bundler.

_daily.dev surfaces build-tooling tradeoffs like this for developers weighing Redux Toolkit against lighter alternatives._

### How do you vendor an npm package like lit-html without npm install or a bundler?

Download the package tarball directly from the npm registry with curl, then extract the specific file needed with tar, piping the exact bytes npm install would deliver into a local libs folder. For lit-html 3.3.3, the command is: curl -fsSL the registry tarball URL, piped to tar -xzO for the package/lit-html.js file, redirected into app/src/libs/lit-html.js.

_developers cutting build tooling can track dependency-free vendoring techniques like this on daily.dev._

### Can I remove a JavaScript bundler entirely if my only dependency is lit-html?

Yes, because lit-html is a single, self-contained, dependency-free ES module, so a bundler's output becomes byte-for-byte identical to its input, making the bundler unnecessary. Combined with a native browser import map to resolve the module path and the Navigation API with URLPattern for routing, an entire Node.js, npm, and rollup toolchain can be deleted.

_daily.dev helps frontend developers keep up with standards-based approaches that shrink JavaScript toolchains._

## Similar posts on daily.dev

- [I Reduced Our React Bundle by 70% Without Removing a Single Feature](https://daily.dev/posts/i-reduced-our-react-bundle-by-70-without-removing-a-single-feature-szhhzvcpd) · Medium · 18 upvotes · 3 comments
- [Under the hood of MDN's new frontend](https://daily.dev/posts/under-the-hood-of-mdn-s-new-frontend-teqgsjvat) · MDN Blog · 104 upvotes · 0 comments
- [From React to native web with nanotags: a migration that saved 100 KB—Martian Chronicles, Evil Martians’ team blog](https://daily.dev/posts/from-react-to-native-web-with-nanotags-a-migration-that-saved-100-kb-martian-chronicles-evil-marti-u8vasuj56) · Martian Chronicles · 19 upvotes · 0 comments
- [Less code, more power: Why we rolled our own React Server Components framework](https://daily.dev/posts/less-code-more-power-why-we-rolled-our-own-react-server-components-framework-ipff0pnuv) · RUBYLAND · 0 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#web-components](https://daily.dev/tags/web-components)

[View this post on daily.dev](https://daily.dev/posts/adam-bien-s-blog-psooywbzi)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"adam bien's blog","url":"https://daily.dev/posts/adam-bien-s-blog-psooywbzi","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/adam-bien-s-blog-psooywbzi"},"datePublished":"2026-07-13T12:47:29.093Z","dateModified":"2026-09-14T08:44:07.947Z","description":"A web components quickstarter project called bce.design eliminated its entire build system by replacing Redux Toolkit with a custom 70-line reduction.js using...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d365e8cabb5d95ba36aaa092c23f211d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d365e8cabb5d95ba36aaa092c23f211d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Adam Bien","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Adam Bien","logo":"https://media.daily.dev/image/upload/s--CInnAL-q--/f_auto,q_auto/v1773644276/logos/adam-bien?_a=BAMAMiiu0","url":"https://daily.dev/sources/adam-bien"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/adam-bien-s-blog-psooywbzi","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,web-components","timeRequired":"PT1M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Adam Bien","item":"https://daily.dev/sources/adam-bien"},{"@type":"ListItem","position":3,"name":"adam bien's blog"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/adam-bien-s-blog-psooywbzi#faq","mainEntity":[{"@type":"Question","name":"How can I replace Redux Toolkit with a build-free alternative in a vanilla web components project?","acceptedAnswer":{"@type":"Answer","text":"Redux Toolkit can be replaced with a small standards-based module written from scratch that implements only the API actually used, relying on the native structuredClone function instead of Immer for state cloning. In one project, this reduced the dependency to a 70-line file called reduction.js, eliminating the need for immer, redux, and reselect entirely, and removing the requirement for a bundler. daily.dev surfaces build-tooling tradeoffs like this for developers weighing Redux Toolkit against lighter alternatives."}},{"@type":"Question","name":"How do you vendor an npm package like lit-html without npm install or a bundler?","acceptedAnswer":{"@type":"Answer","text":"Download the package tarball directly from the npm registry with curl, then extract the specific file needed with tar, piping the exact bytes npm install would deliver into a local libs folder. For lit-html 3.3.3, the command is: curl -fsSL the registry tarball URL, piped to tar -xzO for the package/lit-html.js file, redirected into app/src/libs/lit-html.js. developers cutting build tooling can track dependency-free vendoring techniques like this on daily.dev."}},{"@type":"Question","name":"Can I remove a JavaScript bundler entirely if my only dependency is lit-html?","acceptedAnswer":{"@type":"Answer","text":"Yes, because lit-html is a single, self-contained, dependency-free ES module, so a bundler's output becomes byte-for-byte identical to its input, making the bundler unnecessary. Combined with a native browser import map to resolve the module path and the Navigation API with URLPattern for routing, an entire Node.js, npm, and rollup toolchain can be deleted. daily.dev helps frontend developers keep up with standards-based approaches that shrink JavaScript toolchains."}}]}
```

