App Inventor Capabilities and Limitations

You can build many apps with App Inventor, but there are limitations. Most of the limitations are due to the immaturity of the tool-- the App Inventor team hasn't yet implemented the functionality, but will.

App Inventor's capabilities include:
  • Access to most of the phone's functionality: phone calls, SMS texting, sensors for location, orientation, and acceleration, text-to-speech and speech recognition, sound, video.
  • The ability to invoke other apps, with the ActivityStarter component
  • Programming control just as with a textual language. There are blocks for conditionals (if, ifelse), foreach, and while, and a fairly comprehensive list of math and logic blocks.
  • Database access, both on the device and on the web. So you can save data persistently, and with a web database share data amongst phones.
  • Access to web information sources (APIs)-- you can bring in data from Facebook, Amazon, etc. See limitations below.
For a full listing of the components and blocks, see the component and block overview.

App Inventor has the following limitations in terms of the apps you can build:
  • Limited UIs. The user interface builder has improved but is still a bit buggy and limited, so you can't build any user interface. For instance, you can't create apps with multiple screens and handling orientation changes has some glitches. These problems are not fundamental to the design of App Inventor and will soon be fixed.
  • Limited Access to the device. There are not yet components for all the data and functionality of the phone. For instance, you can't save and retrieve files from the file system and you have only limited access to the contact list (e.g., you cannot create groups).
  • Limited Access to Web. You can only access APIs that follow a particular prototocol (App-Inventor-compatible APIs). So if you want to get data from the web, you'll need to program or have a programmer create an App-Inventor-Compliant API that wraps an existing API.
  • No polymorphic components. Function blocks are tied to specific components, so there is no way to call functions on a generic component. For instance, if you create a procedure MoveXY, it has to be tied to a specific image sprite, not a general image sprite.
  • Limited access to the Android Market. The apps (.apk files) generated by App Inventor lack the required configuration for direct inclusion in the market. However, there is now a workaround for market publication. See instructions at