<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anayo Samson Oleru</title>
    <description>The latest articles on DEV Community by Anayo Samson Oleru (@anayooleru).</description>
    <link>https://dev.to/anayooleru</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F154143%2Ff43a3962-141e-4a73-999d-995bdf7870b9.jpeg</url>
      <title>DEV Community: Anayo Samson Oleru</title>
      <link>https://dev.to/anayooleru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anayooleru"/>
    <language>en</language>
    <item>
      <title>Answer: Unable to load script from assets index.android.bundle on android - react-native</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Sat, 23 Nov 2024 17:23:10 +0000</pubDate>
      <link>https://dev.to/anayooleru/answer-unable-to-load-script-from-assets-indexandroidbundle-on-android-react-native-a21</link>
      <guid>https://dev.to/anayooleru/answer-unable-to-load-script-from-assets-indexandroidbundle-on-android-react-native-a21</guid>
      <description>&lt;p&gt;Run &lt;code&gt;react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or you can automate the above steps by placing them in scripts part of package.json like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res &amp;amp;&amp;amp; react-native run-android"&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to update version number of react native app for android and ios (Manual)</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Sat, 17 Aug 2024 18:15:00 +0000</pubDate>
      <link>https://dev.to/anayooleru/how-to-update-version-number-of-react-native-app-for-android-and-ios-manual-2cab</link>
      <guid>https://dev.to/anayooleru/how-to-update-version-number-of-react-native-app-for-android-and-ios-manual-2cab</guid>
      <description>&lt;h1&gt;
  
  
  Android
&lt;/h1&gt;

&lt;p&gt;You should be changing your versionCode and versionName in android/app/build.gradle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;&lt;span class="n"&gt;android&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="n"&gt;defaultConfig&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="n"&gt;versionCode&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;versionName&lt;/span&gt; &lt;span class="s2"&gt;"1.0"&lt;/span&gt;

        &lt;span class="o"&gt;{...}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="o"&gt;{...}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The versionCode has to be in an integer that is larger than the ones used for previous releases while versionName is the human-readable version, as it will be shown to users. So use something readable and understandable like what is the main purpose for the release.&lt;/p&gt;

&lt;h1&gt;
  
  
  iOS
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Using Xcode:
&lt;/h3&gt;

&lt;p&gt;You will need to change an iOS project's target target iOS version. XCode &amp;gt; Project Navigator &amp;gt; "General" tab &amp;gt; Deployment Info &amp;gt; Target.&lt;/p&gt;

&lt;p&gt;This can be either under Target or Identity section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using react-native code:
&lt;/h3&gt;

&lt;p&gt;Go to ios folder and then go to Podfile. At the top, you will find the ios version, there you can change it manually.&lt;/p&gt;

&lt;p&gt;If you found this helpful, please do leave me a star on my open-source project: Quicksi, &lt;a href="https://github.com/Quicksi-CLI/quicksiCLI" rel="noopener noreferrer"&gt;https://github.com/Quicksi-CLI/quicksiCLI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Like, share and you can follow me on Twitter(X), Instagram and LinkedIn, as I share a lot of helpful technical tips.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Interacting with AWS</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Thu, 17 Aug 2023 09:31:38 +0000</pubDate>
      <link>https://dev.to/anayooleru/interacting-with-aws-4a84</link>
      <guid>https://dev.to/anayooleru/interacting-with-aws-4a84</guid>
      <description>&lt;p&gt;You need an understanding of AWS, to fully understand this article. If you don't, please schedule a 1:1 session with me and I can help you fully understand Cloud computing such as types and benefit of cloud computing, cloud computing scenerios, traditional data centers and setting up an AWS account, AWS Global Infrastructure such as regions, availability zones, local and wavelength zones, Cloud Economics such as organizing and optimizing AWS Costs, Building a business case for the cloud and how to apply cloud economics. &lt;/p&gt;

&lt;p&gt;So please feel free to reach out to me.&lt;/p&gt;

&lt;p&gt;Today in this post we are going to look at methods of interacting with AWS, and when to use those methods with real life examples and scenerios.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Methods of interacting with AWS and when to use it&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At the time of writing this post, there are three different approaches when it comes to interacting with AWS:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. AWS Management Console&lt;/strong&gt;: When you set up your initial AWS account, you use this. This is leveraged on the browser to configure resources. It is a web(&lt;strong&gt;Figure 1&lt;/strong&gt;) and mobile app(&lt;strong&gt;Figure 2&lt;/strong&gt;) based interface that provides access to almost all the 150+ AWS services. All major browsers and operating system are supported. You can use and download the mobile version of AWS and also use it on your own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UEqvo7mZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/7b844eb8-7f45-4028-8f7b-2ce7f99f2ae1/" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UEqvo7mZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/7b844eb8-7f45-4028-8f7b-2ce7f99f2ae1/" alt="getting-started-with-aws-console-1.eae683ec738c3ae9e636a94932e54489354f9221.png" width="800" height="687"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F_coHwD1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/aa751a92-1746-4562-b313-ddd43735d1e7/" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F_coHwD1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/aa751a92-1746-4562-b313-ddd43735d1e7/" alt="iOS-1.84d038fd4a4a16f7e59ab35fa114904fb769951d.png" width="696" height="1506"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you need or want to test out AWS services for the first time, spin up a virtual server, maybe you are looking out on testing a new AWS service just announced, AWS console is a great method.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. AWS Command Line Interface (CLI)&lt;/strong&gt;: This allows you to access the same AWS resources, but this time from the command line on your machine as seen in &lt;strong&gt;Figure 3&lt;/strong&gt;, be it Windows, Mac, and Linux. Most of the everyday task that can be done in the Console, can be done in with the CLI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TDIqPxG7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/38b411fc-fedc-4f6d-a9d9-cbaf2cda3829/" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TDIqPxG7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/38b411fc-fedc-4f6d-a9d9-cbaf2cda3829/" alt="cli.png" width="800" height="655"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You use AWS CLI for repeated task that can be automated.Logging in AWS console in the browser to perform automated task can be cumbersome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. AWS Software Developer Kit (SDK):&lt;/strong&gt; If you want to leverage a program access to your AWS resources, the AWS SDK helps with that. AWS SDK gives you access to AWS resources from your program or application or code, and it is supported across a variety of languages such as Java, NodeJS, JavaScript(Browser) as seen in &lt;strong&gt;Figure 4&lt;/strong&gt;, .NET, Python, Go, Ruby, C++ and PHP. A very good thing about AWS SDK is that it if you want to automate many aspects of how you interact with AWS platform, AWS SDK is the best for it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W51hw_WQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/e96457e8-75ad-4b29-8c6f-2eba5ff45c69/" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W51hw_WQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ucarecdn.com/e96457e8-75ad-4b29-8c6f-2eba5ff45c69/" alt="Screenshot 2023-07-09 at 11.13.32 AM.png" width="800" height="464"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you wwant to enable AWS tasks automation within custom applications, then the SDK becomes a great choice for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Real life examples and scenerios&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To better understand when to use either of the AWS interaction approaches, let us look at 3 scenerios that will prompt you to choose which AWS resources you will use, take a pause and think about the problem, what approach to use and why that approach.&lt;br&gt;
But don't worry at the end I will tell you the answers to each Scenerio and why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenerio 1&lt;/strong&gt;&lt;br&gt;
Thomas' company wants to transition to AWS. They want to leverage Amazon RDS(Relational Database Service). Thomas wants to test out a single database service. &lt;/p&gt;

&lt;p&gt;What interaction approach will Thomas use for this use case?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenerio 2&lt;/strong&gt;&lt;br&gt;
Cooper's company is a startup. Her company helps farmers sell their produce to retail companies through a Web and mobile application. Cooper has a set of tasks she needs to run on AWS each day to generate reports.&lt;/p&gt;

&lt;p&gt;What interaction approach will Cooper use for this use case?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenerio 3&lt;/strong&gt;&lt;br&gt;
MeadCourt is a company that runs several production workloads in AWS. They have a new web application that manages digital assets for marketing. They need to automatically create a user account in Amazon Incognito on sign-up. They want this step to be seamlessly integrated into the web application.&lt;/p&gt;

&lt;p&gt;What interaction approach will MeadCourt use for this use case?&lt;/p&gt;

&lt;p&gt;Run through it and note down the answers and why you chose them instead of the others.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Answers Real life examples and scenerios&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this article, I have discussed the ways and approached you can interact with AWS, and the use cases. And we showed examples of when you would have to make the decision on which approach to use. Finally we will look at the answers to those use cases and why we chose the answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenerio 1 answer&lt;/strong&gt;&lt;br&gt;
Thomas' company wants to transition to AWS. They want to leverage Amazon RDS(Relational Database Service). Thomas wants to test out a single database service. &lt;/p&gt;

&lt;p&gt;What interaction approach will Thomas use for this use case?&lt;br&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; AWS Management Console&lt;br&gt;
&lt;strong&gt;Reason:&lt;/strong&gt; Thomas is transitioning into AWS, probably for the first time, and he wants to test out an AWS service before he uses it. He just wants to get in and use the service, he is not deploying anything to production yet. AWS Management Console gives him an interface to quickly startup an RDS and test it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenerio 2 answer&lt;/strong&gt;&lt;br&gt;
Cooper's company is a startup. Her company helps farmers sell their produce to retail companies through a Web and mobile application. Cooper has a set of tasks she needs to run on AWS each day to generate reports.&lt;/p&gt;

&lt;p&gt;What interaction approach will Cooper use for this use case?&lt;br&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; AWS SDK(best option) or AWS CLI(second option)&lt;br&gt;
&lt;strong&gt;Reason:&lt;/strong&gt; Copper wants to generate reports on a daily basis, it will be an automated tasks. And it would be great to run that automated task from the within application. It would be cumbersome to log in to AWS console each day to generate the reports, or open up the terminal to run AWS CLI each day to generate reports. She can write the &lt;/p&gt;

</description>
      <category>aws</category>
      <category>interaction</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Designing Versioning for your API</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Thu, 17 Aug 2023 09:24:55 +0000</pubDate>
      <link>https://dev.to/anayooleru/designing-versioning-for-your-api-na4</link>
      <guid>https://dev.to/anayooleru/designing-versioning-for-your-api-na4</guid>
      <description>&lt;p&gt;In this article, I am going to show you how to design versioning for your API. We will start by talking about why versioning is important for an API and then the strategies for versioning your API.&lt;/p&gt;

&lt;p&gt;First question you want to ask yourself is: Do I really need to version my API? This is something very important to think about, because once you publish your API, and once client have written against the API or users have started relying on that API, it is set on stone, you won't want to make changes that would break your client and you won't want to be in a position where when there is a new API change, you are always thinking about how to make those changes without breaking the client.&lt;/p&gt;

&lt;p&gt;But versioning can also be a overkill, if the API is only being used by your team. But if your API has internal or external customers, that has developers writing code using your API, that may not be just your small team then versioning your API is super important from the planning phase.&lt;/p&gt;

&lt;p&gt;Your API requirements will always change, no matter what you do, no matter how much you designed it. And when this happens, your API will have to change. Again, another reason to consider and learn how to version your API.&lt;br&gt;
The goal is to evolve your API without breaking existing client. What this doesn't mean is that, every time you release a product version that you're going to change your API. API versioning is different and harder than product versioning.The reason for this is that you need to support both old and new versions, side-by-side deployment of multiple versions, you will need an indication from clients about what version they want to use, and allow older code to make changes to allow them continue to use the API.&lt;br&gt;
And so planning for and designing versioning upfront, will make maintenance of your API easier in longer term.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Ways to version your API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are a lot of ways to version your API, with their own advantage and disadvantage. You should find the mechanism or way of doing version that makes the most sense to your organisation. And this is going to depend a bit on the requirements, remember you are serving your clients not yourself. Making versioning easy to use for your clients is way more important than making it way more easier on your development staff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Versioning in the URI path&lt;/strong&gt;&lt;br&gt;
This is the commonly used API versioning.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://anayooleru.com/api/v2/articles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can see in the example above that the &lt;strong&gt;'v2'&lt;/strong&gt; inside the path to my articles API is indicating the version of the API. The advantage of this, is that it makes it clear to the client which version they are using and where the version is handled. But the disadvantage, is that every time there is a version change, clients would have to change all the URIs and that can be a lot of repeated work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Versioning with Query String&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another versioning strategy is the query string versioning.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://anayooleru.com/api/articles?v=2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, like the example above we can add a query string that ask for a specific version of our API. The advantage of this is that we can have a default version that will always be used by our API when the version query string isn't supplied, and that can be the latest version or whatever default version we set. So it makes versioning optional. But the downside of this is clients can easily forget or missed that they need to set a version, what is the point of versioning if it isn't being used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Versioning with Headers&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/articles HTTP/1.1
Host: localhost:44388
Content-Type: application/json
X-Version: 2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, the X-Version header is used to specify the version of an API to be used. This approach offers some advantages similar to using query strings, but it separates versioning from the rest of the API. Instead of requiring changes in the actual API code, only the interceptor in the API client needs to add this version header. This decoupling allows for easier maintenance and updates to the API, as well as providing flexibility in managing different API versions. However, implementing this approach may require a more experienced developer who understands how to add headers and intercept API calls to include the required headers in their client code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Versioning with Accept Header&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/camps HTTP/1.1
Host: localhost:44388
Content-Type: application/json
Accept: application/json;version=2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the example, the Accept header is used to specify the desired version of the API. By including the version information in the Accept header, the client can indicate the specific version it expects in the response. This approach allows the server to send back the content with the corresponding version information, ensuring proper versioning throughout the communication.&lt;/p&gt;

&lt;p&gt;One advantage of using the Accept header for versioning is that it can provide a standardised way to handle versioning within the API. The Accept header is a well-known HTTP header that is widely supported. Additionally, it allows for flexibility in managing different versions of the API.&lt;/p&gt;

&lt;p&gt;However, implementing versioning through the Accept header may require a more experienced developer who understands how to manipulate headers and handle the versioning logic in the client code. It can be more sophisticated compared to other versioning approaches, but it offers the benefit of keeping the version information within the communication flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Versioning with Content Type&lt;/strong&gt;&lt;br&gt;
This is the most complex type of versioning to use, and can be very useful:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/camps HTTP/1.1
Host: localhost:44388
Content-Type: application/vnd.yourapp.article.v1+json
Accept: application/vnd.yourapp.article.v1+json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A custom Content type is used to indicate the specific version of the API being requested and the version expected in the response. This approach allows for granular versioning, where different parts of the application can be in different versions.&lt;/p&gt;

&lt;p&gt;Using custom &lt;strong&gt;Content Types&lt;/strong&gt; and &lt;strong&gt;Accept headers&lt;/strong&gt; for versioning can be particularly useful for long-lived applications. It allows for tracking the version of the content received from the API, rather than just the version of the API itself. This is beneficial when dealing with scenarios where data might be retrieved at one point and updated at a later time. The content and accept headers associated with the stored data can help identify the specific version of the content.&lt;/p&gt;

&lt;p&gt;However, it's important to note that implementing and maintaining this type of versioning can be more complex and requires a higher level of developer maturity. Handling different versions of the API and managing custom content types can involve additional complexities. Therefore, it is important to carefully consider the trade-offs and ensure that the benefits outweigh the added complexity for the specific use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What we have learned&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Versioning is critical:&lt;/strong&gt; For a mature, long lasting API, I have shown you that versioning your API is crucial at the very start of your design process.&lt;br&gt;
&lt;strong&gt;2. Decide on the which versioning scheme will fit your requirements:&lt;/strong&gt; I showed you some of the important versioning strategy out there. Find the one that fits best for both the team you have and along with the kind of customer requirements you have.&lt;br&gt;
&lt;strong&gt;3. Content-Type versioning:&lt;/strong&gt; One of the most complex versioning strategy but with long lasting API benefit. &lt;/p&gt;

</description>
      <category>apiversioning</category>
      <category>api</category>
      <category>backend</category>
      <category>endpoint</category>
    </item>
    <item>
      <title>2023 Industry Trends in Mobile Application User Interface</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Thu, 17 Aug 2023 08:59:00 +0000</pubDate>
      <link>https://dev.to/anayooleru/2023-industry-trends-in-mobile-application-user-interface-15h</link>
      <guid>https://dev.to/anayooleru/2023-industry-trends-in-mobile-application-user-interface-15h</guid>
      <description>&lt;p&gt;From 2021, the mobile application - talking about Android and iOS, industry has changed dramatically when it comes to user interface design. Instead of the most beautiful mobile application design, users today want the most useful application design. What this means for mobile app designers and developers is that we now prioritise useful app designs for sustainability. We now incorporate sustainable design principles into our work, creating apps that are both environmentally friendly and socially responsible. What are these industry trends, let us look into some of them below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Minimalism&lt;/strong&gt;: The very first and most important is Minimalism. Instead complicated multiple features on one mobile app screen, the trend towards simpler, cleaner interfaces continues, with many app designs focusing on using negative space and simple, intuitive layouts to guide users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personalisation&lt;/strong&gt;: Rather dumping on a Figma board design that looks like facebook, instagram, or just looks good, Mobile apps are becoming increasingly personalised, with designers using user data to tailor the user experience and deliver more relevant content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bold Typography:&lt;/strong&gt; This wasn't as important before and was pretty much ignored, but today typography has become an important element of mobile app design, with designers using bold, eye-catching fonts to grab users' attention and communicate important information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gesture-Based Navigation:&lt;/strong&gt; Too much touch is going away, time to upgrade. Due to larger screens and bezel-less designs becoming more common, gesture-based navigation is a trend in mobile app design UI. Gestures such as swipe, pinch, and pull can provide a more intuitive and natural user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dark Mode:&lt;/strong&gt; Yes, I know many times, this feature is left out of our M.V.P. But with the increasing popularity of OLED screens, dark mode has become a trend in mobile app design UI. Dark mode reduces eye strain, saves battery life, and provides a sleek and modern aesthetic. And should be considered part of the M.V.P.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Illustrations&lt;/strong&gt;:Instead hand-picking illustrations from a website used by thousands of others. Custom illustrations are becoming more popular in mobile app design, with designers creating unique and memorable illustrations that reflect the brand's personality and values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Haptic Feedback:&lt;/strong&gt; I know this one sounds weird. Haptic feedback involves using touch-based sensations to enhance the user experience. This trend is expected to become more prevalent in mobile app design, with designers incorporating haptic feedback to create a more immersive and engaging user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Micro-Interactions:&lt;/strong&gt; Micro-interactions are small animations or visual cues that provide feedback to the user. They can add a layer of fun and interactivity to the user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are some of the trends. There are many others, if you want to learn them. Send me an &lt;a href="//anayo_oleru@outlook.com"&gt;email&lt;/a&gt;. And I will list them all and guide  you on practical ways to apply them in your mobile app development or design.&lt;/p&gt;

&lt;p&gt;I hope this was helpful. Please leave a like if you found it helpful. See you soon, thank you.&lt;/p&gt;

</description>
      <category>mobiledevelopment</category>
      <category>design</category>
      <category>standards</category>
      <category>principles</category>
    </item>
    <item>
      <title>No Permission Handler Detected (IOS)</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Thu, 10 Mar 2022 06:22:56 +0000</pubDate>
      <link>https://dev.to/anayooleru/no-permission-handler-detected-ios-17a5</link>
      <guid>https://dev.to/anayooleru/no-permission-handler-detected-ios-17a5</guid>
      <description>&lt;p&gt;Simply go to node_modules --&amp;gt; react-native-permission --&amp;gt; RNPermissions.m&lt;/p&gt;

&lt;p&gt;In this file Search for "No permission handler detected"&lt;br&gt;
and comment this line "RCTLogError(@"%@", message)"&lt;/p&gt;

&lt;p&gt;then you're good to go, for now.&lt;/p&gt;

&lt;p&gt;If you found this helpful, please do leave me a star on my open-source project: Quicksi, &lt;a href="https://github.com/Quicksi-CLI/quicksiCLI" rel="noopener noreferrer"&gt;https://github.com/Quicksi-CLI/quicksiCLI&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>xcode</category>
      <category>permissionhandler</category>
    </item>
    <item>
      <title>Module.createRequire is not a function</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Fri, 31 Dec 2021 22:07:07 +0000</pubDate>
      <link>https://dev.to/anayooleru/modulecreaterequire-is-not-a-function-345a</link>
      <guid>https://dev.to/anayooleru/modulecreaterequire-is-not-a-function-345a</guid>
      <description>&lt;p&gt;&lt;em&gt;Anayo Debugging 2&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is one simpler issue, but the simplest bug can be the biggest at times, so I made sure I document it and can help anyone out there too.&lt;/p&gt;

&lt;h1&gt;
  
  
  Bug
&lt;/h1&gt;

&lt;p&gt;In my react project's root I have a GitLab-ci.yml file that automatically runs whenever I push a commit to the server. It triggers a notification to the runner I specified, and then it processes the series of tasks I specified.&lt;/p&gt;

&lt;p&gt;Which involves building and deploying.&lt;/p&gt;

&lt;p&gt;This is a legacy React project, and had long been updated. After upgrading the packages I git committed. Build built successfully but deployment failed. With the following error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2zgkx89i7undg7bpd0i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2zgkx89i7undg7bpd0i.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;I read through the error to understand what the problem really was, and I found it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

Module.createRequire is not a function


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;That was the only error that was reasonably clear indeed and meant something.&lt;/p&gt;

&lt;p&gt;So I Googled it, and I found out that it's an issue with Create React App, it's always on or looking for the latest, which means the Node engine version has to always be the latest and that includes my npm version, else some things might break.&lt;/p&gt;

&lt;p&gt;So in essence whatever machine running that project has to have Node &amp;gt;= 14.0.0 and npm &amp;gt;= 5.6&lt;/p&gt;

&lt;h1&gt;
  
  
  Fix
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;My GitLab-ci.yml contains a Docker image with a node version of 10.15.3, so there is a need to upgrade.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

image: giona69/node-10.15.3-aws-eb


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;And I temporarily replaced the docker image with the latest node.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

image: node:14.18.2


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Rebuilt Node-Sass&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I added &lt;br&gt;
&lt;code&gt;npm rebuild node-sass&lt;/code&gt; &lt;br&gt;
to the deploy script&lt;/p&gt;

&lt;p&gt;And Voila!! That fixed the issue. These weeks has been simple, this is the issues I have been experiencing.&lt;/p&gt;




&lt;p&gt;My name is Anayo Oleru, I specialise in Backend Development(NodeJS &amp;amp; ExpressJS), but I am experienced with Web frontend(ReactJS) and mobile(React-native). And I am open to offers in these fields.&lt;/p&gt;

&lt;p&gt;You can follow me on Twitter at &lt;a class="mentioned-user" href="https://dev.to/anayooleru"&gt;@anayooleru&lt;/a&gt; or send an email to: &lt;a href="mailto:anayo_oleru@outlook.com"&gt;anayo_oleru@outlook.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers and take care.&lt;/p&gt;

</description>
      <category>react</category>
      <category>gitlap</category>
      <category>deployment</category>
      <category>nodeversion</category>
    </item>
    <item>
      <title>java.lang.NoClassDefFoundError: &lt;clinit&gt; failed for class com.facebook.flipper.android.EventBase</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Wed, 29 Dec 2021 09:06:11 +0000</pubDate>
      <link>https://dev.to/anayooleru/anayo-debugging-1-javalangnoclassdeffounderror-failed-for-class-comfacebookflipperandroideventbase-3pm5</link>
      <guid>https://dev.to/anayooleru/anayo-debugging-1-javalangnoclassdeffounderror-failed-for-class-comfacebookflipperandroideventbase-3pm5</guid>
      <description>&lt;p&gt;&lt;em&gt;Anayo Debugging 1&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Bug
&lt;/h1&gt;

&lt;p&gt;Generating an Android build package(APK)from Android Studio builds successfully. But running the generated APK on a real device or device connected to Android Studio Crashes on launch and returns the following errors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;getWifiLinkLayerStats_1_3_Internal(l.973) failed {.code = ERROR_NOT_SUPPORTED, .description = }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/? E/studio.deploy: Could not get package user id: run-as: unknown package: com....
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/? E/studio.deploy: Could not find apks for this package: com....
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/? E/Finsky: [2] VerifyPerSourceInstallationConsentInstallTask.d(2): Package name null is not an installed package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/? E/installd: Couldn't opendir /data/app/vmdl1184715882.tmp: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/? E/installd: Failed to delete /data/app/vmdl1184715882.tmp: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
/? E/ssioncontrolle: Not starting debugger since process cannot load the jdwp agent.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
java.lang.NoClassDefFoundError: &amp;lt;clinit&amp;gt; failed for class com.facebook.flipper.android.EventBase; see exception in other thread
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I read through all, trying to understand each of them. But what stood out from these errors, and that has some sort of clarity is the last one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java.lang.NoClassDefFoundError: &amp;lt;clinit&amp;gt; failed for class com.facebook.flipper.android.EventBase; see exception in other thread
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I was a bit skeptical, because it's getting really difficult to justify Flipper, a debug tool shouldn't crash and block the development process.&lt;/p&gt;

&lt;h1&gt;
  
  
  How I solved it
&lt;/h1&gt;

&lt;p&gt;After several trial and error, I was able to arrive at a solution that worked. I had to re-think, this particular error happens when after I try running the generated APK and not when I was generating a build. And I looked at how the Android build process works, the compiler converts the source code into DEX(whatever the name is) files, which include byte code that runs on android devices. So this would mean that while compiling, there was possibly a mix of old and new source code(which is possible since there is no such thing as a perfect compiler), or if there isn't no issue, then there must be something wrong with the compiled files. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;What is the best way to resolve something like this? As any other way, deleting the build and starting afresh as a new build.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is what I did, and it worked.&lt;/p&gt;

&lt;p&gt;Here is what I did, the steps I took:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deleted android build file, you can find this file in: 
android&amp;gt;app inside app delete build folder&lt;/li&gt;
&lt;li&gt;Then I cleaned the gradlew:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd android &amp;amp;&amp;amp;./gradlew clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Next I rebuilt the application again&lt;/li&gt;
&lt;li&gt;Then I ran the APK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voila! It solved all the above issues. I hope this will help you and save you time, if you face similar error or the same error.&lt;/p&gt;

&lt;p&gt;If it helps you, like this post.&lt;/p&gt;




&lt;p&gt;My name is &lt;strong&gt;Anayo Oleru&lt;/strong&gt;, I specialise in Backend Development(NodeJS &amp;amp; ExpressJS), but I am experienced with Web frontend(ReactJS) and mobile(React-native). And I am open to offers in these fields.&lt;/p&gt;

&lt;p&gt;You can follow me on Twitter at &lt;a href="https://twitter.com/AnayoOleru"&gt;@AnayoOleru&lt;/a&gt; or send an email to: &lt;a href="mailto:anayo_oleru@outlook.com"&gt;anayo_oleru@outlook.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers and take care.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>androidstudio</category>
      <category>flipper</category>
      <category>unknownpackage</category>
    </item>
    <item>
      <title>Modifying an existing sequelize migration</title>
      <dc:creator>Anayo Samson Oleru</dc:creator>
      <pubDate>Tue, 12 May 2020 18:22:04 +0000</pubDate>
      <link>https://dev.to/anayooleru/modifying-an-existing-sequelize-migration-1mnn</link>
      <guid>https://dev.to/anayooleru/modifying-an-existing-sequelize-migration-1mnn</guid>
      <description>&lt;p&gt;If you've just started using sequelize and sequelize CLI in development, you definitely had frequent addition and deletions of columns. And yeah, all these times you directly modified the migrations file, dropped all migrations and re-ran migrations again, so that your changes will take effect.&lt;/p&gt;

&lt;p&gt;But I'm glad you're here because you realize that's wrong, or if you're just finding out for the first time, happy for you. In production, you can't just drop all database tables because you updated a migration. That'll be one big mess up, even though there are backups.&lt;/p&gt;

&lt;p&gt;Anyways in this article, I'll show you how to update the column, add a new column or columns, and delete an existing column from/in an existing migration.&lt;/p&gt;

&lt;p&gt;Here's something you should know and understand, it'll help when you have issues with sequelize modifications. But if you just want a quick solution you can skip this and move to the more meaty part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QueryInterface&lt;/strong&gt;: A migration is simply a set of instructions using the &lt;em&gt;queryInterface&lt;/em&gt; method, it's a middleman between you and your database, so there is you and there is the database, you create and customize your table yourself, now you want to load that table into the database, you tell &lt;em&gt;queryInterface&lt;/em&gt; to take the table you created and put it into the database, with the &lt;strong&gt;&lt;em&gt;createTable&lt;/em&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;Now we don't want to create a new table, we want to modify the existing table. &lt;em&gt;queryInterface&lt;/em&gt; is still your man, but it doesn't understand all commands, it has its own command it understands, so to communicate with it you have to use its own command, you can tell it to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;addColumn&lt;/strong&gt; if you want to add a new column or columns. This is a sequelize method &lt;em&gt;queryInterface&lt;/em&gt; uses, to add a new column to a table. It takes the column and the name of the table from you goes into the database, searches for the table name, and adds it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;changeColumn&lt;/strong&gt; if you want to change column, probably the datatype of a column. This is also a sequelize method &lt;em&gt;queryInterface&lt;/em&gt; uses, to alter a column. It takes the new adjustments you gave to it, the name of the table, and goes into the database, looks for the table and make the adjustment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;removeColumn&lt;/strong&gt; if you want to remove a column, probably if you find it unuseful. This is a sequelize method &lt;em&gt;queryInterface&lt;/em&gt; uses, to delete a column. It looks for the table and column and makes the action for you, you still have to provide the name of the table and then name of the column.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;createTable&lt;/strong&gt; if you are creating a whole new table entirely. I believe you may already be familiar with this. Without this one, I guess you can't add, change or remove a column.&lt;/p&gt;

&lt;p&gt;In essence, you have to give &lt;em&gt;queryInterface&lt;/em&gt; something to add, here's how you can do it. This is where we get down on it, we'll use a project to test.&lt;/p&gt;

&lt;p&gt;So if you don't have a project ready-up and you just want to learn this, I made a starter on &lt;code&gt;Quicksi&lt;/code&gt; you can easily use, everything is set up for you, check it up here: &lt;br&gt;
&lt;a href="https://quicksi-bot.now.sh/docs/en/Node-JS#node-js-pgsequelize"&gt;https://quicksi-bot.now.sh/docs/en/Node-JS#node-js-pgsequelize&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're using the starter, kindly follow the &lt;em&gt;how to get started&lt;/em&gt; to get the starter, then create a &lt;em&gt;.env&lt;/em&gt; file and add your database URL. Then create a new sequelize migration, that you can make modification on.&lt;/p&gt;

&lt;p&gt;(I). Updating a column&lt;br&gt;
Now let's update a column in the migration you have or created from the starter.&lt;/p&gt;

&lt;p&gt;So let's say we have a User table, with &lt;code&gt;firstname&lt;/code&gt;, &lt;code&gt;lastname&lt;/code&gt;, and &lt;code&gt;april&lt;/code&gt; columns. And we want to update the &lt;code&gt;april&lt;/code&gt; datatype from INTEGER to FLOAT, with an &lt;code&gt;allowNull&lt;/code&gt; key and a property of &lt;code&gt;false&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;User table before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;module.exports &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  up: &lt;span class="o"&gt;(&lt;/span&gt;queryInterface, Sequelize&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;queryInterface.createTable&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="nb"&gt;id&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
        allowNull: &lt;span class="nb"&gt;false&lt;/span&gt;,
        autoIncrement: &lt;span class="nb"&gt;true&lt;/span&gt;,
        primaryKey: &lt;span class="nb"&gt;true&lt;/span&gt;,
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.INTEGER
      &lt;span class="o"&gt;}&lt;/span&gt;,
      firstName: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.STRING
      &lt;span class="o"&gt;}&lt;/span&gt;,
      april: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.INTEGER
      &lt;span class="o"&gt;}&lt;/span&gt;,
      lastName: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.STRING
      &lt;span class="o"&gt;}&lt;/span&gt;,
      email: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.STRING
      &lt;span class="o"&gt;}&lt;/span&gt;,
      createdAt: &lt;span class="o"&gt;{&lt;/span&gt;
        allowNull: &lt;span class="nb"&gt;false&lt;/span&gt;,
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.DATE
      &lt;span class="o"&gt;}&lt;/span&gt;,
      updatedAt: &lt;span class="o"&gt;{&lt;/span&gt;
        allowNull: &lt;span class="nb"&gt;false&lt;/span&gt;,
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.DATE
      &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;,
  down: &lt;span class="o"&gt;(&lt;/span&gt;queryInterface, Sequelize&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;queryInterface.dropTable&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;queryInterface&lt;/em&gt; is waiting for you to give it the command, including what it should update and in what table it should it be done.&lt;/p&gt;

&lt;p&gt;To give  &lt;em&gt;queryInterface&lt;/em&gt; something, you need to create a new migration:&lt;/p&gt;

&lt;p&gt;Run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sequelize migration:create &lt;span class="nt"&gt;--name&lt;/span&gt; name_of_your_migration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new migration has been generated for you. Next edit the new migration created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;module.exports &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  up: &lt;span class="o"&gt;(&lt;/span&gt;queryInterface, Sequelize&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;Promise.all&lt;span class="o"&gt;([&lt;/span&gt;
      queryInterface.changeColumn&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;, &lt;span class="s1"&gt;'april'&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.FLOAT,
        allowNull: &lt;span class="nb"&gt;false&lt;/span&gt;
      &lt;span class="o"&gt;})&lt;/span&gt;,
    &lt;span class="o"&gt;])&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;,

  down: &lt;span class="o"&gt;(&lt;/span&gt;queryInterface&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;Promise.all&lt;span class="o"&gt;([&lt;/span&gt;queryInterface.changeColumn&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;, &lt;span class="s1"&gt;'april'&lt;/span&gt;&lt;span class="o"&gt;)])&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;,
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run the migration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sequelize db:migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's it! Notice we passed in the name of the table and the column in the table we want to update, &lt;em&gt;queryInterface&lt;/em&gt; takes this and does its job in the Database.&lt;/p&gt;

&lt;p&gt;(II). Deleting a column&lt;br&gt;
Let's delete the column you updated on the User table above.&lt;/p&gt;

&lt;p&gt;You need to create another migration file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sequelize migration:create &lt;span class="nt"&gt;--name&lt;/span&gt; name_of_your_migration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now edit the migration file and give it to &lt;em&gt;queryInterface&lt;/em&gt; with the &lt;code&gt;removeColumn&lt;/code&gt; method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;return &lt;/span&gt;queryInterface.removeColumn&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;, &lt;span class="s1"&gt;'april'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run migration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sequelize db:migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(III). Adding a new column&lt;br&gt;
Now let's add a new column in the user migration. Let's say we want to add another column called &lt;code&gt;June&lt;/code&gt;. Create another migration file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sequelize migration:create &lt;span class="nt"&gt;--name&lt;/span&gt; name_of_your_migration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now edit the migration file and give it to &lt;em&gt;queryInterface&lt;/em&gt; with the &lt;code&gt;addColumn&lt;/code&gt; method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;module.exports &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  up: &lt;span class="o"&gt;(&lt;/span&gt;queryInterface, Sequelize&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;Promise.all&lt;span class="o"&gt;([&lt;/span&gt;
      queryInterface.addColumn&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;, &lt;span class="s1"&gt;'june'&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;type&lt;/span&gt;: Sequelize.STRING,
        allowNull: &lt;span class="nb"&gt;true&lt;/span&gt;,
      &lt;span class="o"&gt;})&lt;/span&gt;,
    &lt;span class="o"&gt;])&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;,

  down: &lt;span class="o"&gt;(&lt;/span&gt;queryInterface&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;Promise.all&lt;span class="o"&gt;([&lt;/span&gt;queryInterface.removeColumn&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users'&lt;/span&gt;, &lt;span class="s1"&gt;'june'&lt;/span&gt;&lt;span class="o"&gt;)])&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;,
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't forget to update your models with your new changes.&lt;/p&gt;

&lt;p&gt;I do hope this explains sequelize modification methods clearer. &lt;br&gt;
Follow me on twitter: &lt;a class="mentioned-user" href="https://dev.to/anayooleru"&gt;@anayooleru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have a great day and stay safe.&lt;/p&gt;

</description>
      <category>sequelize</category>
      <category>postgres</category>
      <category>modifications</category>
      <category>sequelizecli</category>
    </item>
  </channel>
</rss>
