An alternative audit table format involves doing column <-> column diffs and writing out one row per column change.
Things to consider:
Changes should be grouped together with a "change_id".
Column types need to be coerced. Consider implementations for that. Could be ::varchar. Could be json.