Been working on an improved indentexpr for vim-racket; if anyone is interesting in helping me dogfood it, please LMK and I'll clean it up and push a branch. Vim 9+ required.
Current improvements: handles {} and #<<herestrings correctly; indents (foo\nbar) correctly (b under f instead of under o ). Current issues: speed when reindenting whole files (small functions have been fine so far). I've one last "trick" to port from the C source for get_lisp_indent to try to speed things up which effectively uses the buffer contents like a cache; this should solve the speed problems.
For me personally, it's not very important. I'm set with the plugin version I currently have, but it wouldn't be nice if I updated and the whole plugin stopped working.
I don't plan on doing anything special for NeoVim (like using Lua), but I should be able to add a guard to only use the vim9 indentexpr if vim9script is available (so you can keep updating).
There are some slight issues with cond and match that I haven't figured out yet (I need test cases first…).
Indenting extremely large blocks correctly is slow, so there are 2 hacks to help. One limits the "context" of the indent to about 100 lines when looking for the outer brackets of an expression; if that ends up merging, I'll make it user configurable and document it. The other tries to use the previous line for indent if possible, but IIRC it's subject to the 100-line limit first.
Still, it's a marked improvement over lispindent, which fails to get for/fold, {}, and some other Racket-specific syntax right.