AWS Route 53 Domain Redirection(forwarding) from https://example.com to https://www.example.com using AWS S3 bucket

I recently encountered a requirement of domain forwarding for our website. We have our domain purchased in AWS route 53 but our website is designed and developed in zoho sites. We did proper CNAME mapping of our domain https://www.example.com in AWS Route53 and our domain https://www.example.com is all working fine.

However we encountered an issue that, when user try to load https://example.com our zoho site was not loading, to make it work we suppose to add domain redirection from https://example.com to https://www.example.com

To achieve domain redirection in AWS route 53, we can use AWS S3 bucket, the steps are given below.

Steps for Domain Redirection (Forwarding) using AWS S3 bucket

Step 1: Create a bucket in s3 -> bucket is nothing but one folder in aws s3 service and bucket name should be same as your domain name now we have to forward example.com to www.example.com so create bucket as example.com

AWS S3 bucket for Domain redirection
AWS S3 bucket for Domain redirection

Step 2: After creating bucket , go to properties section of that bucket

AWS S3 bucket properties
AWS S3 bucket properties

Step 3: under properties section, scroll down to the bottom and enable Static website hosting with below configurations. Choose redirect request option and provide hostname for which requests has to redirect in our case all requests coming to example.com should redirect to www.example.com, so provide host name as www.example.com.

AWS S3 Static hosting domain redirection
AWS S3 Static hosting domain redirection

Workflows in Jira – How to create workflows in Jira Step by Step guide

What is Jira?

     Jira is a software application developed by the Australian software company Atlassian that allows teams to track issues,manage projects, and automate workflows. 

What is the JIRA workflow?

         In JIRA, workflow is used to track the lifecycle of an Issue. Workflow is a record of statuses and transitions of an issue during its lifecycle. A status represents the stage of an issue at a particular point. An issue can be in only one status at a given point of time like Opened, To Do, Done, Closed, Assigned, etc.

A transition is a link between two statuses when an issue moves from one status to another. For an issue to move between two statuses, a transition must exist. In a simple way, a transition is some kind of work done on the issue, while status is the impact of work on that issue.

JIRA workflow has the following stages to track as soon as an issue is created −

Open issue- After creation, the issue is open and can be assigned to the assignee to start working on it.

In Progress Issue − The assignee has actively started to work on the issue.

Resolved Issue − All sub-tasks and works of that Issue are completed. Now, the issue is waiting to be verified by the reporter. If verification is successful, it will be closed or re-opened, if any further changes are required.

Reopened Issue − This issue was resolved previously, but the resolution was either incorrect or missed a few things or some modifications are required. From the Reopened stage, issues are marked either as assigned or resolved.

Close Issue- The issue is considered as finished, resolution is correct as of now. Closed issues can be re-opened later based on the requirement

JIRA Workflow can be referred to as a Defect Lifecycle. It follows the same concepts; the only difference is that it is generic for all issues rather than limited to Defects only.

The following diagram shows a standard workflow −

How to Create a New Workflow in Jira

  1. Open Jira.
    Jira Workflow Left Pane

     
  2. Click Issues, and then click Workflows.
    Jira Workflow Workflow Button
  3. To create a new workflow, click the Add workflow button.
  1. Type in a name and add a workflow description. The new workflow opens and is ready to edit.

5. Repeat step 4 to add as many states as you would like to add as per your company process.

6. After adding all the states, draw transitions between states.

How to Configure a New or Existing Workflow

You can add states and transitions to new or existing workflows. Keep in mind that some restrictions are placed on the editing of active workflows. You edit Jira workflows in the Workflow Designer, using either the Diagram or Text view.

Use the diagram format for an overview of your workflow as you build it. The text version expedites adding labels and descriptions to steps and transitions. For the purposes of this tutorial, we’ll work in the Diagram view. For more information on planning and creating a new workflow, see The Essential Guide to Jira Workflow Best Practices.

  1. Click Add status button to add your first status. Name your new status. Important: You can reuse an existing status found in active workflows, but any changes you make to it will affect other workflows. Click Add.
    INSERT WORKFLOWS NEWFLOW IMAGE
  2. Repeat the previous step to add the next step in the workflow. You can create all the steps at once and then add the transitions, or you can add transitions as you create each step. You can click and drag the step boxes to arrange them in a pattern that shows the logic of the workflow. Keep in mind that you should publish the finished diagram to your team so they can understand the workflow.
  3. To add a transition, click Add transition.
  4. Specify where you want the transition to go. Name it and click Add.
  5. When using a workflow, you may want to return a work item to a previous status. To do this, you must add an extra transition between steps. After you add all the statuses and transitions forward and back (where appropriate), your workflow should look something like this:
    INSERT JIRA WORKFLOW IMAGE

    Your new workflow appears on the Workflows page at the bottom in the Inactive list.

Delete a Step

You can delete a step only if it has no transitions.

Jira Workflow Delete Step
  • Click the Delete Step link.

Add a Transition Screen

If you need user input during a transition, you can display a screen on transition. Jira calls this a View screen.

  1. In your workflow, click the Edit button.
  2. In the Diagram, select the transition you want to change. Click the Edit button.
  3. Select a screen from the Screen box. Default Screen and Resolve Issue Screens show the complete form for the issue with all available fields. The Workflow Screen allows you to assign the work item to a user and add a comment. Click the Save button.
  4. Click Update.

Add a Trigger

  1. In your workflow, select the transition where you want to add a trigger. Click Edit.
  2. In the Workflow Editor, select the transition again. In the properties panel, click Triggers.
  3. Click Add Trigger.

    Jira Workflow Triggers
  4. Select the trigger type, and then click Next.

Add Conditions

  1. In your workflow, select the transition to which you want to add a condition.

    Jira Workflow Select Transition
  2. In the properties panel, click Conditions.

    Jira Workflow Properties Menu
  3. Click Add Condition.

    Jira Workflow Add Condition
  4. Select the condition you want from the list.

    Jira Workflow Conditions
  5. Click Add.

Add a Validator

  1. In your workflow, select the transition to which you want to add a validator.
  2. In the properties panel, click Validators.
  3. Click Add validator.
  4. Select the validator and click Add.

    Jira Workflow Validators

Customize and Apply a Post Function

  1. In your workflow, select the transition you want to edit.
  2. Click Post Functions. Click Add Post Function.

    Jira Workflow Add Post Function
  3. Select the function you want. Click Add.
  4. On the Add Parameters page, specify any new settings. Click Add.

  5. Click Add.

How to Activate the New Workflow

  1. Create a new project or open an existing project.
  2. Click Project Settings. Click Workflows.
  3. Click Add Workflow.

  4. Click Add Existing. Select the new workflow. Click Next.
  5. Click the types of issues you want to associate with the workflow.

  6. Click the Finish button.
  7. Click the Publish button.

    Jira Workflow Publish Workflow
  8. On the Publish Workflows page, you’ll be asked to associate the current status of each item with the new status. It’s OK if you have more new statuses than are available to map.
  9. When you’re done making the matches, click Associate. The issues are migrated to the new workflows. Click Acknowledge.
  10. Click Board Settings.

  11. Arrange the unmapped statuses. Create and rename new columns as needed. Learn more about Jira Kanban boards.

Importance of JIRA workflow?

Jira workflow is a critical aspect of effectively managing projects and tasks in an organization. It provides a systematic and structured approach to track and control the progress of work items from initiation to completion. Here are some key reasons highlighting the importance of Jira workflow:

  1. Process standardization: Jira workflows enable organizations to define and enforce standardized processes for handling different types of work items. By creating consistent steps and transitions, teams can ensure that tasks are executed in a consistent and predictable manner, leading to improved efficiency and reduced errors.
  2. Transparency and visibility: Jira workflows provide clear visibility into the status of work items at any given time. Team members can easily understand where a task stands in the workflow, who is responsible for its completion, and what steps are required next. This transparency fosters collaboration, enables better communication, and helps stakeholders make informed decisions.
  3. Accountability and ownership: With Jira workflows, it becomes clear who is responsible for each step in the process. Assigning specific statuses and actions to individuals or teams promotes accountability and ownership of tasks. This accountability ensures that work progresses smoothly and bottlenecks or delays can be addressed promptly.
  4. Efficient collaboration: Jira workflows facilitate collaboration between different teams and individuals involved in a project. Work items can be easily assigned, reassigned, or transitioned between different team members, ensuring smooth handoffs and preventing tasks from falling through the cracks. Collaboration features like comments, attachments, and notifications further enhance communication and coordination.
  5. Customizability and adaptability: Jira workflows are highly customizable to suit the unique needs of different projects or organizations. Workflow configurations can be tailored to reflect specific processes, approvals, and business rules. This flexibility allows teams to adapt and evolve their workflows as requirements change over time.
  6. Metrics and analytics: Jira workflows provide valuable data and metrics that can be used for performance analysis, process improvement, and decision-making. By tracking key performance indicators (KPIs) like cycle time, lead time, or bottlenecks, teams can identify areas for optimization, streamline processes, and improve overall efficiency.
  7. Integration with other tools: Jira integrates with a wide range of other software tools, such as development repositories, testing tools, and deployment systems. This integration allows for seamless data flow between different tools and provides a comprehensive view of the entire software development lifecycle. Work items can be linked to related code changes, test cases, and documentation, enabling end-to-end traceability.

Overall, Jira workflows play a crucial role in enhancing productivity, collaboration, and project management within an organization. They bring structure, clarity, and control to the work process, leading to improved efficiency, better team coordination, and successful project outcomes.

Posted by

Akshay Baratagi

Test Engineer

Software Development Life Cycle (SDLC) – Testing

Software Development Life Cycle – SDLC

What is software development life cycle?

SDLC or the Software Development Life Cycle is a process that produces software with the highest quality and lowest cost in the shortest time possible. SDLC provides a well-structured flow of phases that help an organization to quickly produce high-quality software which is well-tested and ready for production use.

Stage of Software Development Life Cycle (SDLC)

  1. Requirement analysis 
  2. Planning 
  3. Architectural design
  4.  Software development
  5. Testing
  6. Software deployment

Purpose of SDLC model

  • Lead to good software 
  • Reduce risk
  • Enable visibility and measurement
  • Enable teaming
  1. Requirement analysis
    In software engineering,requirements analysis focuses on the tasks that determine the needs for conditions to meet the new or altered product or project,taking account of the possibly conflicting requirements of the various stakeholders,analyzing, documenting,validating and managing software or system requirements.

Requirement analysis is critical to the success or failure of a system or software project.The requirements should be documented,actionable,measurable,testable,traceable,related to identified business needs or opportunities,and defined to a level of detail sufficient for system design.

2. Planning
Software manager is responsible for planning and scheduling project development. They manage the work to ensure that it is completed to the required standard. They monitor the progress to check that the event is on time and within budget. The project planning must incorporate the major issues like size and cost estimation scheduling, project monitoring, personnel selection evaluation and risk management. To plan a successful software project, we must understand.

  1. Scope of work to be completed
    2. Risk analysis
    3. The resources mandatory
    4. The project to be accomplished
    5. Record of being followed

Software project planning starts before technical work start.The various steps of planning activities are

3. Architectural Designing

 The design phase starts after requirement analysis and planning of the product. The main purpose of this phase is to design a suitable structure based on the SRS (Software requirement specification) the software architecture is derived from the SRS document. The architecture engineers design the software based on the SRS documentation.

4) Software development

 This phase is the actual implementation phase. After the completion of designing then developers write the code as per the requirements. Developers must follow the coding guidelines of their organization. Different high level languages are there for coding like java, python, c, c++ etc. Selection of language depends on the type of the software.

5)Testing

 After successful completion of coding it is checked whether the software is working as per the requirements or not.It make sure that the product is working as per the requirements.The testers expect to find any bugs are present in software before delivery to the client.This phase goes through different levels of functional and non-functional testing. 

6) Maintenance

After the final handover of the software, some up-gradation or changes are required from time to time to make it work flawlessly. If users face any issues with the software, it is resolved by the maintenance team.

How the SDLC Works

SDLC works by lowering the cost of software development while simultaneously improving quality and shortening production time. SDLC achieves these apparently divergent goals by following a plan that removes the typical pitfalls of software development projects. That plan starts by evaluating existing systems for deficiencies.

Next, it defines the requirements of the new system. It then creates the software through the stages of analysis, planning, design, development, testing, and deployment. By anticipating costly mistakes like failing to ask the end-user or client for feedback, SLDC can eliminate redundant rework and after-the-fact fixes.

It’s also important to know that there is a strong focus on the testing phase. As the SDLC is a repetitive methodology, you have to ensure code quality at every cycle. Many organizations tend to spend little effort on testing while a stronger focus on testing can save them a lot of rework, time, and money. Be smart and write the right types of tests.

How can DevSecOps be integrated into SDLC?

By following some best practices, DevSecOps can be integrated into SDLC in various ways.

  • Planning and Requirement Analysis: Here, security requirements and appropriate security choices that can mitigate potential threats and vulnerabilities are identified in this stage. What security design principles and best practices to be used are also thought about here.
  • Architectural Design: The development team uses the security design principle and architecture to consider potential risks. This stage involves threat modeling, access control, encryption mechanism, and architecture risk analysis.
  • Software Development and Testing: The code reviews are done to ensure software follows code standards and security controls are implemented. Security vulnerability tests like penetration testing are also done to identify potential issues.
  • Deployment: Automated DevSecOps tools are used to improve application security. To ensure the software is deployed securely, firewalls, access controls, and security settings are configured.
  • Maintenance: Security continues after deployment. The team must continuously monitor the software for security vulnerabilities. The team would also update the software with security patches and updates as necessary.

Posted by

Akshay Baratagi

Test Engineer

React-native linking error while upgrading @react-native-firebase/app for use_frameworks podfile configuration

While upgrading react-native-firebase from version 5.x to latest version 17.x, there are some breaking changes done, we have to follow firebase documentation to upgrade to latest version.

While upgrading getting linking errors after following firebase configuration steps given in their documentation

Error: react native fbsdk Showing Recent Messages Undefined symbol: OBJC_CLASS$_RCTComponentEvent

Basically this error is coming because of changes done in podfile as given in firebase documentation a specific step mentioned as Altering CocoaPods to use frameworks

in this step it was mentioned that, Beginning with firebase-ios-sdk v9+ (react-native-firebase v15+) you must tell CocoaPods to use frameworks. Open the file ./ios/Podfile and add this line inside your targets:

use_frameworks!

but by doing above changes, it start affecting to many other libraries and started getting errors mentioned above.

Fix for the linking error

remove use_frameworks! from podfile targets section, instead add below lines in your pod file before your target in pod file

pod 'Firebase', :modular_headers => true
pod 'FirebaseCoreInternal', :modular_headers => true
pod 'GoogleUtilities', :modular_headers => true

Basically we are setting modular headers only for firebase not for all solutions is given in this stack over flow post

yarn install does not create node_modules folder

when I upgraded yarn to latest version 3.4.1, I started facing strange issue in my react-native app. when i run yarn install, it does not throw any error but it ends with lots of warnings and does not create node_module folder

yarn recently introduced alternative installation strategy unveiled in September 2018, which is called as PnP which is nothing but ” Plug’n’Play “, because of this i started facing an issue, yarn install was not creating node_modules folder

yarn install node_modules folder not created – Yarn v3.0.2 Why do not install the node_modules folder

solution to this is in your project main directory, create a file “.yarnrc.yml” and add below line in that file

nodeLinker: node-modules

know more about yarn PnP here and the solution i have mentioned here is also described in this documentation page.

react-native version upgrade – Error: index.js: Cannot find module ‘babel-plugin-r’ React Native

after upgrading react-native-reanimated to latest version, I received babel error as follows

Error: index.js: Cannot find module 'babel-plugin-r' React Native

Solution for Error: index.js: Cannot find module ‘babel-plugin-r’ React Native

1. add below line of code in your babel.config.js file

plugins: [
    [
      '@babel/plugin-transform-runtime',
      {
          absoluteRuntime: false,
          corejs: false,
          helpers: true,
          regenerator: true,
          version: '7.0.0-beta.0',
      },
  ],
    'react-native-reanimated/plugin',
  ],

2. install below packages as dev dependencies

"@babel/core": "7.20.12",
"@babel/plugin-transform-runtime": "7.19.6",
"@babel/preset-env": "7.20.2",
"@babel/runtime": "7.20.13",

React-native migrating react-navigation from version 3.x.x to 6.x.x

While i started upgrading react-native from version 0.59.9 to 0.71.2 there were lot of drastic changes done across many libraries. react-navigation is one such which has some serious drastic changes.

Typical error we get while upgrading is

creating a navigator doesn’t take an argument maybe you are trying to use react navigation api 4

solution to this is

Using react-navigations as given in their documentation. the old code looks as follows for Stack Navigator

const Drawer = createStackNavigator({
MainNav: { screen: MainNav }
});

however the usage is changed now, all navigator functions now doesn’t require an argument , the changed code looks as follows

const DrawerStack = createStackNavigator();
function Drawer() {
  return (
    <DrawerStack.Navigator>
      <DrawerStack.Screen name="MainNav" component={MainNav} />
    </DrawerStack.Navigator>
  );
}

createDrawerNavigator code is also changed in version 6.x

old code looks as follows

const AppNavigator = createAppContainer(createDrawerNavigator({
  Drawer: { screen: Drawer }
},
  {
    drawerPosition: 'right',
    contentOptions: {
      activeTintColor: '#e91e63'
    },
    contentComponent: props => <SideBar {...props} />
  }));

changed createDrawerNavigator looks as follows

const DrawerNavigator = createDrawerNavigator();
const AppNavigator = () => {
  return (
    <DrawerNavigator.Navigator
      drawerPosition='right'
      tabBarActiveTintColor='#e91e63'
      drawerContent={props => <SideBar {...props} />}
    >
      <DrawerNavigator.Screen name="Drawer" component={Drawer} />
    </DrawerNavigator.Navigator>
  );
}

similarly all navigator functions like createBottomTabNavigator, NavigationContainer are updated follow latest version documentation

Upgrading react-native from version 0.59.9 to 0.71.2 build errors could not find compatible versions for pod “GTMSessionFetcher/Core”

While upgrading react-native from version 0.59.9 to 0.71.2, I am facing multiple build errors, no surprise that there is drastic changes happened from 0.59.9 to 0.71.2.

Error : CocoaPods could not find compatible versions for pod “GTMSessionFetcher/Core”

[!] CocoaPods could not find compatible versions for pod “GTMSessionFetcher/Core”:
In Podfile:
RNFBAuth (from ../node_modules/@react-native-firebase/auth) was resolved to 17.0.0, which depends on
Firebase/Auth (= 10.4.0) was resolved to 10.4.0, which depends on
FirebaseAuth (~> 10.4.0) was resolved to 10.4.0, which depends on
GTMSessionFetcher/Core (< 4.0, >= 2.1)

RNGoogleSignin (from `../node_modules/react-native-google-signin`) was resolved to 2.1.1, which depends on
  GoogleSignIn (~> 5.0.0) was resolved to 5.0.2, which depends on
    GTMSessionFetcher/Core (~> 1.1)

[!] Do not use “pod install” from inside Rosetta2 (x86_64 emulation on arm64).

[!] – Emulated x86_64 is slower than native arm64

[!] – May result in mixed architectures in rubygems (eg: ffi_c.bundle files may be x86_64 with an arm64 interpreter)

[!] Run “env /usr/bin/arch -arm64 /bin/bash –login” then try again.

Solution (fix) for CocoaPods could not find compatible versions for pod “GTMSessionFetcher/Core”

add below line on top of your pod file, this should be first line of your pod file

$FirebaseSDKVersion = ‘9.6.0’

Reference: thanks to Stackoverflow post

Upgrading react-native from version 0.59.9 to 0.71.2 build errors The Swift pod `FirebaseCoreInternal` depends upon `GoogleUtilities`Upgrading react-native from version 0.59.9 to 0.71.2 build errors

While upgrading react-native from version 0.59.9 to 0.71.2, I am facing multiple build errors, no surprise that there is drastic changes happened from 0.59.9 to 0.71.2.

Error

[!] The following Swift pods cannot yet be integrated as static libraries:

The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set use_modular_headers! globally in your Podfile, or specify :modular_headers => true for particular dependencies.

Solution (fix) error for FirebaseCoreInternal depends on GoogleUtilities

Add below lines in your pod file

platform :ios, min_ios_version_supported
….

pod ‘Firebase’, :modular_headers => true
pod ‘FirebaseCoreInternal’, :modular_headers => true
pod ‘GoogleUtilities’, :modular_headers => true


Reference- thanks to stackoverflow post

ReactNative – iOS Xcode 14 + MacOS X Ventura – build errors Duplicate Symbols for Architecture arm64

Building ReactNative Apps is always little hard when there is an Operating System Update along with that Xcode updated. Every time when Xcode is updated to a newer version, Apple make some changes which will start affecting iOS app build in ReactNative.

ReactNative iOS App build errors with Xcode 14 and Mac OS X Ventura

Recently when I updated Mac OS X Ventura, It also forced me to update Xcode to latest version 14. After Xcode update, my ReactNative App started failing with lots of errors. I have ReactNative app which is using RN version v0.59.9, Xcode started throwing linking errors like

42 Duplicate symbols for architecture arm64

the complete error looks as follows

duplicate symbol '_OBJC_CLASS_$_FBSDKBase64' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKBase64.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKBase64.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKBase64' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKBase64.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKBase64.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKBasicUtility' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKBasicUtility.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKBasicUtility.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKBasicUtility' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKBasicUtility.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKBasicUtility.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKCrashHandler' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKCrashHandler.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKCrashHandler.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKCrashHandler' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKCrashHandler.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKCrashHandler.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKLibAnalyzer' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKLibAnalyzer.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKLibAnalyzer.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKLibAnalyzer' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKLibAnalyzer.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKLibAnalyzer.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKTypeUtility' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKTypeUtility.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKTypeUtility.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKTypeUtility' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKTypeUtility.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKTypeUtility.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSession._session' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSession.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSession.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKURLSession' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSession.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSession.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKURLSession' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSession.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSession.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSession._delegateQueue' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSession.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSession.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSession._delegate' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSession.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSession.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSessionTask._handler' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSessionTask._loggerSerialNumber' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSessionTask._task' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKURLSessionTask' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKURLSessionTask' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSessionTask._requestStartDate' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_OBJC_IVAR_$_FBSDKURLSessionTask._requestStartTime' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKURLSessionTask.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKURLSessionTask.o)
duplicate symbol '_FBSDKAppEventCity' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventCountry' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventGender' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventZip' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventEmail' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventDateOfBirth' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventState' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_OBJC_CLASS_$_FBSDKUserDataStore' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKUserDataStore.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_OBJC_METACLASS_$_FBSDKUserDataStore' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKUserDataStore.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventPhone' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventFirstName' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
duplicate symbol '_FBSDKAppEventLastName' in:
    /Users/xyz/Library/Developer/Xcode/DerivedData/MyProject-bmkdjxadfihkgxdpmjllovjakstn/Build/Products/Release-iphoneos/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKAppEvents.o)
    /Users/xyz/MyComputer/Development/MyProject/SourceCode/MyBranches/saz_mobile/mobile_rn_dev/sazappmobile/MyProject/ios/Pods/FacebookSDK/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics(FBSDKUserDataStore.o)
ld: 42 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

When I started looking for solution, I found multiple solutions, which actually worked for many people, however for me none of those solutions worked.

Solution for Duplicate Symbols for architecture arm64 – which worked for me

Steps to resolve

  1. Open your project in Xcode
  2. Click on Pods project from your project navigator as shown in below diagram
    then select Build Phases and select the project target in which you are getting errors. For me all linking errors were for FBSDKCore, you can find that by seeing the error.

  3. Then from error get the file name for which you are getting duplicate symbol. for example if error has
    duplicate symbol ‘_FBSDKAppEventLastName’ in: /libFBSDKCoreKit.a(FBSDKAppEvents.o)
    Then find file FBSDKAppEvents.m from the search box given in above screenshot.
  4. Find the file and select the file and delete by clicking on delete(-) icon in the Xcode. ( refer below screenshot)
  5. Since in my case there are 42 linking errors, all the errors are coming from more than 4 to 5 different files. I deleted all the files one by one.
  6. This resolved all 42 linking error.

Basically the error appears when same implementation is referenced more than one in the project. Which mean in my case some of the .m files from FBSDKCoreKit are added more than once, it is difficult to find how those files added twice, but usually it happens when libraries are linked through pods as well as manually ( typically in old projects libraries might have also linked using ReactNative link command)

Now question is why Xcode 14 started giving errors? which was not the case earlier with lower version of Xcodes ? this is basically because the latest Xcode checks strictly many things and it starts complaining.

Is it the only solution which fix this issue ? well that I am not sure, there are many more solutions giving in StackOverflow as well as GitHub, some fixes might work for you. Here are those references for you, in case my fix doesn’t work for you 🙂

References:

1. Github Post- duplicate symbols for architecture x86_64 React Ntaive version 0.64 #32016

2. Github Post – duplicate symbols for architecture x86_64 React Ntaive

3. Stack over flow post – Duplicate Symbols for Architecture arm64