A Look at DevDocs.io

Bruno Skvorc

How often do you go through the following process when coding?

  1. Need a [insert programming language here] function definition and examples
  2. Google for said function
  3. Click first result which is either w3schools if you’re out of luck, or the online manual of the language you’re dealing with.
  4. Realize you need another function demoed and explained
  5. Go back to Google instead of using the search on the language’s website because it’s inexplicably awful and slower than actually reloading the tab after a new Google search
  6. Rinse and repeat

As a developer who deals in web technologies to a great extent, I’ve encountered this quite a lot. Simply finding the technical definition of a function or statement has become far more difficult than it ever should have been – not in terms of complexity, but in terms of time wasted. Wouldn’t it be great if we could have all our development docs in one place, in a beautiful, offline-enabled interface with a super fast fuzzy search, for any language? Enter devdocs.io.

What is it?

DevDocs is a web app aimed at providing you with quick access to the reference manual of just about every front-end language and library. It lists all the APIs of a given selected language and their official documentation in an easily browsable and viewable format, without the needless menus and tacky attempted styling that official sites like php.net try to pull off.

It’s an Ajax-driven and open source web app with syntax highlighting, even available as a Chrome extension or as a plugin for Sublime Text or Brackets.

enter image description here

What does it do?

It aggregates the reference manuals of all popular languages (provided they have their manuals in an easily accessible and machine-consumable format). It provides you with a slick and fast interface for fuzzy searching the documentation of all selected languages, in order to find the information you need in as few key presses as possible. What’s fuzzy searching, you may be wondering? Fuzzy searching is searching for a string that approximately (not exactly) matches what you entered. It’s what editors like Sublime Text and LightTable use for their command search windows – entering something like “sa” will give you “Save As..”, because the input matches the initials of the command. Entering “delte” will offer results containing “delta” and “delete” and entering “bgcp” will even give you “background clip”. This type of search allows for super-fast fine tuning of results, and since they’re real-time, you can mix and match on-the-spot.

enter image description here


DevDocs downloads the index of the reference manual for the language you select, absorbing it into your local cache from where it serves the results. This does mean you have to redownload the languages of your choice on every new machine, but the speed gain from such a means of operation is far superior to the old fashioned Ajax way of doing things with remote requests. Mind you – currently, only the index is offline, the actual result you click is served from a remote location – for example, you still need internet access to fetch the document for JavaScript Arrays, even though it shows up in the search results even when offline.

enter image description here

It’s important to note that the contents fetched are official-only. This means user submitted entries like comments and samples are ignored.

You can search DevDocs in a specific language scope (for example PHP only) by prefixing your search query with “php” and hitting tab or space (on mobile). This switches search mode to “selected language only”. To exit this mode, simply backspacing out of it does the trick.

enter image description here

Open source and local

DevDocs is open source and encourages the community to contribute in a variety of ways. First off, it’s on GitHub, and invites users to submit issues and improve the code, like any good open source project. Secondly, DevDocs can easily be deployed locally, so you can run or host your own version. Adapting it to, for example, the API of your company’s internal system is a breeze. Last but not least, DevDocs uses Trello to gather user feedback on desired languages. Trello, a very efficient team based task list, supports various boards of information where people can collaborate, discuss and vote for cards (topics). DevDocs uses these cards to collect votes for individual language integration. To participate, see here.

enter image description here

DevDocs is maintained and updated regularly, and provides various means of keeping up to date with the changes:

All of these seem to be drawing from the same source, so it’s best to subscribe to just one of them.

Other perks

DevDocs is fully optimized for mobile devices, and highly responsive. It opens in a flash, and works exactly the same on mobile as it does on desktop. It’s built the way websites were always meant to be built – a smooth, fast and identical experience on every device. Thibaut Courouble really did a fantastic job.

enter image description here

As mentioned, the app installs as a plugin for Sublime Text and Brackets – meaning you can search for the API you need right from your editor. More plugins are on the way, most notably JetBrains product plugins. The app is also being ported to a standalone zero-configuration downloadable offline version.

DevDocs can be installed as a search engine in Firefox and Google Chrome, and basically any other browser and app supporting OpenSearch. OpenSearch is a collection of standards allowing a certain resource to identify itself as a search engine.

A variety of keyboard shortcuts are offered too, all intuitive and very useful, providing a truly smooth experience.

enter image description here


If you haven’t heard of DevDocs before reading this article, I fully encourage you to give it a go. The web is in dire need of such highly usable resources, so spread the word and help the community find better solutions to problems they’re dealing with. If you can contribute, DevDocs is on GitTip and supports PayPal donations – but arguably the best way to help out is to just use it, tell others about it and, above all, improve it by contributing to the project on GitHub.