AF14

A register({ transforms }) function threw while processing a write, and the write was aborted.

In development the console shows the full picture: the path, the transform's index and name, a remediation hint, and the original error with its stack. In production the log is exactly the code line you followed here, with none of those details.

Why production redacts this

Transform bodies are your code, and their thrown errors can embed anything the user just typed. Attaform treats messages and stack frames from inside a transform as an information-leak surface, so the production log is a fixed string. Run the development build to see the original error.

How to fix it

Transforms must not throw. Wrap recoverable logic in the transform's own try/catch and return the fallback you want written:

const rv = form.register('amount', {
  transforms: [
    (raw) => {
      try {
        return normalizeCurrency(raw)
      } catch {
        return raw
      }
    },
  ],
})

Transforms covers the pipeline, including async transforms, whose rejections surface on field.transformError instead of the console.