I made significant updates to figwheel-bridge.js so that it works
better with figwheel and hopefully better overall. Removed most hacky
integrations using hooks that will be permanently available in
figwheel.
By adding a listener that listens to all of Figwheels internal messages
the groundwork for a more figwheel like feedback system in the top
level figwheel react component has been started.
Update it to latest version 0.5.8. Latest versions of lein-figwheel
generate the "figwheel.connect" including the build id, so I updated
figwheel-bridge to concat the platform id.
Figwheel logs compilation exception in several log messages, so need to buffer them to show in YellowBox.
- buffering starts on "Fighweel: Compile Exception"
- buffering stops on "Error on file"
- ReactNative server host updates had to be changed for 0.29.2: AppDelegate.m does not have host anymore, RegExp for host in RCTWebSocketExecutor.m had to be changed.
- using latest available version of lein-figwheel [0.5.0-6]
- figwheel now 'thinks' it is running in node.js environment (thanks @artemyarulin for hints)
- figwheel :heads-up-display is now disabled. Compilation warnings are still logged and shown in yellow box on screen. (thanks @seantempesta for hint)
- added re-natal.support namespace which provides functions to make it possible mounting om root application not on "real" root node but on other component which acts as a root node.
Now it is just static ui which works with figwheel-bridge. Could not implement :jsload-callback tom make figwheel work correctly yet.
State has to be introduced next.
- forcing reloading core namespace (using ^:figwheel-load annotation) is wrong. It causes evaluation of wrong js files for platform because both ios and android core.js files are reloaded.
Bug description:
figwheel-bridge tracks the js file evaluation and when /env/<platform>/main.js script is evaluated it means that all app code is loaded and can be started. But in case user code contains custom namespace called *.main, then figwheel-bridge interpret the evaluation of this namespace incorrectly and tries to start app too early.