awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
GoogleChromeLabs avatar

GoogleChromeLabs/comlink

0
View on GitHub↗
12,715 stars·429 forks·TypeScript·Apache-2.0·20 views

Comlink

Comlink is a remote procedure call library that transforms message-based communication into asynchronous function calls between the main thread and web workers. It provides a proxy-based interface that allows multiple threads to interact with a single object instance without manual message handling.

The project enables the execution of functions across separate browser windows, iframes, and web workers, making external calls behave like local asynchronous operations. It supports the transfer of non-cloneable data through custom serialization handlers and allows for the movement of ownership for transferable objects to avoid data cloning.

The library also includes mechanisms for resource management, such as proxy lifecycle detachment to trigger garbage collection and finalizer cleanup logic.

Features

  • Proxy-Based Interfaces - Uses JavaScript Proxy objects to intercept method calls and wrap them in asynchronous messages sent across a channel.
  • Complex Data Serialization - Transfers non-cloneable data across thread boundaries using custom serialization handlers.
  • Remote Procedure Execution - Allows executing functions on a different thread as if they were local asynchronous operations.
  • Cross-Thread - Provides a serialization layer for transferring non-cloneable data and transferable objects across thread boundaries.
  • Remote Object Proxies - Provides proxies that forward method calls to remote worker targets and return promises.
  • Background Thread Dispatchers - Routes heavy tasks to background workers to keep the main thread responsive.
  • Browser Function Invocations - Invokes functions and objects on a web worker from the main thread using asynchronous interfaces.
  • Main Thread Offloading - Optimizes browser performance by offloading heavy computations to background threads to maintain a smooth UI.
  • MessageChannel Bridges - Uses the browser MessageChannel API to enable bidirectional communication between workers and iframes.
  • Complex Object Serializers - Provides custom serialization handlers to transfer non-cloneable complex objects across thread boundaries.
  • WebWorker RPC Libraries - Transforms message-based communication into asynchronous function calls between the main thread and web workers.
  • Remote Object Proxies - Passes a proxy of a value instead of a copy to allow multiple threads to interact with a single object instance.
  • Embedded and Browser Bridge Protocols - Facilitates communication between isolated execution environments like iframes and browser windows.
  • Remote Promise Messaging - Implements a messaging system that maps remote responses to local promises using unique request identifiers.
  • Proxy-Based Shared State - Enables multiple threads to interact with a single object instance using proxies instead of copying data.
  • Ownership Transfer - Passes ownership of large buffers via the postMessage transfer list to avoid expensive data cloning.
  • Cross-Window Communication Layers - Establishes communication channels between separate browser windows or iframes using RPC patterns.
  • Web Worker Management - Simplifying postMessage communication with workers.

Star history

Star history chart for googlechromelabs/comlinkStar history chart for googlechromelabs/comlink

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does googlechromelabs/comlink do?

Comlink is a remote procedure call library that transforms message-based communication into asynchronous function calls between the main thread and web workers. It provides a proxy-based interface that allows multiple threads to interact with a single object instance without manual message handling.

What are the main features of googlechromelabs/comlink?

The main features of googlechromelabs/comlink are: Proxy-Based Interfaces, Complex Data Serialization, Remote Procedure Execution, Cross-Thread, Remote Object Proxies, Background Thread Dispatchers, Browser Function Invocations, Main Thread Offloading.

Which projects share features with googlechromelabs/comlink?

Projects with overlapping indexed features include: andywer/threads.js — threads.js is a JavaScript worker thread library and asynchronous task orchestrator designed to offload CPU-intensive… facebookarchive/asyncdisplaykit — AsyncDisplayKit is an asynchronous UI framework and performance library for iOS. It provides a collection of… developit/greenlet — Greenlet is a multi-threaded asynchronous executor and web worker task runner. It serves as an execution wrapper that… developit/workerize — Workerize is a web worker module loader and main thread offloader. It functions as an asynchronous proxy wrapper that… kriskowal/q — q is a JavaScript promise library and asynchronous flow controller designed to manage non-blocking operations. It… whatwg/html — This repository contains the HTML specification, which defines the core standards for web page structuring, content…

Projects sharing features with Comlink

These projects share indexed features with Comlink. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • andywer/threads.jsandywer avatar

    andywer/threads.js

    3,526View on GitHub↗

    threads.js is a JavaScript worker thread library and asynchronous task orchestrator designed to offload CPU-intensive tasks to background threads. It functions as a cross-platform worker pool and a TypeScript worker runner that automatically transpiles and executes TypeScript files within separate threads. The project distinguishes itself by providing a unified worker API that allows for cross-platform execution across different JavaScript environments. It includes a specialized worker data serialization tool to pass complex class instances and binary data between threads, and supports inlini

    TypeScriptisomorphic-javascriptjavascriptmultithreading
    View on GitHub↗3,526
  • facebookarchive/asyncdisplaykitfacebookarchive avatar

    facebookarchive/AsyncDisplayKit

    13,345View on GitHub↗

    AsyncDisplayKit is an asynchronous UI framework and performance library for iOS. It provides a collection of performant alternatives to standard views, allowing developers to build responsive interfaces by offloading layout and rendering tasks to background threads. The framework is centered around a declarative layout engine based on a flexbox model, which calculates element positions and sizes asynchronously. It utilizes a node-based abstraction to wrap native views, enabling the instantiation and configuration of UI hierarchies on background threads to prevent main thread blocking. The sy

    Objective-C++
    View on GitHub↗13,345
  • developit/greenletdevelopit avatar

    developit/greenlet

    4,689View on GitHub↗

    Greenlet is a multi-threaded asynchronous executor and web worker task runner. It serves as an execution wrapper that offloads heavy computation to background workers to maintain user interface responsiveness and prevent the main execution thread from blocking. The project includes a transferable object handler designed to move large data buffers between threads. This mechanism avoids the overhead of memory copying to optimize data transfer. The library covers the management of web workers, facilitating asynchronous task isolation and main thread offloading.

    JavaScript
    View on GitHub↗4,689
  • developit/workerizedevelopit avatar

    developit/workerize

    4,378View on GitHub↗

    Workerize is a web worker module loader and main thread offloader. It functions as an asynchronous proxy wrapper that allows JavaScript modules to run in background workers, preventing browser UI freezes by delegating computationally expensive tasks to separate threads. The project utilizes a proxy-based interface to call functions inside a background worker as if they were local asynchronous calls. This mechanism enables the execution of modules in parallel workers to maintain main thread responsiveness. The system covers asynchronous module execution and web worker integration, focusing on

    JavaScript
    View on GitHub↗4,378
Compare all 30 related projects→