Review : NimbleKit

An Xcode project template makes it easy to create an iPad app.

MacNN Rating:


Product Manufacturer: VolnaTech

Price: $99.00 US

The Good

  • Low learning curve.
    Rapid development.
    Active support community.

The Bad

  • Needs better documentation.
    Performance, especially memory issues, can be a big problem.
    Not suited for all types of apps.
NimbleKit is a framework to write applications for iPhone, iPod Touch, and iPad, without learning Objective C. It uses tools that any web developer should already know, such as JavaScript, HTML, and CSS. While NimbleKit does have its limitations, it presents an attractive option if you want to develop a simple application or to get into the app store quickly.

NimbleKit provides a project template for Xcode that makes it easy to set up the basics for a new application. You start by placing your web code in a "main.html" file.

NimbleKit with iPhone

NimbleKit with iPhone

You build your application just like you would make a web app, but with one very important difference. NimbleKit includes a JavaScript API that acts as a bridge between your code and the iPhone OS, which allows you to create and use actual native iPhone controls with a simple JavaScript function call. This works exactly as if you wrote them with Objective C. You can quickly start using interface elements, such as buttons, navigation bars, maps, and even SQLite databases with a very low learning curve.

Installation is a Breeze

As long as your system meets the minimum requirements to run Xcode and use the SDK, you can use NimbleKit. After you install the Apple iPhone SDK, download the NimbleKit installer and run the package.

Start New Project

Start New Project

Once the installation is complete, run Xcode, create a new project, and choose the NimbleKit Application as the project type.

New Project Type

New Project Type

Select your target device from the Product menu to specify whether you want to make an app for iPhone, iPad, or both.

Select Target Device

Select Target Device

To display your application, NimbleKit makes use of the UIWebView object from iPhone OS SDK, which is an Objective C class for viewing web-based content. This rendering engine powers Mobile Safari, so the same advantages and problems apply. This includes good support for HTML5 with its advanced features, such as offline storage and 3d rendering via the canvas tag, but it also means occasional font problems, no flash video, and worse performance than if you were using the iPhone OS Core Animation library.

It is important to understand that a properly designed NimbleKit project is not a web app, and can look and feel just like a native application. It will show up in the app store with the other apps for sale, but it doesn't have the same address bar and navigation buttons that always show up when using Safari. Additionally, you can make use of projects like iUI or jQTouch to help you build an experience that is like a traditional iPhone app. You can do a Google search to find templates for Fireworks or Photoshop that provide controls that NimbleKit doesn't already provide. A search might include traditional iPhone controls such as buttons, switches, sliders and more.

It is also important to understand that I am not an Objective C programmer; I am a web developer by trade. HTML, CSS, and JavaScript are my home turf. I wanted to get involved in iPhone development early on, but my attempts to learn Objective C have been fruitless. I read many books and watched tutorials, but to no avail. Xcode, Cocoa Touch, the iPhone SDK, and everything else about the Apple development world is completely new to me.

NimbleKit HTML

NimbleKit HTML

NimbleKit presents the perfect solution. It is easy to create native iPhone controls that are completely out of my reach using Objective C. For example, setting up a streaming audio player to connect to an Internet radio station is only three or four lines of JavaScript code. In addition, to set up a Google-like map with real road data, adding a pin for your current location, and pins for other specific points that you want is only five or six lines of JavaScript code.

NimbleKit Map App

NimbleKit Map App

In my first NimbleKit Project I re-purposed a quiz program I wrote with JavaScript that was used as a study tool to go with a technical certification book. I used that code base and tweaked it to create a trivia game app. I spent less than 8 hours to get the basic framework converted and working in NimbleKit, including setup and the learning time to figure out how the system worked. It took a lot longer to submit the app to the store for approval, but is now available for sale under the name "Lost Answers." The trivia game covers the television show Lost.

Lost App

Lost Answers App

My first coding problem dealt with memory, or rather the lack of it. I thought my lightweight code didn't do anything complicated, and it ran smoothly in a browser and the iPhone simulator. When I deployed the app to my iPod touch it crashed upon launch. After a few Internet searches, forum postings, and pulling my hair out, I realized the problem was that the iPod touch ran out of memory. I stored the trivia questions in a JavaScript array and that was apparently too much for the device to handle.

This problem is not unique to NimbleKit, and may be familiar if you have developed for mobile devices before, including iPhones. I am unfamiliar with how to recognize, avoid, and fix memory related issues with Xcode, and I suspect many NimbleKit customers are in the same boat. I rewrote my code so that it did not crash on the iPod Touch, which involved completely rewriting the heart of the program code that managed my trivia questions.


The included NimbleKit documentation focuses almost entirely on the API. It lists out the functions you need to call in order to use various native controls and is well written and concise. Unfortunately, when I ran into these performance problems it was not much help. Since NimbleKit targets web developers who may not know how to deal with these issues, they need to provide better getting started tutorials that walk you through how to use Xcode to monitor and fix memory and other kinds of run-time problems.

Performance Problem

Another performance problem is one that NimbleKit can't do anything about: JavaScript performance via Mobile Safari is not nearly as good as using native Objective C code. This means that CPU-intensive tasks, such as animation, that NimbleKit hasn't added to its API, performs poorly compared to a traditional app. This makes NimbleKit a bad choice for graphic intense apps like many kinds of games. Technically, animation is possible with JavaScript, but it performs so slowly on an iPhone that it's not going to play well.

However, the interface elements and file support implemented in NimbleKit do run at native speed. This includes audio and video playback, maps, PDF files, buttons, tabs, and more. Therefore, internet radio players, book readers, RSS readers, and trivia games are all great fits. Also, thanks to the magic of AJAX, an experienced JavaScript developer can move CPU heavy operations to a server to save resources on the device.

Frequent Updates

On a more positive note, VolnaTech updates NimbleKit frequently and they have an active support forum where you can work directly with the developers. They also provide free code-level support to anyone who purchases the full product. They regularly add new features, and take requests from the community about what features to add next. For example, version 1.7 added support for SQLite databases which allowed me to move my trivia questions to a database format and solve my memory problems. Version 1.8 added support for making iPad apps and was available only days after the iPad launch event. The most recent 1.8.2 release includes the ability to rotate native controls, in addition to bug fixes.

In the 4.0 version of the iPhone OS, Apple changed some of the licensing terms for the SDK, which many fear will ban the use of external tools such as NimbleKit. Unlike the new version of Flash, NimbleKit development is done entirely in Xcode, and only uses Apple supported tools. The developers of NimbleKit reviewed the new license and feel confident that NimbleKit will be fine under the new rules.

Try Before You Buy

While NimbleKit has its limitations, it is a great way start with iPhone development for specific kinds of apps, especially if you are intimidated by Objective C. Best of all, you don't have to pay for the product until you want to deploy your app. You can download it and write your whole app in the simulator before you decide that the product is right for you.

Edited by Ilene Hoffman, Reviews Editor