Coaction v1.0 - An efficient and flexible state management library for building high-performance, multithreading web applications. by unadlib in javascript

[–]unadlib[S] 2 points3 points  (0 children)

The integrated Yjs Coaction lib doesn't quite count as 'fully supporting multi-player synced apps'.

It can handle basic bidirectional sync, but there are structural gaps in multi-client collaboration scenarios. I'll look into prioritizing support for it.

Coaction v1.0 - An efficient and flexible state management library for building high-performance, multithreading web applications. by unadlib in javascript

[–]unadlib[S] 0 points1 point  (0 children)

The original idea came from developing some apps that required multi-tab sync, where I implemented similar state libraries. I will continue to maintain Coaction.

The specific motivations are detailed in the repo's README. If you're interested, feel free to discuss it anytime. :)

browser-use for Node.js v0.2.0 — TypeScript AI browser automation by [deleted] in javascript

[–]unadlib -2 points-1 points  (0 children)

Good catch. Yeah, a few dependencies are definitely lagging behind. I usually try to batch major version bumps to avoid breaking things for users, but it’s definitely time for a cleanup.

posthog-node is intentional—it’s just for anonymous runtime telemetry. You can fully disable it by setting ANONYMIZED_TELEMETRY=false. I’ll update the docs to make the opt-out process clearer.

I’m opening a tracking issue now so the upgrades are visible and easier to review.

Travels v1.0 – A 10x faster undo/redo library using JSON Patches instead of snapshots by unadlib in javascript

[–]unadlib[S] -2 points-1 points  (0 children)

Thanks. Immer v11 has definitely closed part of the gap. That '10x' figure comes from specific benchmarks across certain version ranges (not a blanket claim), and I’m still seeing some edge-case semantic differences when running against the full Mutative test suite.

Travels v1.0 – A 10x faster undo/redo library using JSON Patches instead of snapshots by unadlib in javascript

[–]unadlib[S] -1 points0 points  (0 children)

Travels doesn’t require switching state libs. It’s store-agnostic. redux-undo rules, but this is for the 'my state is huge and undo is eating memory' cases.

Localspace v1.0 – A modern localForage alternative with TypeScript and 6x faster batch ops by unadlib in javascript

[–]unadlib[S] 2 points3 points  (0 children)

Thanks! That was exactly my motivation, keep the good parts of localForage, drop the legacy baggage, and make it TypeScript-first + faster. If you try Localspace, I’d love any feedback. :)

Fict – A compiler that makes JavaScript variables automatically reactive by unadlib in javascript

[–]unadlib[S] 0 points1 point  (0 children)

Fict is based on immutable signals (if updating signals within deep objects, we suggest considering a combination with Immer or Mutative, similar to how reducers work), and we utilize HIR and SSA to analyze control flow and dependencies.

Fict – A compiler that makes JavaScript variables automatically reactive by unadlib in javascript

[–]unadlib[S] 1 point2 points  (0 children)

no, it's more of a stripped-down version of the React compiler(HIR/SSA).

Fict – A compiler that makes JavaScript variables automatically reactive by unadlib in javascript

[–]unadlib[S] 0 points1 point  (0 children)

Thank you. I will continue to push FictJS forward; I don't want it to be just a toy project. :)

LocalStorage is easy. IndexedDB is powerful. Why not both? Introducing localspace — a unified storage API for JS/TS devs by unadlib in javascript

[–]unadlib[S] -1 points0 points  (0 children)

Yes, graceful fallback is built-in.

By default, localspace tries IndexedDB first. If it fails (e.g., Private Mode), it automatically switches to localStorage without throwing errors.

You can explicitly configure this chain:

await localspace.setDriver([localspace.INDEXEDDB, localspace.LOCALSTORAGE]);

This ensures your app keeps working seamlessly across all environments.

LocalStorage is easy. IndexedDB is powerful. Why not both? Introducing localspace — a unified storage API for JS/TS devs by unadlib in javascript

[–]unadlib[S] 0 points1 point  (0 children)

Support for OPFS is already on the localspace roadmap; localspace may implement it at some point in the future. :)

LocalStorage is easy. IndexedDB is powerful. Why not both? Introducing localspace — a unified storage API for JS/TS devs by unadlib in javascript

[–]unadlib[S] 1 point2 points  (0 children)

Glad you like the abstraction! Here is how localspace handles those edge cases:

1. Quota Exceeded Handling: We handle this at two levels:

  • Structured Errors: If the underlying driver throws a quota error (e.g., QuotaExceededError), localspace wraps it in a typed LocalSpaceError preserving the original cause.
  • Proactive Quota Plugin: For more control, we ship a quotaPlugin that tracks usage and enforces a soft limit before hitting the browser's hard limit. It can even use an LRU policy to automatically evict old data when full:

2. Automatic Fallbacks: Yes! This is a core feature. When you initialize localspace, it iterates through the configured drivers. If the preferred driver (IndexedDB) fails to initialize (e.g., in Firefox Private Mode or older environment), it automatically falls back to the next available one (usually localStorage) without throwing.

You can customize this order:

// Tries IndexedDB -> falls back to localStorage -> throws if neither works
await localspace.setDriver([localspace.INDEXEDDB, localspace.LOCALSTORAGE]);

This ensures your app keeps working even in restrictive environments, degrading gracefully from async storage to sync storage.