# vercel/bidc

Bidirectional Channels for JavaScript

Repository: https://github.com/vercel/bidc
Canonical: https://ross.abutalabs.com/products/bidc
Language: TypeScript
License Family: other
Topics: async, channels, iframe, javascript, messaging, rpc, worker
Last push: 2025-12-16T11:11:14+00:00

## Health v2 (maintenance only)
Score: 44/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 57, release rhythm 37, longevity 28
- inputs: {"age_days": 394, "days_push": 260, "days_rel": 260, "gap_med": 109, "n_releases_24m": 2}
- flags: no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1277, forks 23 (observed 2026-08-28T04:04:13.323661+00:00)

## What it is
BIDC is a TypeScript library providing bidirectional channels for asynchronous communication between JavaScript execution contexts such as iframes, web workers, and service workers. It improves on raw postMessage with automatic handshakes, complex data type transfer, and first-class Promise/async function support via a custom streaming protocol.

## Use cases
- communicate between parent window and iframe with promises
- send messages between a web worker and main thread
- rpc-style method calls across javascript contexts
- transfer complex data types like maps and arraybuffers between contexts
- maintain channel connections when an iframe reloads
- handle concurrent async messages between browser contexts

## When to choose
- you need structured two-way messaging between iframes, workers, or service workers
- you want promises and async functions to work across postMessage boundaries
- you need automatic handshake, reconnection, and message buffering
- you want typed rpc-style calls in TypeScript

## When to avoid
- you only need simple one-way fire-and-forget postMessage
- you need communication over the network or between separate machines
- your contexts are not JavaScript (e.g., native or cross-language messaging)
- you require a library with an explicit open-source license for legal reasons

## Facets
- artifact type: library
- maturity: active
- function: rpc, message-queue, serialization, websocket
- domain: web-development, frontend, developer-tools, apis
- platform: browser
- tags: postmessage, iframe-communication, web-workers, async-messaging, bidirectional-channels, nodejs, javascript, typescript

## Member repositories
- vercel/bidc (main) score 44

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:13.323661+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T05:02:52.570347+00:00, confidence not recorded.
  - readme: https://github.com/vercel/bidc (fetched 2026-08-28T04:04:13.323661+00:00, sha 81a85d901911)
- Data as of 2026-08-30T08:39:29.467469+00:00.
