# Notes

## Source
[ayv4zyan/teach#23](https://github.com/ayv4zyan/teach/issues/23) — *Learn Effect (TypeScript)*. Open. Label `Effect` → `topics/Software-Engineering/Effect`.

## How to teach this track
Do not clone neighbouring topics. Effect is a *library with a runtime and a type*, not a browser API with a “when it fits / dealbreakers / playbook” spine. Structure around load-bearing ideas:

1. Description vs execution (`Effect<A, E, R>` is not a running Promise)
2. Constructors (`succeed` / `fail` / `sync` / `try` / `promise` / `tryPromise`)
3. Composition (`map` / `flatMap` / `gen`)
4. Running at the edge
5. Typed errors
6. Context, services, Layers
7. Fibers: interruption, concurrency, retry, timeout, scoped resources
8. Schema / logging / config as needed
9. React boundary + language-service + adoption / tradeoffs

One idea per lesson. Labs that would fail if the learner still thinks in Promises.

## Prior knowledge (claimed by the issue, not demonstrated)
Ordinary TypeScript, `Promise` / `async`–`await`, React. No Effect experience stated.

## Docs vs v4
Published docs live at [effect.website](https://effect.website) and still document the v3-shaped API (`Effect<Success, Error, Requirements>`). GitHub `main` is Effect v4 RC (`effect@rc`, TS 5.9+). Teach the documented API unless the learner asks to move to the RC.

## Session
- 2026-08-27: Picked #23. Mission + resources. Lesson 1 is description vs execution.
