Hi everyone,

I have recently thought about how there is a chance in Elm to leak event 
handlers if they are not cleaned up properly. A basic scenario where this 
can happen is this:

Assume an SPA made of React with some embedded Elm parts which uses 
subscriptions.
Now navigate to a page, which has an elm part, it will set the 
subscription. Now navigate away, the subscription will stay. Now navigate 
back to it and the component will create a new Elm app with yet another 
subscription. Repeat these steps and end up with very many leaked event 
handlers.

I created an example here: https://ellie-app.com/3LHDqnYqD4za1/10 
(I am simulating navigating away and back with ReactDOM.render and 
umountComponentAtNode)

As Elm becomes more and more popular and is increasingly used in SPAs this 
can become a problem with performance over a long page lifetime and also 
lead to hard-to-debug-behavior, so I think it would be really important to 
have some way to "clean up" after Elm with something like `app.kill()`.
Worth noting that the leaky behavior is not that problematic for non-SPAs 
because a page reload will always clean up everything.

Does anybody have any thoughts to share about this topic. Having similar 
issues or just realized that there might be some when reading this? Would 
love to collect some thoughts.

PS: I know one could work around this issue by using ports and shutting 
down the subscriptions manually, but I believe that there should a way to 
shut the app down from the outside and also that workaround does not work 
for the Navigation.program.

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to