{"id":609,"date":"2026-06-30T13:01:29","date_gmt":"2026-06-30T13:01:29","guid":{"rendered":"http:\/\/localhost\/nnmakicom2026\/?p=609"},"modified":"2026-07-01T13:58:34","modified_gmt":"2026-07-01T13:58:34","slug":"shopping-list-app-expo-react-native","status":"publish","type":"post","link":"https:\/\/nnmaki.com\/index.php\/2026\/06\/30\/shopping-list-app-expo-react-native\/","title":{"rendered":"Shopping List App (Expo \/ React Native)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This project was my first hands-on experience with the Expo framework. I had previously explored mobile development by installing Android Studio, but I found it quite resource-heavy and, due to its extensive feature set, somewhat overwhelming for a beginner project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As someone with a JavaScript background, Expo felt like a much more approachable way to start building mobile applications. Instead of writing platform-specific code in Kotlin or Swift, the application is built with React Native. Expo&#8217;s EAS Build service packages the application for Android and iOS, allowing the build process to be completed without maintaining a complex local development environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">During development, Expo Go proved to be a particularly useful tool. By running a local development server through Expo CLI, I was able to test changes in real time on a physical mobile device, which made the development process fast and convenient.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_4_1920x1080.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"616\" src=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_4_1920x1080-1024x576.png\" alt=\"\" class=\"wp-image-616\" srcset=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_4_1920x1080-1024x576.png 1024w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_4_1920x1080-300x169.png 300w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_4_1920x1080-768x432.png 768w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_4_1920x1080.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"613\" src=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080-1024x576.png\" alt=\"\" class=\"wp-image-613\" srcset=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080-1024x576.png 1024w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080-300x169.png 300w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080-768x432.png 768w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080-1536x864.png 1536w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_2_1920x1080.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"615\" src=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080-1024x576.png\" alt=\"\" class=\"wp-image-615\" srcset=\"https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080-1024x576.png 1024w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080-300x169.png 300w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080-768x432.png 768w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080-1536x864.png 1536w, https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_1_1920x1080.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To explore the framework, I created a simple shopping list application. Similar apps already exist in abundance, so the goal was not to create something unique, but rather to learn how Expo and React Native work in practice. The application stores data locally using a SQLite database through Expo&#8217;s SQLite library.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project also presented a few practical challenges. One issue involved UI responsiveness when the device&#8217;s virtual keyboard appeared and obscured important content. Interestingly, this problem did not appear during development and only became noticeable after creating and installing a production APK build. I also encountered a few dependency version compatibility issues during the build process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, the project was a straightforward and valuable introduction to Expo, React Native, mobile application development, and local data persistence with SQLite.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This project was my first hands-on experience with the Expo framework. I had previously explored mobile development by installing Android [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":611,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-609","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"mb":[],"uagb_featured_image_src":{"full":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675.png",1200,675,false],"thumbnail":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675-150x150.png",150,150,true],"medium":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675-300x169.png",300,169,true],"medium_large":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675-768x432.png",768,432,true],"large":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675-1024x576.png",1024,576,true],"1536x1536":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675.png",1200,675,false],"2048x2048":["https:\/\/nnmaki.com\/wp-content\/uploads\/2026\/06\/shopping_list_fi_1200x675.png",1200,675,false]},"uagb_author_info":{"display_name":"NikoNmaki","author_link":"https:\/\/nnmaki.com\/index.php\/author\/nnmakicom2026\/"},"uagb_comment_info":0,"uagb_excerpt":"This project was my first hands-on experience with the Expo framework. I had previously explored mobile development by installing Android [&hellip;]","mfb_rest_fields":["title","uagb_featured_image_src","uagb_author_info","uagb_comment_info","uagb_excerpt"],"_links":{"self":[{"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/posts\/609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/comments?post=609"}],"version-history":[{"count":3,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/posts\/609\/revisions"}],"predecessor-version":[{"id":693,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/posts\/609\/revisions\/693"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/media\/611"}],"wp:attachment":[{"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/media?parent=609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/categories?post=609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nnmaki.com\/index.php\/wp-json\/wp\/v2\/tags?post=609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}