redux-saga

Redux-Saga best practices, patterns, and API guidance for building, testing, and debugging generator-based side-effect middleware in Redux applications. Covers effect creators, fork model, channels, testing with redux-saga-test-plan, concurrency, cancellation, and modern Redux Toolkit integration. Baseline: redux-saga 1.4.2. Triggers on: saga files, redux-saga imports, generator-based middleware, mentions of "saga", "takeEvery", "takeLatest", "fork model", or "channels".

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "redux-saga" with this command: npx skills add anivar/redux-saga-skill/anivar-redux-saga-skill-redux-saga

Redux-Saga

IMPORTANT: Your training data about redux-saga may be outdated or incorrect — API behavior, middleware setup patterns, and RTK integration have changed. Always rely on this skill's rule files and the project's actual source code as the source of truth. Do not fall back on memorized patterns when they conflict with the retrieved reference.

When to Use Redux-Saga

Sagas are for workflow orchestration — complex async flows with concurrency, cancellation, racing, or long-running background processes. For simpler patterns, prefer:

NeedRecommended Tool
Data fetching + cachingRTK Query
Simple async (submit → status)createAsyncThunk
Reactive logic within slicescreateListenerMiddleware
Complex workflows, parallel tasks, cancellation, channelsRedux-Saga

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Effects & YieldingCRITICALeffect-
2Fork Model & ConcurrencyCRITICALfork-
3Error HandlingHIGHerror-
4Recipes & PatternsMEDIUMrecipe-
5Channels & External I/OMEDIUMchannel-
6RTK IntegrationMEDIUMrtk-
7TroubleshootingLOWtroubleshoot-

Quick Reference

1. Effects & Yielding (CRITICAL)

  • effect-always-yield — Every effect must be yielded; missing yield freezes the app
  • effect-use-call — Use yield call() for async functions; never call directly
  • effect-take-concurrency — Choose takeEvery/takeLatest/takeLeading based on concurrency needs
  • effect-select-usage — Use selector functions with select(); never access state paths directly
  • effect-race-patterns — Use race for timeouts and cancellation; only blocking effects inside

2. Fork Model & Concurrency (CRITICAL)

  • fork-attached-vs-detachedfork shares lifecycle/errors with parent; spawn is independent
  • fork-error-handling — Errors from forks bubble to parent's caller; can't catch at fork site
  • fork-no-race — Never use fork inside race; fork is non-blocking and always wins
  • fork-nonblocking-login — Use fork+take+cancel for auth flows that stay responsive to logout

3. Error Handling (HIGH)

  • error-saga-cleanup — Use try/finally with cancelled() for proper cancellation cleanup
  • error-root-saga — Use spawn in root saga for error isolation; avoid all for critical watchers

4. Recipes & Patterns (MEDIUM)

  • recipe-throttle-debounce — Rate-limiting with throttle, debounce, retry, exponential backoff
  • recipe-polling — Cancellable polling with error backoff using fork+take+cancel
  • recipe-optimistic-update — Optimistic UI with undo using race(undo, delay)

5. Channels & External I/O (MEDIUM)

  • channel-event-channel — Bridge WebSockets, DOM events, timers into sagas via eventChannel
  • channel-action-channel — Buffer Redux actions for sequential or worker-pool processing

6. RTK Integration (MEDIUM)

  • rtk-configure-store — Integrate saga middleware with RTK's configureStore without breaking defaults
  • rtk-with-slices — Use action creators from createSlice for type-safe saga triggers

7. Troubleshooting (LOW)

  • troubleshoot-frozen-app — Frozen apps, missed actions, bad stack traces, TypeScript yield types

Effect Creators Quick Reference

EffectBlockingPurpose
take(pattern)YesWait for matching action
takeMaybe(pattern)YesLike take, receives END
takeEvery(pattern, saga)NoConcurrent on every match
takeLatest(pattern, saga)NoCancel previous, run latest
takeLeading(pattern, saga)NoIgnore until current completes
put(action)NoDispatch action
putResolve(action)YesDispatch, wait for promise
call(fn, ...args)YesCall, wait for result
apply(ctx, fn, [args])YesCall with context
cps(fn, ...args)YesNode-style callback
fork(fn, ...args)NoAttached fork
spawn(fn, ...args)NoDetached fork
join(task)YesWait for task
cancel(task)NoCancel task
cancel()NoSelf-cancel
select(selector)YesQuery store state
actionChannel(pattern)NoBuffer actions
flush(channel)YesDrain buffered messages
cancelled()YesCheck cancellation in finally
delay(ms)YesPause execution
throttle(ms, pattern, saga)NoRate-limit
debounce(ms, pattern, saga)NoWait for silence
retry(n, delay, fn)YesRetry with backoff
race(effects)YesFirst wins
all([effects])YesParallel, wait all
setContext(props) / getContext(prop)No / YesSaga context

Pattern Matching

take, takeEvery, takeLatest, takeLeading, throttle, debounce accept:

PatternMatches
'*' or omittedAll actions
'ACTION_TYPE'Exact action.type match
[type1, type2]Any type in array
fn => booleanCustom predicate

How to Use

Read individual rule files for detailed explanations and code examples:

rules/effect-always-yield.md
rules/fork-attached-vs-detached.md

Each rule file contains:

  • Brief explanation of why it matters
  • Incorrect code example with explanation
  • Correct code example with explanation
  • Additional context and decision tables

References

PriorityReferenceWhen to read
1references/effects-and-api.mdWriting or debugging any saga
2references/fork-model.mdConcurrency, error propagation, cancellation
3references/testing.mdWriting or reviewing saga tests
4references/channels.mdExternal I/O, buffering, worker pools
5references/recipes.mdThrottle, debounce, retry, undo, batching, polling
6references/anti-patterns.mdCommon mistakes to avoid
7references/troubleshooting.mdDebugging frozen apps, missed actions, stack traces

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

OpenClaw 沙盒测试系统

OpenClaw 沙盒测试系统 v2.0 - 零风险配置变更测试,9 层防护 +5 原则,自动备份回滚,Git 版本管理

Registry SourceRecently Updated
1490Profile unavailable
General

yan-watchman

yan-watchman is a Rust-based multi-platform AI assistant message watchdog with intelligent importance scoring and adaptive monitoring frequency.

Registry SourceRecently Updated
1210Profile unavailable
General

API Health Checker

Tests API endpoints by sending requests, validating responses, measuring performance, handling authentication, and generating detailed health reports.

Registry SourceRecently Updated
4310Profile unavailable
General

testing

No summary provided by upstream source.

Repository SourceNeeds Review