Show HN: Pure Effect – Reproduce production bugs on your laptop without a DB

This bug-fixing tool wowed some coders while others yelled, ‘Isn’t this just mocking?’

TLDR: Pure Effect promises a way to replay real app failures on your laptop without connecting to the database, which could make debugging much easier. Commenters were split between “this is a clever new testing idea” and “hold on, isn’t this just mocking with extra steps?”

A new Show HN post for Pure Effect tried to sell a dream every app maker understands: when something explodes in production, you can replay the failure on your laptop without touching the real database. The pitch is simple in human terms: instead of your code immediately doing real-world stuff, it first writes down what it plans to do. That plan can be tested, inspected, and even replayed later. Sounds neat, right? Well, the comments instantly turned into a mini courtroom drama.

The biggest fight was over the project’s bold marketing. One skeptical commenter basically rolled their eyes at the sweeping claims, saying the intro assumes too much and offers too little proof. Another went straight for the jugular with the thread’s spiciest question: if you “test without mocking” by stopping real actions from happening, isn’t that... still mocking? Ouch. That line became the vibe of the backlash: cool idea, maybe overhyped packaging.

But it wasn’t all side-eye. A few people were genuinely excited, saying the tool draws a clean line between what your program wants to do and what actually happens in the outside world. One fan called it the “sweet spot,” while another admitted they’ve been “chasing that high” ever since learning this style of programming. The funniest energy in the thread came from the classic hacker ritual of asking, basically, “why not just use the other library?” In other words: impressive pitch, but the comment section wanted receipts, comparisons, and a little less swagger.

Key Points

  • Pure Effect is presented as a zero-dependency effect library for JavaScript and TypeScript that represents I/O as plain data objects.
  • The article argues that separating business logic from immediate I/O makes tests inspectable without running database operations or relying on mocks, fakes, or containers.
  • Its example registration flow uses `Success`, `Failure`, `Command`, and `effectPipe` to build an inert effect tree that can be examined step by step.
  • Production command results can be recorded and fed back into the same flow to replay execution paths locally without infrastructure access.
  • The article also describes retry configuration as plain data, concurrent branch execution with ordered results and first-failure short-circuiting, and context propagation across flows.

Hottest takes

"is that not just bending the meaning of mocking?" — dwroberts
"So many promises and claims... yet I have no seen any evidence" — ramon156
"I've been chasing that high ever since" — indiv0
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.