RAPIDDEV: TITANIUM DEVELOPMENT AT THE SPEED OF LIGHT!

As developers of mobile applications, we love the fact that we get to run our software on devices that are used in the day to day life of the majority of humans on earth. When growing up, computers that fit into our pockets was something out of Star Trek. Yet now here we sit developing software for these devices! The only issue, if you are like us, is that you come from a background of doing web development where you save your file and it more or less just updates in the browser/server instantly. Mobile  though is another beast in that it requires a constant cycle of recompiling the app over and over again eating up a TON of time. How much time, well the other day we sat down and calculated that our 9 person team spends a total of anywhere between 2-6 hours per work day waiting on the compile steps as we tweak UI elements and debug issues. We found this to be an unacceptable waste of time.

INTRODUCING RAPIDDEV!

RapidDev is an all new module + build plugin for Titanium Mobile to behave in a way that is similar to TiShadow and LiveView. It allows you to see changes on your device the moment you hit save on your changes!

Now to be clear, RapidDev is NOT designed to compete with TiShadow, in fact we have been talking with David (the creator of TiShadow) and we plan to work together to use parts of RapidDev within his project as TiShadow has many features (screenshots, screen streaming, and more) that we do not currently support and may never support. So why use RapidDev? RapidDev provides a more simple toolset with the idea that less is more. It is simply an alternative way of doing things. Also RapidDev’s roadmap (see below) will have some features that can only be done the RapidDev way.

HOW DOES RAPIDDEV WORK?

Rapid dev, again, does NOT hack require or inject JS or anything like that. It inserts a native module and starts up a socket server to communicate changes with the mobile devices running the app. There should be absolutely no difference between your app when done normally vs RapidDev. If anything ever gets out of sync for any crazy reason, RapidDev will warn you and instruct you on how to get things back on track!

CURRENT STATUS

As of launch (v0.1.1) we support:

  • Instant hot-reload of all JS and assets (images, html, css…) basically if it goes in the resources directory, we support it.
  • iOS is the only platform with initial support, adding android support is our highest priority
  • TiSDK 3.2+ is currently supported, though we plan to add support for 3.1 SDKs too
  • Internationalization files are NOT yet supported
  • Alloy sorta/kinda works if you manually compile for ios. Full support is forthcoming
  • Auto re-connects to the server if you restart a RapidDev enabled app
  • Warns you if a RapidDev app is too out of sync and needs to be updated via a full rebuild

ROADMAP

Here is a list of features to be added in the respecting order of priority

  1. Android support
  2. Internationalization files
  3. BDD support using plain text tests (example :` tap on “login”` as a command in a test file) to test UI functionality and get you back to the last screen you were on automatically even if filling in data is needed. It will also auto take a screenshot of each screen along the way if you so desire.
  4. Mocha test support
  5. Full Alloy support (we are waiting for Alloy 1.4 to fix the issue of alloy doing a full compile for each change rather then just the affected files)
  6. Install on all connected devices, ios and android at once!
  7. Deploy builds via a testflight like cloud based system, including the ability to auto add ios UDIDs to your apple developer account for you… skipping that headache (we have a POC already working for this)
  8. Auto update apps with modules… full manual rebuilds will be a thing of the past! (yes we already have a POC working for this too!)

INSTALLATION

This is the best part! To install just run `[sudo] npm install rapiddev -g`

To use it, on any (for now ios based) ti build command, just add the flag of `–rapiddev` for example `ti build -p ios –rapiddev`

That is it! So have fun!