Local Preview Performance/UX - Toggle between manual and auto refresh


#1

Hey guys,

First off, I love fuse and think you guys are doing a great job on an almost impossible mission. We’re really close to our first release.

I’m just sharing my current experience with local preview to help improve it:

  • When I start a vanilla project to test a feature or UI design, the start up time and “auto-detect-save/refying refresh rate” with local preview is fast and the experience is awesome.

  • I had the same experience when I first begun my project but as time went along and the project started to grow, I noticed that the start up time of the preview was taking longer and when making several “micro changes” to code, the refying would take longer as well; it almost feels as if its refying every time I hit save. Nature of our project:

  • We have a navigator in our mainview.ux and if I comment out 99% of pages it doesn’t make a diff to preview performance. If I remove the files from the project as well, then the preview gets super fast.

  • Some of our pages make API calls.

  • We have not localized language yet.

  • Rough stats: 40 pages, 110 components (some simple, some complex), 6+ fuse modules that require native to test & 2 external projects/foreign code

  • The local preview can become unresponsive sometimes even if I do a “single save”, meaning not making a change and hitting save while the preview is busy refying from the initial save.

  • I’m usually forced to force quit when it “hangs” for awhile but once I do this, starting the preview up again will be a pain; I don’t know why but it takes even longer after an “app reboot/crash” to preview. I typically check my activity monitor and force quit all fuse processes before “re-previewing” else it takes even longer to start. Rebooting macOS and starting preview works but not a viable workflow. At this stage, its actually faster to save changes and export to native device; android export is faster in this regard as it doesn’t require android studio to run whereas iOS requires XCode to run the app on your device. Have to use native to test some of the fuse features used.

Some ideas:

  1. Would be great if the preview could detect when I’ve stopped hitting save then fire one refy event.
    So if I hit save 3 times within 2 seconds, it should only refy once after 2 seconds, instead of refying 3 times.
  2. You could have a toggle button that when its on, will act as usual (great for when project is small) but when its off, will require me to manually refresh/rebuild/restart. Probably best to have it on by default. (this will help greatly when the project is big and slow)

Specs: macOS Sierra 10.12.6, Fuse 1.6.1, 2.7Ghz Core i5, 12GB Ram


#2

Hi!

Thank you so much for writing this detailed, comprehensive feedback. We are aware of the fact that the Studio performance degrades with larger projects and are constantly working to improve that. I’ve relied your suggestions internally and someone will surely evaluate these ideas.

As for your workflow, there’s just one thing I can suggest to improve it. When you find yourself in the situation where you need to “force quit all fuse processes”, you can just go and run fuse kill-all in Terminal. That’ll take care of it.

Thanks again!


#3

Cool, np and thanks for the kill-all cmd :slight_smile:


#4

Just a quick update… fuse’s 1.7 local preview update is simply awesome! I’m able to work on a “full project”, hasn’t crashed yet🤞and haven’t had strange repeating refy’s!

Big thanks to everyone who was a part of that! :tada:

Give that man a bells

Watch Thank You


#5

Hey guys,

Just an update on the performance/UX with Fuse Studio 1.8.1…

Startup

When I start the local app preview, Fuse Studio sometimes “hangs” at the white Loading screen:

Configuring  6,72 s
Compiling syntax tree  3,71 s
Generating code and data  9,52 s

Build completed in 20,68 seconds

OpenGL Version: 2.1 ATI-1.51.8
OpenGL Vendor: ATI Technologies Inc.
OpenGL Renderer: AMD Radeon HD 6770M OpenGL Engine

At this point, I just hit rebuild (cmd + shift + R), it then builds within roughly half the time, then loads the app as usual.

Refresh

When I make UX changes, the refying takes a bit longer now and sometimes can get caught in an endless loop of refying, at these points, I have to close fuse studio and re-preview as trying to get a rebuild command in is next to impossible as the refy loop is faster than my shortcut key interruption.