{"id":5101,"date":"2023-04-06T13:37:03","date_gmt":"2023-04-06T17:37:03","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=5101"},"modified":"2023-04-06T13:37:05","modified_gmt":"2023-04-06T17:37:05","slug":"managing-build-environments-in-appflow","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow","title":{"rendered":"Managing build environments in Appflow"},"content":{"rendered":"\n<p>Configuring and managing build environments is critical in mobile development, but keeping everything organized can feel like a job even <a href=\"https:\/\/konmari.com\/about-marie-kondo\/\">Marie Kondo<\/a> couldn\u2019t handle. Without build environments, ensuring you have the right tools in place to successfully build your app is cumbersome at best. One wrong configuration value and your build pipeline can come to a screeching halt.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>A build environment is essentially the collection of dependencies and configurations needed to build your app. Now multiply that by each platform, version, and delivery channel, and you have a lot of environments to manage. Fortunately <a href=\"https:\/\/ionic.io\/blog\/appflow\">Appflow<\/a>, Ionic\u2019s mobile DevOps solution, is designed for easily managing build environments to ensure your app is built and deployed consistently across all platforms.<\/p>\n\n\n\n<p>Appflow manages the dependencies for you by providing build stacks and provides multiple options for easily specifying configuration details.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Custom Environments<\/h2>\n\n\n\n<p>Mobile teams will typically have multiple versions of their application, such as for testing or internal use, as well as for each supported platform like iOS and Android. Each of these versions will have different configurations, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API endpoints<\/li>\n\n\n\n<li>Version code, name, or number<\/li>\n\n\n\n<li>Bundle identifier<\/li>\n\n\n\n<li>API keys or other credentials<\/li>\n<\/ul>\n\n\n\n<p>These are typically managed with environment variables and secret keys that are set for each specific build environment. Managing these manually can be difficult, but Appflow lets you define and store <a href=\"https:\/\/ionic.io\/docs\/appflow\/package\/environments#custom-environments\">custom environments<\/a> to streamline and simplify your automated builds.<\/p>\n\n\n\n<p>To create a custom environment, go to Build &gt; Environments. Give your environment a name and provide key\/value pairs for secret keys and environment variables for that environment. Keep in mind that secret keys cannot be viewed once set.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" data-src=\"https:\/\/lh5.googleusercontent.com\/63e9V7s9UKMY7XQ1hOK5ZqHHpexS0haDFUMGKRqieHzsG0V5Sfq-jrnfzhPi0wtJsEgFCrRYDQ9n7YgGMrZsTshRn81qcv_OH_OCQ4N-FMC8oAREn8CmvahHLHyc4PrX-H__WQ9BvWuJRp9ICDBFrLo\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"lazyload\" \/><noscript><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/63e9V7s9UKMY7XQ1hOK5ZqHHpexS0haDFUMGKRqieHzsG0V5Sfq-jrnfzhPi0wtJsEgFCrRYDQ9n7YgGMrZsTshRn81qcv_OH_OCQ4N-FMC8oAREn8CmvahHLHyc4PrX-H__WQ9BvWuJRp9ICDBFrLo\" alt=\"\"\/><\/noscript><\/figure>\n\n\n\n<p>Once created, you can choose a custom environment from the Builds or Automations screen to make variables and secret keys available during build time. The environments can be updated at any time, allowing for security best practices such as key rotation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">iOS Schemes and Android Variants<\/h2>\n\n\n\n<p>Appflow custom environments are particularly powerful when combined with Appflow\u2019s iOS Schemes and Android Variants support. Use the `IOS_SCHEME`, `ANDROID_BUILD_TYPE`, and `ANDROID_FLAVOR` environment variables to use a scheme or variant defined in your project, and Appflow will apply it during the build. This means you won\u2019t have to duplicate configurations you\u2019ve already defined in your Android or iOS project.<\/p>\n\n\n\n<p><a href=\"https:\/\/ionic.io\/blog\/ios-schemes-android-variants-in-appflow\">Read more about schemes and variants here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Native Configurations<\/h2>\n\n\n\n<p>For specific configuration overrides such as the app name or bundle ID, or to customize variables for Appflow Live Updates, you can also leverage built-in custom <a href=\"https:\/\/ionic.io\/docs\/appflow\/package\/native-configs\">native configurations<\/a>. Just like custom environments, native configurations can be defined and selectively applied at build time for native iOS and Android builds.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" data-src=\"https:\/\/lh3.googleusercontent.com\/XLnPqjr356cNtO2b-P1mWWFWLuUMX7RQS5UhlTaFuvbWz42jvQ3eq7v9gGHbDyejXmOU2zVNDus-XB5kwMIStKV4PhsRkQZ1ZM6X9gkzwbfCfvXApp77plH85v_vEMzQ8EJixQ7MTkAVaNvFiGYtkkw\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"lazyload\" \/><noscript><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/XLnPqjr356cNtO2b-P1mWWFWLuUMX7RQS5UhlTaFuvbWz42jvQ3eq7v9gGHbDyejXmOU2zVNDus-XB5kwMIStKV4PhsRkQZ1ZM6X9gkzwbfCfvXApp77plH85v_vEMzQ8EJixQ7MTkAVaNvFiGYtkkw\" alt=\"\"\/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ad-Hoc Environments<\/h2>\n\n\n\n<p>While predefined custom environments make it easy to manage build environments for your most common build types, sometimes you need flexibility for a single build. This is helpful when testing new environment changes before adding them to your regular workflow or for unique one-off changes.<\/p>\n\n\n\n<p>To support this nimble workflow, Appflow introduced Ad-Hoc Environments that allow you to set or override environment variables for a single build. From the build screen, you can pass key\/value pairs which apply to that specific build only. These values are not saved after the build, and it\u2019s not recommended to use sensitive data.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" data-src=\"https:\/\/lh6.googleusercontent.com\/W0UuA1dWuSevVWl--YAFGR7pbFxpJZrFMGlR3fCo_Q0rRBzC4sc0yBTjChx05k7U2GSju_UqQYwmwZhpCLN8E2Vk6tlvRbhWxWGXz4Xy1SjCt4O6XY7Zr7qhrXprFRK0Zlm24VrqAhRHrwOkD0davfk\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"lazyload\" \/><noscript><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/W0UuA1dWuSevVWl--YAFGR7pbFxpJZrFMGlR3fCo_Q0rRBzC4sc0yBTjChx05k7U2GSju_UqQYwmwZhpCLN8E2Vk6tlvRbhWxWGXz4Xy1SjCt4O6XY7Zr7qhrXprFRK0Zlm24VrqAhRHrwOkD0davfk\" alt=\"\"\/><\/noscript><\/figure>\n\n\n\n<p>If you\u2019d like to create and save a new custom environment from the build screen, use the Environment section.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Get Started<\/h2>\n\n\n\n<p>Appflow custom environments and ad-hoc environments are now available for all Appflow plans. To leverage them for your mobile deployments, <a href=\"https:\/\/ionic.io\/signup?source=appflow&amp;product=appflow\">sign up for a free account today<\/a> and start building. If you have any questions about getting started, <a href=\"https:\/\/ionic.io\/contact\/sales\">our team is here to help<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Configuring and managing build environments is critical in mobile development, but keeping everything organized can feel like a job even Marie Kondo couldn\u2019t handle. Without build environments, ensuring you have the right tools in place to successfully build your app is cumbersome at best. One wrong configuration value and your build pipeline can come to [&hellip;]<\/p>\n","protected":false},"author":98,"featured_media":5103,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"1","publish_post_category":"20","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"561848","discourse_permalink":"http:\/\/forum.ionicframework.com\/t\/managing-build-environments-in-appflow\/232475","wpdc_publishing_response":"success","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,122],"tags":[128],"class_list":["post-5101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all","category-product","tag-appflow"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Managing build environments in Appflow - Ionic Blog<\/title>\n<meta name=\"description\" content=\"Managing build environments for your mobile deployments is easy in Appflow with custom environments, ad-hoc environments, and more.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Managing build environments in Appflow\" \/>\n<meta property=\"og:description\" content=\"Managing build environments for your mobile deployments is easy in Appflow with custom environments, ad-hoc environments, and more.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-06T17:37:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-06T17:37:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image-1024x512.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cecelia Martinez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ceceliacreates\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cecelia Martinez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\"},\"author\":{\"name\":\"Cecelia Martinez\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637\"},\"headline\":\"Managing build environments in Appflow\",\"datePublished\":\"2023-04-06T17:37:03+00:00\",\"dateModified\":\"2023-04-06T17:37:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\"},\"wordCount\":617,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png\",\"keywords\":[\"Appflow\"],\"articleSection\":[\"All\",\"Product\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\",\"url\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\",\"name\":\"Managing build environments in Appflow - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png\",\"datePublished\":\"2023-04-06T17:37:03+00:00\",\"dateModified\":\"2023-04-06T17:37:05+00:00\",\"description\":\"Managing build environments for your mobile deployments is easy in Appflow with custom environments, ad-hoc environments, and more.\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png\",\"width\":2240,\"height\":1120},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Managing build environments in Appflow\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637\",\"name\":\"Cecelia Martinez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg\",\"caption\":\"Cecelia Martinez\"},\"description\":\"Developer Advocate\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/ceceliamartinez\/\",\"https:\/\/x.com\/ceceliacreates\"],\"jobTitle\":\"Developer Advocate\",\"url\":\"https:\/\/ionic.io\/blog\/author\/cecelia\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Managing build environments in Appflow - Ionic Blog","description":"Managing build environments for your mobile deployments is easy in Appflow with custom environments, ad-hoc environments, and more.","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:\/\/ionic.io\/blog\/managing-build-environments-in-appflow","og_locale":"en_US","og_type":"article","og_title":"Managing build environments in Appflow","og_description":"Managing build environments for your mobile deployments is easy in Appflow with custom environments, ad-hoc environments, and more.","og_url":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow","og_site_name":"Ionic Blog","article_published_time":"2023-04-06T17:37:03+00:00","article_modified_time":"2023-04-06T17:37:05+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image-1024x512.png","type":"image\/png"}],"author":"Cecelia Martinez","twitter_card":"summary_large_image","twitter_creator":"@ceceliacreates","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Cecelia Martinez","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow"},"author":{"name":"Cecelia Martinez","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637"},"headline":"Managing build environments in Appflow","datePublished":"2023-04-06T17:37:03+00:00","dateModified":"2023-04-06T17:37:05+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow"},"wordCount":617,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png","keywords":["Appflow"],"articleSection":["All","Product"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow","url":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow","name":"Managing build environments in Appflow - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png","datePublished":"2023-04-06T17:37:03+00:00","dateModified":"2023-04-06T17:37:05+00:00","description":"Managing build environments for your mobile deployments is easy in Appflow with custom environments, ad-hoc environments, and more.","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png","width":2240,"height":1120},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/managing-build-environments-in-appflow#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Managing build environments in Appflow"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637","name":"Cecelia Martinez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg","caption":"Cecelia Martinez"},"description":"Developer Advocate","sameAs":["https:\/\/www.linkedin.com\/in\/ceceliamartinez\/","https:\/\/x.com\/ceceliacreates"],"jobTitle":"Developer Advocate","url":"https:\/\/ionic.io\/blog\/author\/cecelia"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/04\/buildenvs-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/5101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/98"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=5101"}],"version-history":[{"count":1,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/5101\/revisions"}],"predecessor-version":[{"id":5102,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/5101\/revisions\/5102"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/5103"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=5101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=5101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=5101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}