Skip to content

4. Recommended Libraries

Stephen edited this page Sep 8, 2017 · 12 revisions

It is up to individual developers (Mentors, Hatchlings and Developers) to use or not use a library. The Lead Mentor on your project may have a preference and as your project lead you are expected to adhere to their preferences. In general it is common for experienced developers to prefer to not use a library for things that are easily written so keep that in mind.

Below are libraries that our community has found helpful and which are common across your platform. If you think one should be added please let us know!

Developers Please Note:

Before automatically looking for a library remember the point of the Dev Hatchery is to train you up and you aren't going to learn as much by using a library as you will by doing the work yourself so please first look for ways of achieving your goal without a library. For example if you need to format text fields in your project to look a certain way there is no need to use a library to do this unless the design is complicated. Similarly while Facebook's Pop library is an easy way to add animations if you only use this library you will not learn how to write your own basic animations which is generally something an intermediate/senior developer is expected to learn.

Requirements

We do have three related requirements:

  1. Every project must use Fabric/Crashlytics for crash reporting. It is included in the project templates
  2. Every project must make use of logging (so that the crash reports are helpful). You may use whichever logging method you would like.
  3. Every project must be fully unit tested. You may use native testing or a library. (Note most projects are not required to do UI/Functional testing because of the amount of time these kinds of tests can take however Lead Mentors may choose to make them required.)

iOS

  • SwiftGen: Generate enums for image assets, storyboards, etc to ensure type safety and avoid typos from stringly typed names. Highly recommended for projects to use SwiftGen *
  • SwiftLint: Automatic code formatting warnings and errors at the compiler level
  • AFNetworking/[Alamofire] (https://github.com/Alamofire/Alamofire): Networking library
  • SDWebImage: Image caching library which will allow you to do image downloads asynchronously, displaying placeholder images until the image is retrieved and caching retrieved images for better resource management
  • CocoaLumberjack: Logging library. *
  • Realm: Client-side database replacement for CoreData
  • Firebase: Client-side database replacement for CoreData as well as cloud database hosting and easy authentication
  • OHHTTPStubs: Swift network request stubbing
  • SVProgressHUD: Customizable progress hud *
  • XLForm: Can be used to quickly create form based views for example if the app's main purpose is to convert a paper based application form to a digital version XLForm is a great solution
  • Spring: Animations
  • POP: Animations
  • Keychain Access: Keychain access management

Android

Web / Node

  • Lodash: A modern JavaScript utility library delivering modularity, performance & extras
  • Knex: A "batteries included" SQL query builder for Postgres, MSSQL, MySQL, MariaDB, SQLite3, and Oracle designed to be flexible, portable, and fun to use
  • Mocha: A feature-rich JavaScript test framework
  • Bluebird: A fully featured promise library with focus on innovative features and performance
  • Express: Fast, unopinionated, minimalist web framework for Node.js
  • winston: A multi-transport async logging library
  • React: A Javascript library for building user interfaces
  • Angular: JavaScript-based open-source front-end web application
  • Vue: Another Javascript front-end web application

* Libraries marked with a star are included in the project template and should be removed if not used