# postaljs/postal.js

JavaScript pub/sub library supporting advanced subscription features, and several helpful add-ons.

Repository: https://github.com/postaljs/postal.js
Canonical: https://ross.abutalabs.com/products/postaljs
Homepage: http://ifandelse.com
Language: TypeScript
License: MIT
License Family: permissive
Last push: 2026-06-30T13:43:58+00:00

## Health v2 (maintenance only)
Score: 73/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 90, release rhythm 35, longevity 100
- inputs: {"age_days": 5424, "days_push": 64, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2836, forks 187 (observed 2026-08-28T04:07:24.579048+00:00)

## What it is
postal is a TypeScript-first pub/sub message bus for JavaScript with AMQP-style topic wildcards, channel-scoped messaging, request/response RPC, and wire taps. It includes a transport system for bridging messages across iframes, web workers, browser tabs, and Node.js child processes.

## Use cases
- decouple components with publish-subscribe messaging in JavaScript
- send messages between browser tabs
- communicate between an iframe and its parent page
- publish and subscribe with wildcard topic matching
- implement request/response messaging over an event bus
- bridge pub/sub between web workers and the main thread
- add typed event-driven messaging to a TypeScript app

## When to choose
- you need a lightweight, zero-dependency message bus with full TypeScript inference
- you need cross-context messaging (iframes, workers, tabs, child processes) with a consistent API
- you want AMQP-style wildcard subscriptions and channel isolation in the browser or Node.js

## When to avoid
- you need durable, persistent message queuing across processes or machines — use a real message broker like RabbitMQ or Kafka
- you are on postal v2 and cannot afford the breaking changes in the v3 rewrite
- your app is simple enough that native EventTarget or EventEmitter suffices

## Facets
- artifact type: library
- maturity: active
- function: message-queue, middleware, rpc, websocket
- domain: web-development, frontend, developer-tools
- platform: browser, cross-platform
- tags: pub-sub, message-bus, event-bus, typescript, amqp-wildcards, iframes, web-workers, broadcast-channel, zero-dependencies, javascript, nodejs, web-server

## Member repositories
- postaljs/postal.js (main) score 73

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:24.579048+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-30T07:37:46.520854+00:00, confidence not recorded.
  - readme: https://github.com/postaljs/postal.js (fetched 2026-08-28T04:07:24.579048+00:00, sha 1858de6f802e)
  - homepage: http://ifandelse.com (fetched 2026-08-29T09:53:24.442544+00:00, sha 15edc42c2bd4)
  - site_page: https://ifandelse.com/about (fetched 2026-08-29T09:53:24.445163+00:00, sha 8baed3ace81f)
  - site_page: https://ifandelse.com/blog/ai-made-my-expertise-economically-viable (fetched 2026-08-29T09:53:24.447066+00:00, sha 6b01ce197843)
- Data as of 2026-08-30T08:39:29.467469+00:00.
