As far as I know though, tree sitter has problems with really long lists and even incremental parsing gets slower linearly when extending the list.
Also, to my knowledge, tree sitter cannot move nodes around (which is also very hard for languages that are not as simple as the Dyck language [1]).
For bracket pairs, you can easily reuse all (...)-pairs in the following example, even though their height in the AST changes significantly:
old text: (...)[(...)]
new text: {{(...)}(...)}
https://github.com/p00f/nvim-ts-rainbow