Skip to content

Handle large collections in Debugger #145

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

lydell
Copy link

@lydell lydell commented Jul 13, 2025

Large collections, like lists with thousands of items, either cause the debugger and the whole application to be very slow, or crash with a stack overflow.

Closes elm/compiler#2133
Closes #90
Closes #104
Closes #132

Closes #120. That’s a previous PR that touched on this problem. That PR makes a function tail call recursive to avoid crashing, but the slowness remains.

This PR is fast even with big collections, by expanding just the first 100 items. There’s a “view more” button to show the next 100. I went with the simplest possible UX around that, since it’s unclear if anyone actually tries to click to item number 9000 – at that point, search is better. And then you could just as well do the search with Elm code and Debug.log rather than using some obscure search syntax in the debugger. I think looking at the model in the debugger is more for learning the overall structure of an app, than to look at every single item of long lists, sets or dicts.

Note to those following along: This PR is included in https://github.com/lydell/browser/tree/safe, which is part of https://github.com/lydell/elm-safe-virtual-dom, but it has nothing to do with “safe virtual DOM” really, it’s just in there because it’s convenient.

Large collections, like lists with thousands of items, either cause the
debugger and the whole application to be very slow, or crash with a
stack overflow.

Closes elm/compiler#2133
Closes elm#90
Closes elm#104
Closes elm#132

Closes elm#120. That’s a previous PR
that touched on this problem. That PR makes the experience go from
crashing to awfully slow.

This PR is fast even with big collections, by expanding just the first
100 items. There’s a “view more” button to show the next 100. I went
with the simplest possible UX around that, since it’s unclear if anyone
actually tries to click to item number 9000 – at that point, search is
better. And then you could just as well do the search with Elm code and
`Debug.log` rather than using some obscure search syntax in the
debugger. I think looking at the model in the debugger is more for
learning the overall structure of an app, than to look at every single
item of long lists, sets or dicts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant