Contributing to Open Source - Late 2025

A look at the fixes and improvements we've contributed back to projects ClarityBoss depends on.

Web applications are built on a lot of open source software. This post is a look at some of the contributions we've made back to upstream projects.

Dan McGeeEngineering

ClarityBoss and the other software we’ve built at Entalas is not built from scratch. We depend on hundreds of open source libraries, and the people maintaining those projects are doing real work. When we find a bug or an improvement while building our product, we think it’s worth taking the time to send a fix upstream rather than just patching around it locally.

Over the past several months, we’ve made a handful of contributions back to projects we depend on. Here is a short summary of them.

RxDB

RxDB is our primary local data layer, as we’ve covered in detail on this blog. It stores and replicates all of the core data the app works with: entries, people, and the relationships between them. Without RxDB, ClarityBoss would be a much more traditional round-trip web app.

During development, we ran into a runtime error in dev mode when writing an object created with Object.create(null). These “null-prototype” objects are plain dictionaries with no inherited properties — they come up in certain JSON parsing and data normalization paths. RxDB’s dev-mode validation code assumed all objects had a standard prototype chain, and threw when it encountered one that didn’t.

The fix itself was small, but it was the kind of thing that is easy to introduce without realizing it, and annoying to track down when it surfaces. We submitted PR #7530, which was merged in late November 2025.

VueUse

VueUse is a collection of Vue Composition API utilities that we use throughout the Vue-based frontend. We pull in a wide range of composables: useLocalStorage, useWindowSize, useColorMode, refDebounced, useIdle, and quite a few others. For an app like ClarityBoss, which a lot of reactive UI, these composables help keep code a lot cleaner.

While working on platform detection, we ran into an odd TypeScript type issue with VueUse’s exported isIOS constant. Its inferred type was too loose for proper narrowing in consumer code. We submitted PR #5163 with a corrected type, which was merged in late November 2025.

We still have our own local isIOS for a separate reason. A /*#__PURE__*/ annotation on the upstream constant can cause tree-shakers to silently remove it from our production bundle. There might be another upstream fix needed to ensure this isn’t compiled out at build time.

wxt

wxt is a framework for building cross-browser web extensions. We don’t use it inside ClarityBoss itself, but we use it in other projects at Entalas. wxt simplifies the complexity of extension development across browsers.

The TypeScript definition for defineItem, the API for declaring typed extension storage items, was missing an overload for the case where you pass an init callback at the same time as the item definition. Without that overload, a common and legitimate pattern produced a type error. We submitted PR #1909 in late September to add the missing signature. It took a while to get through review but was eventually merged in December.


We’ll keep sending fixes upstream when we find them in the open source projects we depend on. It is the right thing to do, and it tends to make bugs actually go away rather than just going away for us.

ClarityBoss

Get Results. Keep Your People.

Get the tool built for managers.

Back to Blog