{"id":2154,"date":"2016-02-08T14:36:39","date_gmt":"2016-02-08T14:36:39","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2154"},"modified":"2025-10-09T07:20:34","modified_gmt":"2025-10-09T14:20:34","slug":"mobile-1-2-enable-forestdb","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/","title":{"rendered":"Couchbase Mobile 1.2:  Enabling ForestDB for iOS and Android"},"content":{"rendered":"<h3><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-30-at-12.36.48-am.png\" \/>Couchbase Mobile 1.2<\/h3>\n<p style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #333333;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">The <\/span><a style=\"text-decoration: none\" href=\"https:\/\/www.couchbase.com\/blog\/announcing-couchbase-mobile-1.2\/\">new release<\/a> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">of Couchbase Mobile 1.2, now available for <\/span><a href=\"https:\/\/www.couchbase.com\/nosql-databases\/downloads#couchbase-mobile\">download<\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">, delivers significant improvements around performance on the local client side storage engine for mobile devices. More specifically, the latest integration of ForestDB as the new storage engine designed to support various server and mobile operating systems.<\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> On the server side,<\/span><a href=\"https:\/\/www.couchbase.com\/nosql-databases\/downloads\/\">Couchbase Server 4.1<\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> completes the mobile story with<\/span><a style=\"text-decoration: none\" href=\"https:\/\/www.couchbase.com\/nosql-databases\/downloads#couchbase-mobile\">Sync Gateway 1.2<\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> running in between the<\/span><a style=\"text-decoration: none\" href=\"https:\/\/www.couchbase.com\/nosql-databases\/downloads#couchbase-mobile\"> Couchbase Lite 1.2<\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> mobile client. <\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">In this blog, I will explore ForestDB, examine the benefits, and share how developers can enable this feature in their apps.<\/span><\/p>\n<h3>ForestDB<\/h3>\n<p style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">What<\/span><a style=\"text-decoration: none\" href=\"https:\/\/github.com\/couchbase\/forestdb\"> ForestDB<\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> provides for Couchbase Lite is a persistent key-value storage library where both the key and value mapping are binary blobs. ForestDB is a low-level key\/value storage engine, and in the same family as<\/span><a style=\"text-decoration: none\" href=\"https:\/\/en.wikipedia.org\/wiki\/Berkeley_DB\"> Berkeley DB<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/LevelDB\"> LevelDB<\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">. As a developer you are able to get and set values accordingly as well as enumerate the keys in lexicographic order.<\/span><\/p>\n<p dir=\"ltr\" style=\"line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt;text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">To better understand and find out more about the next generation storage engine for Couchbase, <\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">view this presentation by<\/span> <a href=\"https:\/\/twitter.com\/chiyoungseo\"> Chiyoung Seo <\/a> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">at the 2015 Couchbase Connect:<\/span><\/p>\n<p style=\"text-align: center\">\n<h3 style=\"text-align: justify\">Benefits<\/h3>\n<p style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Here are some of the performance improvements of the new storage system for Couchbase Lite 1.2:<\/span><\/p>\n<ul>\n<li style=\"text-align: justify\">Faster speed \u2014 this will vary by app, but we\u2019ve seen from 2x to 5x improvement in tasks like document insertion and querying.<\/li>\n<li style=\"text-align: justify\">Better concurrency \u2014 a writer thread (like the replicator) never blocks readers (like your GUI thread.) This helps keep your application responsive.<\/li>\n<li style=\"text-align: justify\">Lower RAM footprint \u2014 data caches are shared between threads, reducing the overhead of having multiple threads access a database, as occurs during replication.<\/li>\n<li style=\"text-align: justify\">Auto Database compaction \u2014\u00a0Database compaction (which frees up disk space) runs in the background without blocking other threads, and is scheduled automatically whenever there\u2019s enough space to recover.<\/li>\n<\/ul>\n<h3 style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Depending on the operation and data set involved, <\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">there can be up to 5X improvement in speed, as well as,<\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> better concurrency management where the writer never blocks the readers. Because data caches are shared between threads, we now see a lower RAM footprint. <\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">This is complimented by automatic database compaction and background presence.<\/span> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">You can read more about<\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> the ForestDB benchmarks and performance testing results by visiting Cihan Biyikoglu\u2019s <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/next-generation-storage-engine-couchbase-server-and-couchbase-lite-forestdb-now-available-beta\/\"> blog <\/a><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> on the next generation storage engine for Couchbase Server and Couchbase Lite.<\/span><\/h3>\n<h3 style=\"text-align: justify\">Get Started<\/h3>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">In previous versions, <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/SQLite\">SQLite<\/a> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">was the available storage engine for Coucbase Lite.<\/span> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">While SQLite currently emains the default, for Couchbase Mobile 1.2 there is an optional package in the Couchbase Lite project library to enable ForestDB.<\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> The iOS and Android GrocerySync starter project with ForestDB components can be downloaded from<\/span> <a href=\"https:\/\/github.com\/couchbaselabs\/GrocerySync-Android\">GitHub<\/a> on the specific branch.<\/p>\n<h3>Enable ForestDB<\/h3>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Now I&#8217;m going to discuss how to enable <\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">ForestDB inside our mobile application projects to take advantage of the new benefits. Note that if you have a previous project using an earlier version of Couchbase Lite then the existing database files are not converted. This is where a SQLite-backed database will continue <\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">using SQLite by default because the format of the database type is established at the beginning of project creation. The existing database will always open with the same storage engine that created them.<\/span> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Stay tuned for future blogs that will address how to migrate that over.<\/span><\/p>\n<h4 style=\"text-align: justify\">iOS:<\/h4>\n<h4 style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">The following describes<\/span><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\"> the steps required to enable the ForestDB storage engine from within your iOS project. First move or copy the &#8216;CouchbaseLite.framework&#8217; library file found from the<\/span> <a href=\"https:\/\/www.couchbase.com\/dl\/releases\/couchbase-lite\/ios\/1.2.0\/couchbase-lite-ios-enterprise_1.2.0-112.zip\">couchbase-lite-ios-enterprise_1.2.0-112<\/a> <span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">ZIP file into your iOS app project&#8217;s folder or into your iOS app project&#8217;s Frameworks subfolder. From there, drag the version 1.2 CouchbaseLite.framework into the project to avoid creating a reference in your project to some other filesystem path. This allows the framework to be available on all machines.<\/span><\/h4>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">The Frameworks folder should now contain the CouchbaseLite.framework file. Next, drag in the libCBLForestDBStorage.a file so that both the green highlights are available in your Frameworks folder.<\/span><\/p>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">The system library libc++dylib needs to be linked and to do that we will go into the target&#8217;s &#8220;Build Phases&#8221; editor. Click on the &#8216;+&#8217; symbol under the &#8220;Link Binary with Libraries&#8221; section and select the file of interest from &#8216;\/usr\/lib\/&#8217; or simply type &#8216;c++&#8217; into the filter field in the library chooser and &#8216;libc++&#8217; will show up.<\/span><\/p>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">The file path may look similar to the following:<\/span><\/p>\n<p style=\"text-align: justify\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-28-at-2.45.17-pm.png\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-28-at-2.48.42-pm.png\" \/><\/p>\n<ul>\n<li style=\"text-align: justify\">In Xcode, open the Build Phases screen of your application target, and open the Link Binary With Libraries section.<\/li>\n<li style=\"text-align: justify\">Drag libCBLForestDBStorage.a from the filesystem folder (where you dragged it to, earlier) into the list in the Link Binary With Libraries section.<\/li>\n<li style=\"text-align: justify\">Click on the &#8216;+&#8217; symbol under the list of libraries to open the library chooser. Type &#8216;c++&#8217; into the filter field, and &#8216;libc++&#8217; will show up. Select it and add it.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-28-at-1.11.40-pm.png\" \/><\/p>\n<ul>\n<li>Now build your project; it should succeed.<\/li>\n<\/ul>\n<p>ForestDB is now available, but it isn\u2019t set as the default storage type, so new databases will still be created with SQLite. To change this, set the CBLManager instance\u2019s storageType property before opening any databases.\u00a0 For example, you might add the code outlined in green:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/libc.png\" \/>Upon which the CBLManager class may be referenced to specify the \u2018storageType\u2019 property to be ForestDB.\u00a0 This is how we enable the iOS project to use now the ForestDB storage system.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-28-at-2.19.13-pm.png\" \/><\/p>\n<p style=\"text-align: justify\">For the specific sample app project, navigate to your \u2018AppDelegate.m\u2019 file and under the \u2018createDatabase\u2019 method, specify the storageType property.\u00a0 But typically this depends on your app code&#8217;s structure and is usually in the application delegate class.\u00a0 Go to the place in your project or code where you instantiate the CBLManager class, and right afterwards add a line to set its storageType property, like so:<\/p>\n<pre><code class=\"\u201cobjective-c\">  - (void)createDatabase {\r\n    CBLManager* manager = [CBLManager sharedInstance];\r\n    manager.storageType= @\"ForestDB\";\r\n    NSError *error;\r\n    _database = [[CBLManager sharedInstance] databaseNamed:@\"todosapp\" error:&amp;error];\r\n}<\/code><\/pre>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Now we are ready to build and run the application to have our mobile app use ForestDB as the storage engine.<\/span><\/p>\n<h4>Android:<\/h4>\n<p dir=\"ltr\" style=\"line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Here are the steps required to enable the ForestDB store from within your Android project.<\/span><\/p>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">From within your Android project, the module level\u2019s build.gradle file would need to reference Couchbase Lite version 1.2 along with explicitly bringing in ForestDB as a storage engine at the dependency level. The dependencies would now include:<\/span><\/p>\n<p><!--cke_bookmark_4747S--><\/p>\n<pre><code class=\"bash language-bash\">compile 'com.couchbase.lite:couchbase-lite-android:1.2.0'\r\ncompile 'com.couchbase.lite:couchbase-lite-android-forestdb:1.2.0'\r\n<\/code><\/pre>\n<p><!--cke_bookmark_4747E--><\/p>\n<p>And overall the build.gradle file should look like:<img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-28-at-3.17.20-pm.png\" \/><\/p>\n<p style=\"text-align: justify\">You may reference the <a href=\"https:\/\/github.com\/couchbaselabs\/GrocerySync-Android\/blob\/release\/1.2.0-forestdb\/GrocerySync-Android\/build.gradle\">build.gradle<\/a> file from GitHub. \u00a0Now over in our \u2018MainActivity.java\u2019 file, what is new in Couchbase Lite 1.2 for Android is that there is now the \u2018DatabaseOptions\u2019 class where we specify the properties like \u2018.setStorageType\u2019.<\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">To enable ForestDB in our Android application, we now need to pass in the ForestDB_Storage parameter to the \u2018setStorageType\u2019 function to switch the storage type from SQLite to ForestDB. \u00a0See below to learn how this is done:<\/span><\/p>\n<pre><code class=\"java language-java\">manager = new Manager(new AndroidContext(getApplicationContext()), Manager.DEFAULT_OPTIONS);\r\n\r\n\/\/install a view definition needed by the application\r\nDatabaseOptions options = new DatabaseOptions();\r\noptions.setCreate(true);\r\noptions.setStorageType(Manager.FORESTDB_STORAGE);\r\ndatabase = manager.openDatabase(DATABASE_NAME, options);<\/code><\/pre>\n<p><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">Below in the GrocerySync sample app, we see where we reference the \u2018setStorageType\u2019 property from within the startCBLite() method:<\/span><\/p>\n<p style=\"text-align: justify\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/february\/mobile-1.2-enable-forestdb\/screen-shot-2016-01-28-at-3.46.07-pm.png\" \/><\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 14.666666666666666px;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline\">So there you have it, Couchbase Mobile 1.2 comes with ForestDB as the new storage engine and we learned how to enable the feature from the default SQLite solution. We will explore Couchbase Mobile 1.2 further, including encryption and performance topics in follow-up blogs.<\/span>\u00a0 Be sure to download the new <a href=\"https:\/\/www.couchbase.com\/nosql-databases\/downloads#couchbase-mobile\">Couchbase Mobile 1.2<\/a> and connect with us in our <a href=\"https:\/\/www.couchbase.com\/forums\/c\/mobile\/\">Mobile Developer Forums<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Mobile 1.2 The new release of Couchbase Mobile 1.2, now available for download, delivers significant improvements around performance on the local client side storage engine for mobile devices. More specifically, the latest integration of ForestDB as the new storage [&hellip;]<\/p>\n","protected":false},"author":30,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2370,7667,1810,9410],"tags":[1536],"ppma_author":[8983],"class_list":["post-2154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-couchbase-lite","category-couchbase-mobile","category-objective-c","tag-ios"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android\" \/>\n<meta property=\"og:description\" content=\"Couchbase Mobile 1.2 The new release of Couchbase Mobile 1.2, now available for download, delivers significant improvements around performance on the local client side storage engine for mobile devices. More specifically, the latest integration of ForestDB as the new storage [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-08T14:36:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:20:34+00:00\" \/>\n<meta name=\"author\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\"},\"author\":{\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\"},\"headline\":\"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android\",\"datePublished\":\"2016-02-08T14:36:39+00:00\",\"dateModified\":\"2025-10-09T14:20:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\"},\"wordCount\":1182,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"ios\"],\"articleSection\":[\"Android\",\"Couchbase Lite\",\"Couchbase Mobile\",\"Objective-C\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\",\"name\":\"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-02-08T14:36:39+00:00\",\"dateModified\":\"2025-10-09T14:20:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\",\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"caption\":\"William Hoang, Mobile Developer Advocate, Couchbase\"},\"description\":\"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/william-hoang\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android","og_description":"Couchbase Mobile 1.2 The new release of Couchbase Mobile 1.2, now available for download, delivers significant improvements around performance on the local client side storage engine for mobile devices. More specifically, the latest integration of ForestDB as the new storage [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-02-08T14:36:39+00:00","article_modified_time":"2025-10-09T14:20:34+00:00","author":"William Hoang, Mobile Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"William Hoang, Mobile Developer Advocate, Couchbase","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/"},"author":{"name":"William Hoang, Mobile Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32"},"headline":"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android","datePublished":"2016-02-08T14:36:39+00:00","dateModified":"2025-10-09T14:20:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/"},"wordCount":1182,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["ios"],"articleSection":["Android","Couchbase Lite","Couchbase Mobile","Objective-C"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/","url":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/","name":"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-02-08T14:36:39+00:00","dateModified":"2025-10-09T14:20:34+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/mobile-1-2-enable-forestdb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Mobile 1.2: Enabling ForestDB for iOS and Android"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32","name":"William Hoang, Mobile Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5","url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","caption":"William Hoang, Mobile Developer Advocate, Couchbase"},"description":"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering","url":"https:\/\/www.couchbase.com\/blog\/author\/william-hoang\/"}]}},"authors":[{"term_id":8983,"user_id":30,"is_guest":0,"slug":"william-hoang","display_name":"William Hoang, Mobile Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","author_category":"","last_name":"Hoang","first_name":"William","job_title":"","user_url":"","description":"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2154"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2154\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2154"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}