◉ Pulse
typeonce-dev avatar
#62 today ▲ 65

typeonce-dev/effect-machine

TypeScript Other

Schema-first state machines and statecharts for Effect

Created Jul 28, 2026
Stars
35
Today
+5
Forks
1
Quality
95/100
Momentum
40

README

Fetched from GitHub on Oct 30, 2026, 10:15 PM UTC · README.md

View original on GitHub

Third-party content — Open Source Pulse is not the owner of this repository.

This README belongs to typeonce-dev/effect-machine and its contributors. We fetch it directly from the project’s public GitHub repository and display it for reference only. All text, code, images and trademarks remain the property of their respective authors. See the repository for its license terms. Copyright / takedown policy.

@typeonce/effect-machine

Effect-native, schema-first, completely type-safe state machines and statecharts, inspired by XState.

The goal of effect-machine is to become a core effect module.

It originates from the following PR.

Quick look

import { Machine } from "@typeonce/effect-machine"
import { Effect } from "effect"
const Root = Machine.state({
  states: { Locked: {}, Unlocked: {} }
})
const Events = Machine.events({ Coin: {}, Push: {} })
const Turnstile = Machine.make({
  root: Root,
  events: Events
}).handle({
  initial: {
    target: "Locked"
  },
  states: {
    Locked: { on: { Coin: { target: "Unlocked" } } },
    Unlocked: { on: { Push: { target: "Locked" } } }
  }
})
const program = Effect.gen(function*() {
  const ref = yield* Machine.start(Turnstile)
  yield* ref.send(Events.Coin())
})

State and event schemas define the protocol. The root defines the topology and the handler tree adds behavior, and the result runs as an Effect-managed machine.

Packages

The workspace publishes four packages at the same version:

Install matching versions so the runtime, devtools, and lint rules stay aligned.


XState is the project's main inspiration and reference for statechart semantics and API coverage.

Direct API comparisons exposed gaps in Effect Machine, and benchmarks against XState drove many runtime performance improvements. effect-machine is not a direct XState replacement.

Rendered by GitHub from the repository’s README. Scroll to read the full file.
First trending

Jul 28, 2026

first spotted on the list

Best rank

#7

highest position reached

Appearances

3

times on the trending list

Quality score

95

out of 100

Momentum

40

trend strength indicator

Star velocity

0.37

stars per day since creation

Activity — last 60 days

daily counts, collected every 6 hours
  • Stars
  • Forks
  • Merged PRs
  • Issues
  • Closed issues

Collecting activity data since launch — check back in a few days.

Star history

total stars per snapshot
2025303540typeonce-dev/effect-machine · Jul 28, 7 PM UTC: 22 starstypeonce-dev/effect-machine · Jul 29, 2 AM UTC: 30 starstypeonce-dev/effect-machine · Jul 29, 8 AM UTC: 35 stars7 PM2 AM8 AM

Rank history

position on trending · lower is better
#1#10#20#30#40#50#60#70#80Jul 28, 7 PM UTC: rank #7Jul 29, 2 AM UTC: rank #73Jul 29, 8 AM UTC: rank #627 PM2 AM8 AM

3D card for your website

Live HTML card with a glass surface and pointer tilt. Paste the iframe on any website.

<iframe src="https://www.notionpulse.cc/embed/typeonce-dev/effect-machine" width="420" height="240" style="border:0;max-width:100%;background:transparent" loading="lazy" title="typeonce-dev/effect-machine — trending on Open Source Pulse"></iframe>

Stars badge

Show current stars in your README or profile. Auto-updates every 6 hours.

typeonce-dev/effect-machine stars badge
Markdown
[![typeonce-dev/effect-machine](https://www.notionpulse.cc/api/badge/typeonce-dev/effect-machine.svg)](https://www.notionpulse.cc/repo/typeonce-dev/effect-machine)
HTML
<a href="https://www.notionpulse.cc/repo/typeonce-dev/effect-machine"><img src="https://www.notionpulse.cc/api/badge/typeonce-dev/effect-machine.svg" alt="typeonce-dev/effect-machine stars badge" /></a>

Repository of the Day

#7 Repository of the Day

Repository of the Week

#7 Repository of the Week

Repository of the Month

#7 Repository of the Month