{"id":7287,"date":"2023-10-16T12:58:17","date_gmt":"2023-10-16T12:58:17","guid":{"rendered":"https:\/\/dianapps.com\/blog\/?p=7287"},"modified":"2023-10-16T12:58:17","modified_gmt":"2023-10-16T12:58:17","slug":"performance-tips-every-flutter-developer-should-know","status":"publish","type":"post","link":"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/","title":{"rendered":"Performance Tips Every Flutter Developer Should Know"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Flutter, the leading cross-platform app development framework, is experiencing rapid growth and offers developers extensive opportunities in <\/span><a href=\"https:\/\/dianapps.com\/mobile-app-development\"><b>mobile app development services<\/b><\/a><span style=\"font-weight: 400;\">. With this growth comes the responsibility of distinguishing valuable practices from less effective ones and determining the best approach for every situation.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Performance optimization holds major importance in programming, particularly within the context of Flutter app development. However, bringing out the best in your app can be a little complex but not impossible.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this article, we&#8217;ll explore some of the top practices for designing and <\/span><a href=\"https:\/\/dianapps.com\/blog\/why-should-you-choose-flutter-for-your-next-app-project\/\"><span style=\"font-weight: 400;\">developing your next project with Flutter<\/span><\/a><span style=\"font-weight: 400;\">, focusing on enhancing code quality, readability, maintainability, and productivity.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Let\u2019s get started!<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"10-Best-Practices-Every-Flutter-Developer\"><\/span><span style=\"font-weight: 400;\">10 Best Practices Every Flutter Developer<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1-Use-constant-widgets\"><\/span><span style=\"font-weight: 400;\">1. Use constant widgets<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Optimizing Flutter app performance involves some clever tricks, like using const constructors for widgets. This may seem minor, but it matters, especially in large apps or when frequently rebuilding views. Const declarations also play well with hot-reloading, making your mobile app development<\/span> <span style=\"font-weight: 400;\">process smoother. And remember, use the const keyword only when needed to keep things efficient. Consider the following code:<\/span><\/p>\n<pre class=\"height-set:true height:250 nums:false lang:default decode:true\">const Container(\r\n\r\n\u00a0\u00a0width: 100,\r\n\r\n\u00a0\u00a0child: const Text('Hello World')\r\n\r\n);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"2-Split-your-widgets-but-not-into-methods\"><\/span><span style=\"font-weight: 400;\">2. Split your widgets, but not into methods<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Breaking your widgets into smaller components is a smart way to keep your code organized and easy to read. However, it&#8217;s essential to do this correctly. Some people split widgets into methods and then call them, but that&#8217;s not the best practice. The issue with this approach is that when you refresh the main widget that calls all these smaller widgets (methods), it rebuilds all the widgets within those methods. This can significantly harm performance. To avoid this problem, it&#8217;s better to split your widgets into actual widgets (classes). This way, you can maintain code readability without sacrificing performance.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"3-Avoid-stateful-widgets-wherever-possible\"><\/span><span style=\"font-weight: 400;\">3. Avoid stateful widgets wherever possible<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Here&#8217;s a helpful tip, especially for beginners in Flutter app development. You might wonder why not always use StatefulWidget since it has all the features of StatelessWidgets and can be rebuilt. It&#8217;s true that StatefulWidget can rebuild itself, but this can come at the cost of decreased performance. So, the rule of thumb is to always use StatelessWidget and only resort to StatefulWidget when it&#8217;s absolutely necessary. This way, you can maintain better performance in your Flutter app development.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"4-Use-Good-State-Management\"><\/span><span style=\"font-weight: 400;\">4. Use Good State Management<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Effective state management is essential for optimal Flutter app performance. The choice of state management approach should align with your app&#8217;s complexity. In the case of small to medium-sized apps, the built-in setState method can often suffice. However, for larger and more intricate apps, it&#8217;s advisable to explore the use of specialized <\/span><a href=\"https:\/\/dianapps.com\/blog\/top-flutter-state-management-libraries\/\"><span style=\"font-weight: 400;\">state management libraries<\/span><\/a><span style=\"font-weight: 400;\"> such as Bloc or Riverpod. These tools can streamline the management of app states, ensuring smoother operation and enhanced performance.<\/span><\/p>\n<pre class=\"font-size:14 height-set:true height:250 nums:false lang:default decode:true\">\/\/ Bad Approach\r\n\r\nsetState(() {\r\n\r\n\u00a0\u00a0\/\/ Updating a large data structure unnecessarily\r\n\r\n\u00a0\u00a0myList.add(newItem);\r\n\r\n});\r\n\r\n\r\n\r\n\/\/ Better Approach\r\n\r\nfinal myListBloc = BlocProvider.of&lt;MyListBloc&gt;(context);\r\n\r\nmyListBloc.add(newItem);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"5-Have-a-well-defined-architecture\"><\/span><span style=\"font-weight: 400;\">5. Have a well-defined architecture<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Flutter app, being a declarative framework, boasts a relatively gentle learning curve in contrast to native frameworks for Android and iOS. It simplifies the learning process by utilizing a single language for both design and code. However, this convenience can accidentally lead to spaghetti code, a disorganized and conditionally driven code structure, if a well-defined architecture isn&#8217;t established.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">At least, we should have the following three layers:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To mitigate this, selecting a suitable architecture is imperative. The choice should align with the team&#8217;s familiarity and comfort. The Bloc library, for instance, presents a robust option, offering a wealth of well-structured examples, which can greatly enhance code organization and maintainability.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"6-Follow-an-effective-dart-style-guide\"><\/span><span style=\"font-weight: 400;\">6. Follow an effective dart-style guide<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Establishing a well-defined style guide is a valuable practice, as it promotes widely accepted coding conventions that contribute to elevated code quality. Consistency in style not only fosters teamwork but also eases collaboration with new Flutter app developers in the project. Over the long term, maintaining a consistent and uniform style proves beneficial for large-scale projects.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While crafting a custom style guide that aligns with the team&#8217;s preferences is an option, Dart provides an official style guide that can be adopted.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Additionally, incorporating a Linter into the project is highly advisable. This tool proves especially useful in larger teams where not everyone may be well-versed in the style guide or might occasionally overlook certain rules, ensuring that code quality remains consistent.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"7-Write-tests-for-critical-functionality\"><\/span><span style=\"font-weight: 400;\">7. Write tests for critical functionality<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Automated testing proves invaluable in saving the time and effort of a professional <\/span><a href=\"https:\/\/dianapps.com\/\"><b>mobile app development company<\/b><\/a> <span style=\"font-weight: 400;\">while developing Flutter apps for multiple platforms. Manual testing remains an option, but due to the broad platform coverage, it becomes impractical to thoroughly test every function after each change.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While achieving 100% code coverage in testing is an ideal goal, practical constraints, such as time and budget, may limit this. Nonetheless, it&#8217;s essential to prioritize critical functionality and ensure it has adequate test coverage.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Integration tests hold significance, enabling testing on physical devices or emulators.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A useful tip: Leverage Firebase Test Lab to execute tests across a range of devices, enhancing the app&#8217;s reliability and compatibility.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"8-Reduce-Image-Sizes\"><\/span><span style=\"font-weight: 400;\">8. Reduce Image Sizes<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Optimizing image files is crucial for maintaining your app&#8217;s performance, particularly when handling numerous images. To prevent performance slowdowns, employ image compression and resizing techniques to reduce file sizes while retaining acceptable quality.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For instance, if you possess a high-resolution image intended for display within a smaller app container, avoid utilizing the original high-res version. Instead, employ a library like flutter_image_compress to efficiently resize the image to your desired dimensions. This helps strike a balance between image quality and app performance.<\/span><\/p>\n<pre class=\"font-size:14 height-set:true height:250 nums:false lang:default decode:true \">import 'package:flutter_image_compress\/flutter_image_compress.dart';\r\n\r\n\/\/ Original image file\r\n\r\nvar imageFile = File('path\/to\/original\/image.png');\r\n\r\n\/\/ Get the image data\r\n\r\nvar imageBytes = await imageFile.readAsBytes();\r\n\r\n\/\/ Resize and compress the image\r\n\r\nvar compressedBytes = await FlutterImageCompress.compressWithList(\r\n\r\n\u00a0\u00a0imageBytes,\r\n\r\n\u00a0\u00a0minHeight: 200,\r\n\r\n\u00a0\u00a0minWidth: 200,\r\n\r\n\u00a0\u00a0quality: 85,\r\n\r\n);\r\n\r\n\/\/ Save the compressed image to a new file\r\n\r\nvar compressedImageFile = File('path\/to\/compressed\/image.png');\r\n\r\nawait compressedImageFile.writeAsBytes(compressedBytes);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"9-Select-packages-carefully\"><\/span><span style=\"font-weight: 400;\">9. Select packages carefully<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The Flutter community thrives on a supportive ecosystem that offers reusable code components known as packages. While there\u2019s always an urge to utilize <\/span><a href=\"https:\/\/dianapps.com\/blog\/top-10-flutter-packages-that-speed-up-your-app-development\/\"><span style=\"font-weight: 400;\">Flutter packages<\/span><\/a><span style=\"font-weight: 400;\"> for every function that exists, it&#8217;s essential to consider several factors before integrating any package:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Always check when the package was last updated. Avoid using outdated packages to ensure compatibility and security.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Assess the popularity of the package. More popular packages often come with better community support, making problem-solving easier.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Review the open issues in the package&#8217;s code repository. Identify any unresolved issues that might impact the functionality you intend to incorporate<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Consider how frequently the package receives updates. Frequent updates indicate responsiveness to the latest Dart features and bug fixes.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">If you only require a small portion of a package&#8217;s functionality, it may be more efficient to write or copy that specific code rather than depending on the entire package. This reduces unnecessary dependencies.<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"10-Use-Streams-only-when-needed\"><\/span><span style=\"font-weight: 400;\">10. Use Streams only when needed<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Streams are a powerful tool in mobile app development, but wielding this power responsibly is crucial for efficiency. Ineffectively implemented Streams can strain memory and CPU resources, and neglecting to close them may result in memory leaks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Furthermore, employing Streams for a single event can seem excessive. In such instances, it&#8217;s more judicious to opt for a Future. Streams are most valuable when managing multiple asynchronous events.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In cases where Streams might feel heavy-handed, consider adopting a lighter alternative like ChangeNotifier for creating responsive user interfaces. This choice can lead to more streamlined and efficient code.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Final-Thoughts\"><\/span><span style=\"font-weight: 400;\">Final Thoughts<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Enhancing your Flutter app&#8217;s performance is essential to providing a seamless user experience. By adopting these optimization tips and adhering to best practices in mobile app development, you&#8217;re not merely enhancing speed and fluidity, but you&#8217;re making the base for a better user journey that can distinguish your startup in a competitive landscape.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Of course, if you&#8217;re seeking expert teams to craft exceptional apps for your business and services, DianApps, a leading <\/span><a href=\"https:\/\/dianapps.com\/flutter-app-development\"><b>Flutter app development company<\/b><\/a><span style=\"font-weight: 400;\">, boasts developers who invest their time, expertise, and knowledge in the platform to deliver outstanding software solutions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Keep in mind that embarking on the path to high-performance Flutter app development commences with a performance-oriented mindset. Through consistent profiling and mindful coding, you&#8217;re well-equipped to create applications that blend exceptional aesthetics with optimal performance.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Flutter, the leading cross-platform app development framework, is experiencing rapid growth and offers developers extensive opportunities in mobile app development services. With this growth comes the responsibility of distinguishing valuable practices from less effective ones and determining the best approach for every situation. Performance optimization holds major importance in programming, particularly within the context of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7289,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_wp_applaud_exclude":false,"footnotes":""},"categories":[1],"tags":[58,124,59,83,62],"class_list":["post-7287","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-business","tag-flutter-app-development","tag-flutter-app-development-company","tag-flutter-app-development-services","tag-mobile-app-development","tag-mobile-app-development-services"],"featured_image_src":{"landsacpe":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2023\/10\/flutter-performance.png",791,445,false],"list":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2023\/10\/flutter-performance.png",463,260,false],"medium":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2023\/10\/flutter-performance.png",300,169,false],"full":["https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2023\/10\/flutter-performance.png",1536,864,false]},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.12 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Performance Tips Every Flutter Developer Should Know<\/title>\n<meta name=\"description\" content=\"Level up your Flutter app&#039;s performance with these best practices. These will help you develop the most efficient Flutter application.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Performance Tips Every Flutter Developer Should Know\" \/>\n<meta property=\"og:description\" content=\"Level up your Flutter app&#039;s performance with these best practices. These will help you develop the most efficient Flutter application.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/\" \/>\n<meta property=\"og:site_name\" content=\"Learn About Digital Transformation &amp; Development | DianApps Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-16T12:58:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2023\/10\/flutter-performance.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"864\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Vikash Soni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vikash Soni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Performance Tips Every Flutter Developer Should Know","description":"Level up your Flutter app's performance with these best practices. These will help you develop the most efficient Flutter application.","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:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/","og_locale":"en_US","og_type":"article","og_title":"Performance Tips Every Flutter Developer Should Know","og_description":"Level up your Flutter app's performance with these best practices. These will help you develop the most efficient Flutter application.","og_url":"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/","og_site_name":"Learn About Digital Transformation &amp; Development | DianApps Blog","article_published_time":"2023-10-16T12:58:17+00:00","og_image":[{"width":1536,"height":864,"url":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2023\/10\/flutter-performance.png","type":"image\/png"}],"author":"Vikash Soni","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Vikash Soni","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/","url":"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/","name":"Performance Tips Every Flutter Developer Should Know","isPartOf":{"@id":"https:\/\/dianapps.com\/blog\/#website"},"datePublished":"2023-10-16T12:58:17+00:00","dateModified":"2023-10-16T12:58:17+00:00","author":{"@id":"https:\/\/dianapps.com\/blog\/#\/schema\/person\/0126fafc83e42bece2acbfe92f7d0f4f"},"description":"Level up your Flutter app's performance with these best practices. These will help you develop the most efficient Flutter application.","breadcrumb":{"@id":"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dianapps.com\/blog\/performance-tips-every-flutter-developer-should-know\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dianapps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Performance Tips Every Flutter Developer Should Know"}]},{"@type":"WebSite","@id":"https:\/\/dianapps.com\/blog\/#website","url":"https:\/\/dianapps.com\/blog\/","name":"Learn About Digital Transformation &amp; Development | DianApps Blog","description":"Dianapps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dianapps.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/dianapps.com\/blog\/#\/schema\/person\/0126fafc83e42bece2acbfe92f7d0f4f","name":"Vikash Soni","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dianapps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2022\/07\/cropped-vikash-96x96.png","contentUrl":"https:\/\/dianapps.com\/blog\/wp-content\/uploads\/2022\/07\/cropped-vikash-96x96.png","caption":"Vikash Soni"},"description":"Vikash Soni, the visionary CEO and Co-founder of DianApps. With his profound expertise in Android and iOS app development, he leads the team to deliver top-notch solutions to clients worldwide. Under his guidance, the company has achieved remarkable success, earning a reputation as a leading web and mobile app development company.","sameAs":["https:\/\/www.linkedin.com\/in\/vikash-soni-59726530\/"],"url":"https:\/\/dianapps.com\/blog\/author\/infodianapps-com\/"}]}},"_links":{"self":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts\/7287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/comments?post=7287"}],"version-history":[{"count":2,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts\/7287\/revisions"}],"predecessor-version":[{"id":7291,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/posts\/7287\/revisions\/7291"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/media\/7289"}],"wp:attachment":[{"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/media?parent=7287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/categories?post=7287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dianapps.com\/blog\/wp-json\/wp\/v2\/tags?post=7287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}