DEV Community

Aleksey Suvorov
Aleksey Suvorov

Posted on

UECA-React 3.2: a failing test opens the trace where it failed

Part 4. Earlier: converting a vibe-coded MVP, the origin story, an AI agent testing the framework.

UECA-React 3.2 is out, with 3.2.1 right behind it. Three things in it are worth a post.

A failing test opens the trace where it failed

A test tells you that something broke. The trace viewer can show which message or binding stopped propagating. Until now the two were separate.

The test harness in UECA's agent skills now records every test, and a failing one saves its trace:

UECA trace: test-traces/cart.test.tsx--adds_an_item_once.json
Enter fullscreen mode Exit fullscreen mode

Drop the file on the trace viewer (it ships in the package; nothing is uploaded) and the playhead opens on the last thing the test did before its cleanup. Step back with ← to the message nobody answered or the binding that didn't carry. It costs a few percent of test time, and UECA_TEST_TRACES=off turns it off.

The viewer also opens at a position named in its address, &head=<seq>. Try it on a recorded session.

Rewriting an app starts with its documentation

The migration guide now has a second path beside the staged one: a rewrite done by agents in three phases, with the developer approving between them.

  1. Document. An agent writes the old app's screens, fields, formats and business rules as Markdown, and generates an LLM wiki from it. What the code can't explain becomes a question for the developer.
  2. Plan. A second agent turns the wiki and the old code into an implementation plan.
  3. Build. A third agent follows the plan: code, tests, fixes, release notes.

Ask an agent to "rewrite this app in UECA", and the skills now tell it to document first and stop for your approval.

Quiet mistakes now speak up

  • StrictMode behaves exactly like no StrictMode, on React 19 and 18. React 18 now runs in CI too: 373 tests on both.
  • Errors that used to vanish reach your error handler, including a failing lifecycle hook under Node.
  • A new Date, RegExp, Map or Set is no longer dropped as "no change", a bug since 2.0.6.
  • Four mistakes in app code now throw, with a message saying what to fix. For example, <TextField id="name" /> inside a form that has a name prop. It's the only part of 3.2 an app can notice as a break, and that code was already misbehaving.

Also new: render={false} on any component element, and a message bus of your own with createMessageBus.

Upgrading

npm install ueca-react@3.2.1
npx ueca-react-skills
Enter fullscreen mode Exit fullscreen mode

The second command refreshes the agent skills in your project.

Take 3.2.1, not 3.2.0. In 3.2.0 a production bundle kept every component module the app imported, used or not, and one app grew from 511 KB to 1.6 MB. Nothing failed and no test noticed; only the bundle did. 3.2.1 fixes it, and a new test now builds a small app with Vite and fails if an unused component survives. Everything else is in the changelog.

npm · Docs and demo

Top comments (0)