PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchTo reuse complicated state-change logic without obscuring what a user flow does, give shared work an explicit scope: use an Action for one side effect that updates one state, and a Reaction when reusable work crosses either boundary. Keep each use case responsible for the particular user intent—such as navigation or screen-specific feedback. These names describe an optional team convention, not a compiler-enforced feature or a Redux requirement.
What Actions and Reactions are meant to clarify
Shared logic can make a codebase easier to maintain, but placing too much behavior behind a generic call can hide the consequences of a user action. The convention described by Mikhail Palei addresses that tension by making the scope of reusable units visible in their names.
As an Amazon Associate I earn from qualifying purchases.
Both Actions and Reactions are ordinary classes. Their labels are a promise to other developers, not rules enforced by a language, framework, or compiler. As Palei puts it, “What you see in the name is what you get” (Palei’s DEV Community article).
When to use an Action
One side effect, one state
An Action is intended to perform one side effect and write to one state. It can make multiple updates to that same state; the boundary is the state it owns, not the number of assignments. Its name should make the work and affected state legible without requiring a reader to discover hidden effects elsewhere.
#1 Best Overall
In Palei’s AddExperienceAction example, the Action marks the viewer state as loading, calls a repository, then stores either the returned experience or a failure in that viewer state. It does not announce anything in chat, alter the wallet, or display a snackbar. The repository call is the side effect; the state updates report its outcome.
Use base classes for mechanics, named classes for intent
Generic base classes can hold repeated workflow mechanics while named subclasses identify a specific operation—for example, GetChatRoomMessagesAction. The article mentions reusable shapes such as GetAction, UpdateAction, and DeleteAction. Reuse should not erase the Action’s narrow contract: one side effect and one state.
Rank #2
When reusable work becomes a Reaction
Crossing the Action boundary
Use a Reaction when shared work has multiple side effects or changes multiple states. Palei’s AwardExperienceReaction calls the experience Action, checks whether the viewer leveled up, fetches unlocked features, updates another state, shows an animation, and tracks analytics. That is more than the focused experience update of an Action, so the broader name signals that a reader should inspect the implementation to understand its full effects.
Separate shared consequences from caller intent
A useful boundary question is: who wants this event to happen? A consequence that should follow the triggering event wherever it occurs can live in a shared Reaction. The particular response to a user in a particular screen or flow usually belongs in that use case. For instance, leveling up may be shared, while navigation and contextual snackbar wording can vary between callers.
Rank #3
This is a convention, not an absolute ban on putting feedback in a Reaction. A team could make a response shared if it genuinely belongs in every relevant flow. The important thing is that the unit’s name and actual contract stay transparent.
How the donation example orders updates and failure handling
The article’s donation flow separates immediate interface changes from work that waits for server confirmation. Its order is specific to that product example:
Rank #4
- Announce and optimistically update: add the donation announcement and subtract the amount from the wallet before submitting the request.
- Roll back on failure: if submission fails, restore the wallet funds and remove the announcement.
- Handle confirmed success: after the server accepts the donation, call the shared experience Reaction and then show a success message.
Palei presents this ordering as a product decision: the wallet should respond instantly, while experience can wait for confirmation. It is not a general rule for optimistic updates, transaction boundaries, or reward timing. A different product may need different ordering and rollback behavior.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →How this convention relates to Redux
Actions and Reactions in Palei’s article are named classes for organizing orchestration and state-changing logic. They should not be confused with Redux’s own terminology or treated as required Redux architecture.
- The Redux Style Guide states, “Reducers must not have side effects,” and recommends Redux Toolkit for writing Redux logic.
- Redux Toolkit is documented as simplifying store setup, reducers, and immutable updates.
- Redux’s reusable reducer logic guidance describes patterns such as higher-order reducers and
createSlicefactories.
Those are Redux-specific rules and APIs. They address reducer logic, middleware, and toolkit patterns; they do not prescribe the Action/Reaction taxonomy. A team can consider the taxonomy as an optional naming convention without presenting it as a Redux rule.
A practical boundary check for a team
- One side effect and one state: keep the unit an Action, and name it so readers can infer its work and state ownership.
- A second state or hidden side effect: either rename the unit as a Reaction or move the extra work to the caller if it is specific to that flow.
- Shared consequence: put it in a Reaction when it should follow the triggering event across callers.
- Screen-specific response: leave navigation or contextual feedback in the use case that knows the user’s intent.
- Failure path: make the intended ordering and any rollback behavior explicit, rather than assuming a shared architecture rule will decide them.
The convention’s value depends on teams honoring and reviewing those boundaries. The cited article and Redux documentation do not establish it as an industry standard or provide measured evidence of productivity or defect reductions.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.




