Fork me on GitHub
#re-frame
<
2019-07-12
>
mikethompson01:07:51

@joshkh that would mean your event handling code and rerender is taking a very long time. So long, in fact, that Chrome thinks it will lead to a bad user experience.

mikethompson01:07:30

You are "locking up" the single thread of control and making the Chrome app unresponsive. You can, of course, shrug your sholders and ignore it, but Chrome is worried for a reason. Its not ideal.

mikethompson01:07:22

On the other hand, I'm assuming this is the development build, so the production build will likely be faster.

mikethompson01:07:28

But probably not THAT much faster that this issue goes away.

mikethompson01:07:46

Something is probably wrong if the event handling and rerender is taking half a second (although you are not specific and say only <N>ms, so I'm not sure what N really is)

joshkh21:07:50

That's a direct copy and paste from Chrome. It's giving me <N>ms! Is it possible that the warning is related to figwheel and not re-frame?

joshkh21:07:13

I transitioned to deps.edn and figwheel-main a while back and found the results to be a little more painful than what comes with re-frame's lein template (which works like a charm). For example, I had to add quite a few hooks and re-render methods that I didn't need before.

Ivan Fedorov09:07:48

@joshkh dev builds can add overheads per action. They aren’t that large, but big enough to trigger those warnings. Try advanced optimizations 😉

Ivan Fedorov09:07:27

If doesn’t help – I’d measure state recalculation+re-render time and based on that maybe invest more time into fine-grained subscriptions based on signals, since they reduce the amount of re-render.

Ivan Fedorov09:07:31

started running into this no handler registered for effect 'event'. Ignoring. Opened https://github.com/Day8/re-frame/issues/536

oconn09:07:23

Just checking because I didn’t see it shown in the issue, but there is a registered effect called event somewhere in your project?

Ivan Fedorov10:07:12

@oconn nope none of that. There’s an interceptor that alters a specific event in coeffects, but it doesn’t help if I turn it off.

oconn11:07:23

@ognivo re-frame injects two interceptors into the interceptor chain when you use reg-event-db or reg-event-fx. The second is do-fx which takes the effects map and triggers each one when after is called. My guess - you’re seeing that error because :event is getting mapped in there.

oconn11:07:12

If you are seeing it across multiple triggered events, my first guess would be a custom interceptor is causing the issue

Ivan Fedorov11:07:01

I’ve just replaced all my interceptor functions with identity, cleared compiler and browser caches, tried both dev and production build. Doesn’t help.

Ivan Fedorov11:07:59

This is a recent thing, so I guess I’ll try a rollback and dissect tomorrow

oconn11:07:39

That does seem odd. Are you seeing this across multiple triggered events? Another thing you could try is placing an interceptor at the front of an interceptor chain of an event that is effected - that logs the co-effects in it’s after function. Are you using re-frame-10x?

Ivan Fedorov11:07:45

Yes, I like this idea, I should log it this way, thanks! I am. Turning it off doesn’t help though) Or you’re suggesting its tracing abilities?

oconn11:07:04

Yeah the later. It could be helpful to add some of that output to the issue.

Ivan Fedorov11:07:25

Uh oh, yeah, my fault. I wasn’t supposed to return back the whole context, right? Yes, if a function returns {:db db} instead of ctx – it’s all good. @oconn thanks a lot, mate! Wish you a very nice weekend 🙂 🍺❤️

oconn12:07:36

No problem and - ah yeah, I should have caught that in your issue. That will do it - do-fx was trying to process each key of context.