CocoaPods 0.33

TL;DR: CocoaPods 0.33 has been released. It is shiny and brings a huge change for our community… the support for CocoaPods Trunk.

New command line UI

The help banners of the command line have been tuned:

  • Each element now is consistently identified by a single colour. The highlighting is also performed in the descriptions of the commands to make them more readable.
  • The alignment of the various elements and of their description has been carefully crafted.
  • The descriptions and other bodies of text now are consistently wrapped to the width of the terminal (or to a maximum value to preserve readability for full screen windows).

There is still some debate about how to handle light backgrounds. So if you have a well-construed argument share your view on CocoaPods#2159.

Another interesting enhancement is the inclusion of a suggestion for unrecognised arguments, which makes typos much easier to catch.

Finally, a galore of minor tweaks have been implemented:

  • The naked pod command doesn’t default to pod install anymore because it presented an error if the Podfile was not found. This context dependant behaviour was not the experience we are looking for our new users.
  • The --version option is not available anymore in sub-commands and gained the ability of presenting the versions of the installed plugins if coupled with the --verbose option.

Command line completion

The --completion-script option has been implemented for the pod command. It prints a completion script for the current shell (currently only the Z shell is supported). The result is: faster than ever CocoaPoding:

We choose to generate a script because this approach is much faster than invoking the pod command line tool to provide the completions. Unfortunately this approach will not pick changes relate to the installation (or the removal) of plugins or changes due to CocoaPods updates.

If you are using a properly configured Z shell, you can install or update the completion script with the following commands:

$ rm -f /usr/local/share/zsh/site-functions/_pod
$ pod --completion-script > /usr/local/share/zsh/site-functions/_pod
$ exec zsh


CocoaPods trunk is the new way to share specs via the CocoaPods Master repo. If you haven’t heard about it yet, you can read the details about it in the dedicated blog post. For CocoaPods users it is relevant to know that the pod push command has been moved to pod repo push (a temporary alias has been provided) because since this version it is intended to be used for private repos. Moreover, to prevent users sharing accidentally private specs with world, the pod repo push command will abort if there is an attempt to push to a repo where the master repo as the remote.

During the development of trunk we discovered that some users are not properly leveraging private repos:

  • If you are using the master repo to add your own private specs, don’t do this.
  • If you are using the name ‘master’ for you own private spec-repo, don’t do this.

Things will break.


David Grandinetti and Olivier Halligon have been hard at work to tame the proliferation of plugins. The result is the extremely meta cocoapods-plugins plugin which can list, search and check the available versions of the most useful CocoaPods plugins. Moreover, Boris Bügling created a template (pod plugins create) so getting started has never been easier.

A great example of a new CocoaPods plugin is podroulette.


To install the last release of CocoaPods you can run:

$ [sudo] gem install cocoapods

Until version 1.0 we strongly encourage you to keep CocoaPods up-to-date.

For all the details, don’t miss the Changelog.