{"id":2702,"date":"2025-03-03T18:59:28","date_gmt":"2025-03-03T17:59:28","guid":{"rendered":"https:\/\/uniquedevs.com\/blog\/jak-zaczac-projekt-w-react-native-expo-czy-react-native-cli\/"},"modified":"2025-03-05T16:23:24","modified_gmt":"2025-03-05T15:23:24","slug":"how-to-start-a-project-in-react-native-expo-or-react-native-cli","status":"publish","type":"post","link":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/","title":{"rendered":"How to start a project in React Native &#8211; Expo or React Native CLI?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Expo \u2013 definition and use<\/h2>\n\n\n\n<p>Expo is an open-source platform and framework based on&nbsp;<a href=\"https:\/\/uniquedevs.com\/en\/blog\/what-is-react-native\/\">React Native<\/a>, designed to simplify the creation of mobile applications. You can think of it as the web equivalent of&nbsp;<em>Create React App<\/em>, but for mobile applications. Expo builds the basic structure of the project for you, so you don&#8217;t have to dive straight into native configurations. Expo provides a so-called<strong>&nbsp;<\/strong>managed workflow, where many aspects of native configuration are handled automatically by Expo tools.<\/p>\n\n\n\n<p>In practice, Expo consists of several elements. The main one is Expo CLI &#8211; a command line tool that you use to create and manage an Expo project. Another important element is Expo Go &#8211; a mobile application available on Google Play and the App Store that allows you to run and test the application you are creating without the need to build a native APK\/IPA file. All you have to do is scan the QR code generated by Expo CLI to see your application on your phone in seconds. Expo also offers services such as EAS (Expo Application Services), including EAS Build for building applications in the cloud and EAS Update for deploying updates over-the-air.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Advantages of Expo:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Low entry threshold<\/strong>&nbsp;\u2013 Expo is beginner-friendly and allows you to start working with React Native quickly.<\/li>\n\n\n\n<li><strong>Simple configuration<\/strong>&nbsp;\u2013 you don&#8217;t need to install Android Studio or Xcode to create an application. All you need is Node.js and Expo CLI.<\/li>\n\n\n\n<li><strong>A wide range of ready-made modules (Expo SDK)<\/strong>&nbsp;\u2013 you have immediate access to APIs such as camera, push notifications, location, accelerometer and others.<\/li>\n\n\n\n<li><strong>Rapid prototyping<\/strong>&nbsp;\u2013 you can focus on writing JavaScript\/React code instead of complicated native configuration.<\/li>\n\n\n\n<li><strong>Easy testing on devices<\/strong>&nbsp;\u2013 you can launch the application in no time thanks to Expo Go, without the need to build APK\/IPA files.<\/li>\n\n\n\n<li><strong>Automatic refresh (Fast Refresh)<\/strong>&nbsp;\u2013 changes in the code are immediately visible on the phone\/emulator, which speeds up development.<\/li>\n\n\n\n<li><strong>Support for OTA updates<\/strong>&nbsp;\u2013 thanks to Expo, you can update the application over-the-air without having to republish it in the stores.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Disadvantages of Expo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Limited access to native modules<\/strong>&nbsp;\u2013 you do not have full control over native code in a managed workflow. Some libraries are not available in the standard Expo SDK.<\/li>\n\n\n\n<li><strong>No support for all native libraries<\/strong>&nbsp;\u2013 if your application requires specific native libraries that are not integrated with Expo, you may encounter difficulties.<\/li>\n\n\n\n<li><strong>Less flexibility<\/strong>&nbsp;\u2013 Expo has introduced&nbsp;<em>config plugins<\/em>&nbsp;and&nbsp;<em>development builds<\/em>, but using them involves additional configuration steps, and in some cases it may be necessary to switch to a bare workflow.<\/li>\n\n\n\n<li><strong>Larger app size<\/strong>&nbsp;\u2013 apps built in Expo tend to be larger than the same apps built in pure React Native because they contain code for unused Expo modules.<\/li>\n\n\n\n<li><strong>Potential impact on performance<\/strong>&nbsp;\u2013 a heavier app can result in slightly worse performance on older devices.<\/li>\n\n\n\n<li><strong>Different process of building a production app<\/strong>&nbsp;\u2013 you cannot use standard commands such as&nbsp;<code>gradlew assembleRelease<\/code>&nbsp;or&nbsp;<code>Xcode Archive<\/code>. Expo requires the use of the&nbsp;<strong>EAS Build<\/strong>&nbsp;service.<\/li>\n\n\n\n<li><strong>Costs of EAS Build<\/strong>&nbsp;\u2013 the free version allows a limited number of builds per month. The paid version can generate additional costs (from ~$1 to $4 per single build).<\/li>\n\n\n\n<li><strong>Local building requires additional steps<\/strong>&nbsp;\u2013 you can build the application locally (<code>eas build --local<\/code>), but then you lose some of the simplifications offered by Expo and the configuration becomes more similar to React Native CLI.<\/li>\n<\/ul>\n\n\n                        <div class=\"contact-banner boxes\" >\n                <div class=\"contact-banner__image\">\n                    <img decoding=\"async\" src=\"https:\/\/uniquedevs.com\/wp-content\/themes\/uniquedevs\/assets\/images\/boxes.webp\" alt=\"Looking for a mobile app contractor?\">\n                <\/div>\n                <div class=\"contact-banner__image-mobile\">\n                    <img decoding=\"async\" src=\"https:\/\/uniquedevs.com\/wp-content\/themes\/uniquedevs\/assets\/images\/boxes-mobile.webp\" alt=\"Looking for a mobile app contractor?\">\n                <\/div>\n                <div class=\"contact-banner__wprapper\">\n                                            <div class=\"contact-banner__wrapper-title\">\n                            Looking for a mobile app contractor?                        <\/div>\n                                                                                            <a href=\"https:\/\/uniquedevs.com\/en\/contact\/\" class=\"contact-banner__wrapper-btn\" >\n                                Contact us!                            <\/a>\n                                                            <\/div>\n            <\/div>\n            \n\n\n<h2 class=\"wp-block-heading\">React Native CLI \u2013 definition and use<\/h2>\n\n\n\n<p>React Native CLI is a traditional approach to React Native app development, using the React Native command line (<code>react-native<\/code>) and manual configuration of the native environment. It is often referred to as a bare workflow to distinguish it from the Expo-managed workflow. When you initialize a project with the React Native CLI, you get a complete native Xcode project for iOS and an Android project (Gradle) for Android. This gives you full control over the native code of your app \u2013 you can modify the configuration of the native project, add your own Objective-C\/Swift or Java\/Kotlin files, and install any native libraries. In other words, the React Native CLI&nbsp;<em>does not abstract<\/em>&nbsp;the native layer from you, which on the one hand ensures maximum flexibility, and on the other hand requires more knowledge and work during configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Advantages of React Native CLI:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Full control over native<\/strong>&nbsp;code \u2013 you can modify Android and iOS files without the limitations imposed by Expo.<\/li>\n\n\n\n<li><strong>No restrictions on the use of native<\/strong>&nbsp;libraries \u2013 you can use any&nbsp;<em>native modules<\/em>&nbsp;libraries, even those that are not supported by Expo SDK.<\/li>\n\n\n\n<li><strong>Ability to create your own native modules<\/strong>&nbsp;\u2013 if standard solutions are not enough, you can write code in Java\/Kotlin (Android) or Objective-C\/Swift (iOS).<\/li>\n\n\n\n<li><strong>Better performance optimization<\/strong>&nbsp;\u2013 you have access to advanced build settings, e.g. Gradle and Xcode, which allows for better application optimization.<\/li>\n\n\n\n<li><strong>Smaller app size<\/strong>&nbsp;\u2013 only the code and libraries that are actually used end up in the project, resulting in smaller installation files and better performance.<\/li>\n\n\n\n<li><strong>Flexibility in app building<\/strong>&nbsp;\u2013 you can manually control the compilation processes (<code>gradlew assembleRelease<\/code>,&nbsp;<code>Xcode Archive<\/code>) without having to use cloud services.<\/li>\n\n\n\n<li><strong>Easier integration with existing native<\/strong>&nbsp;apps \u2013 if you want to add React Native to an existing iOS\/Android app, the CLI gives you complete freedom in integration.<\/li>\n\n\n\n<li><strong>Popularity in the business environment<\/strong>&nbsp;\u2013 large production applications are more likely to choose React Native CLI because it allows the project to be customized to meet non-standard customer requirements.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Disadvantages of React Native CLI:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Complex initial setup<\/strong>&nbsp;\u2013 requires manual installation and configuration of the environment, including: Node.js, JDK (Java Development Kit) for Android, Android Studio (including Android SDK and emulators), Xcode (on macOS) and CocoaPods to handle iOS dependencies.<\/li>\n\n\n\n<li><strong>Long setup time<\/strong>&nbsp;\u2013 compared to Expo, the first project launch can take much longer, especially if the environment has not been configured before.<\/li>\n\n\n\n<li><strong>High learning curve<\/strong>&nbsp;\u2013 requires knowledge of Android\/iOS basics, which can be challenging for novice developers.<\/li>\n\n\n\n<li><strong>Hardware requirements<\/strong>&nbsp;\u2013 a Mac is required to develop iOS apps, and Android emulators may require powerful hardware.<\/li>\n\n\n\n<li><strong>Debugging issues<\/strong>&nbsp;\u2013 in case of errors, Gradle (Android) or Xcode (iOS) logs often need to be analyzed, which requires additional technical knowledge.<\/li>\n\n\n\n<li><strong>Manual configuration of native libraries<\/strong>&nbsp;\u2013 some libraries require you to manually add API keys, link dependencies or edit configuration files.<\/li>\n\n\n\n<li><strong>Longer startup time for a new application<\/strong>&nbsp;\u2013 you have to go through several additional configuration steps before you can see the first results of your work.<\/li>\n\n\n\n<li><strong>No ready-made solution for OTA updates<\/strong>&nbsp;\u2013 unlike Expo, which allows for easy implementation of&nbsp;<em>over-the-air<\/em>updates, here you have to take care of this process yourself.<\/li>\n\n\n\n<li><strong>Dependence on native compilation processes<\/strong>&nbsp;\u2013 compiling a project can be time-consuming and prone to problems resulting from Android Studio or Xcode updates.<\/li>\n<\/ul>\n\n\n\n<p>Despite these difficulties, React Native CLI is irreplaceable when you need full control and scalability. Most large production applications are created in this mode \u2013 it ensures that you will not encounter limitations as the project grows and allows integration with native projects (e.g. joining React Native to an existing native application).<\/p>\n\n\n\n<p>See also:&nbsp;<a href=\"https:\/\/uniquedevs.com\/en\/blog\/comparison-flutter-vs-react-native\/\">React Native vs Flutter<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comparison of Expo and React Native CLI<\/h2>\n\n\n\n<p>Below, we present a comparison of the most important aspects of both approaches:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Aspect<\/strong><\/th><th><strong>Expo <\/strong><\/th><th><strong>React Native CLI<\/strong><\/th><\/tr><\/thead><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong><strong>Easy installation<\/strong><\/strong><\/td><td>Very high \u2013 only requires Node.js and the installation of Expo CLI. Get started quickly in a few minutes. Android Studio\/Xcode&nbsp;<em>are not<\/em>&nbsp;required to get started.<\/td><td>Lower &#8211; requires installation and configuration of Android Studio (Android SDK, emulator) and on macOS also Xcode (iOS SDK). If you have no experience, the configuration can take ~1h.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong><strong>Access to native modules<\/strong><\/strong><\/td><td>Limited to modules supported by Expo SDK. It is not possible to add your own native code without leaving the managed workflow (you must use the development build or eject). This can be a barrier to more complex projects.<\/td><td>Full access \u2013 you can use\u00a0<em>any of<\/em>\u00a0the libraries and write your own native code. React Native CLI allows you to integrate any modules and platform-specific functions (camera, Bluetooth, payments, etc.) without imposed limitations.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong><strong>App size (APK\/IPA)<\/strong><\/strong><\/td><td>Usually larger \u2013 the default Expo build contains many modules, even if not all of them are used, which increases the weight of the application. This can result in slower startup on weaker devices.\u00a0<em>(Note: new Expo versions improve this aspect by excluding unused code during build)<\/em>.<\/td><td>Usually smaller \u2013 only what you consciously add ends up in the application. No overhead from unused Expo libraries. You can remove unnecessary dependencies and thus optimize the size and performance of the application.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong><strong>Support for production applications<\/strong><\/strong><\/td><td><strong>Yes,<\/strong>\u00a0but with some reservations. Expo is great for prototypes and less complex applications. For larger production applications, it is often necessary to use EAS Build to create the final files for iOS\/Android. Large companies use Expo less frequently, unless it fits their requirements \u2013 if necessary, you can still \u201ceject\u201d from Expo to bare workflow.<\/td><td><strong>Yes,<\/strong>\u00a0React Native CLI is the standard approach for production applications. It is used by companies that want to have full control and optimization. Projects created with CLI are easier to integrate with existing native applications and continuous integrations (CI\/CD). In the long term, CLI is suitable for complex, commercial projects.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Practical Expo installation<\/h2>\n\n\n\n<p>Let&#8217;s get down to business \u2013 below you will find instructions on how to install Expo and create and run a new React Native project with Expo.<\/p>\n\n\n\n<p><strong>Steps to install and run an Expo project:<\/strong><\/p>\n\n\n\n<p><strong>1. Install Node.js<\/strong>&nbsp;\u2013 if you don&#8217;t have it yet, download the latest LTS version of Node.js from nodejs.org and install it. Expo requires Node.js to run its CLI.<\/p>\n\n\n\n<p><strong>2. Install Expo CLI<\/strong>&nbsp;\u2013 the best way is to use npx to run the&nbsp;<code>create-expo-app<\/code>tool, which will create an Expo project. In the terminal, run the command:<\/p>\n\n\n\n<pre class=\"wp-block-code language-markup\"><code>npx create-expo-app@latest AwesomeProject\n<\/code><\/pre>\n\n\n\n<p>The above command will create a new Expo project called \u201cAwesomeProject\u201d with default settings. Alternatively, you can install Expo CLI globally with the command&nbsp;<code>npm install -g expo-cli<\/code>&nbsp;and then use&nbsp;<code>expo init AwesomeProject<\/code>&nbsp;\u2013 the result will be similar. During initialization, Expo will ask you a few questions, including choosing a project template.<\/p>\n\n\n\n<p><strong>3. Select a template<\/strong>&nbsp;\u2013 Expo provides various starter templates. The most common choices are: blank (a clean project with one screen) and tabs (a project with a ready-made tab-bar navigation and several example screens). If you are just starting out, choose&nbsp;<code>blank template<\/code>&nbsp;\u2013 you will get a minimal React Native application. The&nbsp;<code>\u201cTabs\u201d<\/code>&nbsp;template already includes the React Navigation library and sample screens with a tab menu. You can also see the workflow option:&nbsp;<em>managed<\/em>&nbsp;(default) or&nbsp;<em>bare<\/em>. Make sure that the Managed workflow mode (i.e. standard Expo) is selected to be able to use all Expo facilities.<\/p>\n\n\n\n<p><strong>4. Install dependencies and start the project<\/strong>&nbsp;\u2013 once the project has been successfully created, go to the project folder and start the development server:<\/p>\n\n\n\n<pre class=\"wp-block-code language-markup\"><code>cd AwesomeProject\nnpm start  # lub: expo start\n<\/code><\/pre>\n\n\n\n<p>You should see the Metro Bundler package running in the console and a message saying that the application is ready to connect. A QR code will also appear.<\/p>\n\n\n\n<p><strong>5. Run the application on your device or emulator<\/strong>&nbsp;\u2013 now you can preview how the application works:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>On a physical device:<\/strong>&nbsp;Install the&nbsp;<strong>Expo Go<\/strong>&nbsp;application from the store (Google Play or App Store) on your phone. Make sure that your phone and computer are connected to the same Wi-Fi network. Scan the QR code displayed on the Expo terminal\/window with your phone camera \u2013 the Expo Go app will connect to your developer server and launch the app. Any saved changes to the code will automatically refresh the preview on your phone.<\/li>\n\n\n\n<li><strong>On an emulator\/simulator:<\/strong>&nbsp;If you have an Android emulator (AVD) or an iOS simulator installed, make sure it is running. In the terminal window with Metro Bundler, press the&nbsp;<strong><code>a<\/code><\/strong>&nbsp;key to open the app on Android Emulator, or&nbsp;<strong><code>i<\/code><\/strong>&nbsp;to open on iOS Simulator (on macOS)<\/li>\n<\/ul>\n\n\n\n<p>Expo CLI will automatically build a debug version and send it to the emulator. After a while, you should see the React Native splash screen (by default, this is the screen that says \u201cWelcome to React Native&#8230;\u201d).<\/p>\n\n\n\n<p><strong>6. Modification and hot-reload:<\/strong>&nbsp;Now you can open the&nbsp;<code>App.js<\/code>&nbsp;file in the editor, make changes (e.g. change the welcome text) and save. Expo will immediately reload the app on the device\/emulator, showing the changes you made thanks to the&nbsp;<em>Fast Refresh<\/em>&nbsp;mechanism that is enabled by default.<br><br>Congratulations! Your Expo project is up and running. The whole process \u2013 from installation to seeing the app \u2013 is very fast and beginner-friendly. For more details, check out the official Expo documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React Native CLI installation<\/h2>\n\n\n\n<p>The React Native CLI approach is a little more time-consuming to set up. It requires you to install several tools and native dependencies, but it will allow you to build your app from scratch on your own computer. Instructions are below:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Steps to set up and run a React Native CLI project:<\/h3>\n\n\n\n<p><strong>1. Prepare the environment:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node.js:<\/strong>&nbsp;Install Node.js (if you don&#8217;t have it already) &#8211; as with Expo, Node is required to manage JavaScript packages and run Metro Bundler.<\/li>\n\n\n\n<li><strong>JDK (Java Development Kit):<\/strong>&nbsp;Download and install JDK version 11 or higher (React Native currently recommends JDK 11 LTS). On Windows\/Mac, make sure that the&nbsp;<code>JAVA_HOME<\/code>&nbsp;environment variable points to the JDK installation directory.<\/li>\n\n\n\n<li><strong>Android Studio (Android SDK):<\/strong>&nbsp;Install Android Studio \u2013 during installation, select the option to install the latest Android SDK and the AVD (Android Virtual Device) configurator, as you will need them to emulate the application on Android. After installing Android Studio, launch it once and go through the \u201cSDK Manager\u201d configurator to install Android platforms (e.g. Android 13\/API 33) and the \u201cAVD Manager\u201d to create a virtual device (e.g. Pixel 5 with Android). Additionally, add the path to the Android SDK tools (<code>platform-tools<\/code>) to the&nbsp;<code>PATH<\/code>&nbsp;variableto be able to use the adb commands in the terminal.<\/li>\n\n\n\n<li><strong>Xcode (macOS only, for iOS):<\/strong>&nbsp;If you are using a Mac and plan to develop iOS apps, install the latest Xcode from the Mac App Store. After installation, open Xcode and install additional tools (you may be prompted to install command line tools). Also install the&nbsp;<strong>CocoaPods<\/strong>&nbsp;tool (<code>sudo gem install cocoapods<\/code>&nbsp;in Terminal), which you will need to manage iOS libraries. Note: on Windows\/Linux, it is&nbsp;<strong>not possible to<\/strong>&nbsp;build or run a native iOS application \u2013 macOS is required for this.<\/li>\n\n\n\n<li><strong>React Native CLI:<\/strong>&nbsp;You don&#8217;t need to install anything separately \u2013 React Native has a built-in CLI tool. We will use it through&nbsp;<code>npx<\/code>, which will always launch the latest version of the CLI.<\/li>\n<\/ul>\n\n\n\n<p><strong>2. Create a new React Native project:<\/strong>&nbsp;Once you have configured the above, you can create a project. Use the following command in Terminal\/Powershell:<\/p>\n\n\n\n<pre class=\"wp-block-code language-markup\"><code>npx react-native init MyProject\n<\/code><\/pre>\n\n\n\n<p>where \u201cMyProject\u201d is the name of your app. This command will generate a directory structure with a sample app (containing the&nbsp;<code>App.js<\/code>&nbsp;component with a simple splash screen). With&nbsp;<code>npx<\/code>&nbsp;you always use the current version of the React Native CLI \u2013 there is no need to install the global&nbsp;<code>react-native-cli<\/code>package. After a few minutes (depending on the speed of your internet connection and computer), the project will be created.<\/p>\n\n\n\n<p>3.&nbsp;<strong>Run Metro Bundler:<\/strong>&nbsp;Go to the project folder:&nbsp;<code>cd MyProject<\/code>. Then (preferably in a separate terminal window) run the Metro server:<\/p>\n\n\n\n<pre class=\"wp-block-code language-markup\"><code>npx react-native start\n<\/code><\/pre>\n\n\n\n<p>Metro Bundler is a server that will be responsible for delivering the JavaScript package to your application. It should start on the default port 8081 and listen for code changes.&nbsp;<br>(Note: Many commands, such as run-android\/run-ios, automatically start Metro, so you can skip this step &#8211; however, it is recommended to have a separate window with Metro to follow any JavaScript error logs).<\/p>\n\n\n\n<p>4.&nbsp;<strong>Run the Android app:<\/strong>&nbsp;Make sure you have the Android emulator (AVD) running&nbsp;<strong>or<\/strong>&nbsp;a physical phone connected with USB debugging enabled. Then, in the project&#8217;s main directory, execute the command:<\/p>\n\n\n\n<pre class=\"wp-block-code language-markup\"><code>npx react-native run-android\n<\/code><\/pre>\n\n\n\n<p>This will build the Android application and install it on the emulator\/device. The first time it is run, Gradle will download all the necessary dependencies, which may take a few minutes. If everything is configured correctly, after compilation you will see the&nbsp;<strong>MyProject<\/strong>&nbsp;application screen on the emulator (as in Expo, by default it is the React Native welcome screen)<\/p>\n\n\n\n<p>If there are any errors, check the console messages \u2013 the most common problems are that the emulator is not running or that the SDK licenses have not been accepted (if necessary, run Android Studio, which will tell you how to accept the licenses). After a successful launch, Metro Bundler will start transferring the JavaScript code to the app.<\/p>\n\n\n\n<p><strong>5. Run the app on iOS (macOS):<\/strong>&nbsp;If you are working on a Mac, you can run the app on the iOS Simulator. Make sure you have the simulator open (e.g. iPhone 14). In the project directory, do the following:<\/p>\n\n\n\n<pre class=\"wp-block-code language-markup\"><code>npx react-native run-ios\n<\/code><\/pre>\n\n\n\n<p>This command will open the iOS project in Xcode, build it and run it in the simulator. The first run will also automatically install dependencies via CocoaPods (this may take a while). After a while, you should see the app on the virtual iPhone. If something goes wrong, make sure that Xcode has been installed and updated and that the simulator is configured correctly. (Alternatively, you can run the iOS application manually by opening the&nbsp;<code>.xcworkspace<\/code>&nbsp;project in Xcode and clicking \u201cRun\u201d, which sometimes gives a better insight into errors).<\/p>\n\n\n\n<p><strong>6. Edit the code and use Fast Refresh:<\/strong>&nbsp;Open the&nbsp;<code>App.js<\/code>&nbsp;file in your CLI project and change the header text, for example. Then save the file &#8211; on the emulator\/phone you will see that the application will automatically reload, presenting the changes you made (thanks to the Fast Refresh mechanism, which works here similarly to Expo). In case of more significant native changes (e.g. adding a new native library), it may be necessary to rebuild the application.<\/p>\n\n\n\n<p>Now you have a React Native project running that was created using the CLI. From this point on, you can build your app, add libraries via&nbsp;<code>npm\/yarn<\/code>&nbsp;and fully develop your project. Please note that you can find more detailed information (e.g. about generating APK\/IPA release files, configuring app signatures, etc.) in the&nbsp;<a href=\"https:\/\/reactnative.dev\/docs\/getting-started\">React Native<\/a>&nbsp;documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Which solution should I choose?<\/h2>\n\n\n\n<p>The choice between Expo and React Native CLI depends on your level of experience and the specifics of the project you want to work on. Below you will find recommendations tailored to different user groups:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">For beginners<\/h3>\n\n\n\n<p>If you are just starting out with React Native or mobile development in general, Expo might be a better choice to start with. It allows you to avoid the hassle of setting up a native environment and focus on writing code in JavaScript\/React right away. Expo offers a smoother introduction \u2013 quick prototyping and previewing how the application works without the frustration of Gradle or Xcode configuration. In practice, many tutorials for beginners recommend Expo as a first step. Expo will also work if you want to quickly prepare a simple project or prototype \u2013 e.g. for the purpose of demonstrating an idea or a project for your studies. The managed workflow means you don&#8217;t have to worry about the details &#8211; for example, adding camera support or localization comes down to installing an Expo package (<code>expo-camera<\/code>,&nbsp;<code>expo-location<\/code>) and using it right away, without fiddling with native configuration files. In addition, the Expo community and excellent documentation will help you at the beginning of your journey &#8211; if you encounter a problem, you are probably not the first person to have it, and the Expo forums are full of tips.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">For intermediate users<\/h3>\n\n\n\n<p>If you have already taken your first steps and are starting to feel more confident with React Native, the answer to the question \u201cExpo or CLI?\u201d is: it depends on the needs of the project. You can continue to use Expo, especially if the project does not require unusual native functionalities. Expo has evolved a lot in recent years and even some quite complex applications can be developed in it without limitations. However, it is worth assessing whether you are approaching the limits of Expo&#8217;s capabilities. If you know that you will need, for example, integration with a native SDK from a manufacturer (which is not in Expo) in your project, or you want to optimize size and performance as much as possible, it may be a signal to consider switching to React Native CLI. A good strategy is to start development in Expo (for speed) and possibly \u201ceject\u201d to bare workflow when Expo starts to limit you.<\/p>\n\n\n\n<p>Remember that leaving Expo will require you to configure the environment like for CLI, but Expo provides the&nbsp;<code>expo prebuild<\/code>command that will generate native projects for you. For intermediate developers, it is also important to broaden their skills. It might be worth trying to create a smaller side project in React Native CLI from scratch to understand the differences and native mechanisms.<\/p>\n\n\n\n<p>To sum up: if your project fits the Expo capabilities and you value speed of development, stick with Expo. If you start to feel limited or want to deepen your knowledge of native development, React Native CLI will be the next step. Check out what a&nbsp;<a href=\"https:\/\/uniquedevs.com\/en\/blog\/native-applications-what-are-native-apps\/\">native application<\/a>&nbsp;is.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">For advanced users<\/h3>\n\n\n\n<p>For experienced React Native developers, especially those who also have knowledge of Android\/iOS, React Native CLI is often the choice. At this level, you probably want full control over the project, continuous integration (CI\/CD), unit and end-to-end testing on real devices, performance profiling, etc. React Native CLI gives you full control over this \u2013 there is no \u201cblack box\u201d that does something for you, you control every aspect yourself. In a professional environment, CLI is also preferred because it is easier to maintain and develop a large project in the long term without worrying about externally imposed limitations. Furthermore, many advanced developers choose CLI because they often have to combine work on the React Native part with work on the native part of the application (e.g. adding native screens or modules written in Swift\/Kotlin). If you are advanced, Expo can still be used for rapid prototyping or creating smaller applications\/demos, but for serious, large implementations, you will probably choose React Native CLI for its flexibility.<\/p>\n\n\n\n<p>It is worth noting that Expo is not opposed to advanced applications \u2013 you can, for example, use part of the Expo ecosystem (libraries with Expo SDK) in a project created by CLI, because it is still React Native underneath. However, the general rule is: Expo for convenience, CLI for full control. As one article put it, Expo is ideal for beginners or rapid prototyping, while React Native CLI appeals to developers who need deep access to native modules and maximum control over the project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>Expo vs. React Native CLI \u2013 both approaches have their strengths and weaknesses, and understanding their differences is key before starting a React Native project. Expo provides a quick start, simplicity and a rich set of tools from the start, making it a great choice for beginners in the world of mobile applications and for projects that can be completed within the available Expo modules. React Native CLI, on the other hand, gives you complete freedom, native code control and scalability, which is essential for large, demanding commercial projects.<\/p>\n\n\n\n<p>When choosing a solution for yourself, consider both your&nbsp;<strong>level of experience<\/strong>&nbsp;and the&nbsp;<strong>requirements of the project<\/strong>. If you want it to be quick and easy, start with Expo. If you know from the start that you need custom native solutions or want to learn the native approach, React Native CLI might be better. Remember that there is always the possibility of migration: you can convert an Expo project into a bare React Native (CLI) project if necessary, and vice versa, you can use multiple Expo libraries in a CLI project (thanks to the so-called bare workflow in Expo).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>React Native is a popular JavaScript framework created by Facebook that allows you to create native mobile apps for Android and iOS using the React library. Before you start your first project, you need to choose the right starting tool. With React Native, you have two main approaches: Expo and React Native CLI. Choosing between the two is crucial for your development experience and workflow, so it&#8217;s worth getting to know their specifics.<\/p>\n","protected":false},"author":2,"featured_media":4880,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[16],"tags":[],"class_list":["post-2702","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Expo vs. React Native CLI: Choosing the right tool for your app development | UniqueDevs<\/title>\n<meta name=\"description\" content=\"Understand the differences between Expo and React Native CLI to select the best framework for your mobile application development needs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Expo vs. React Native CLI: Choosing the right tool for your app development | UniqueDevs\" \/>\n<meta property=\"og:description\" content=\"Understand the differences between Expo and React Native CLI to select the best framework for your mobile application development needs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/\" \/>\n<meta property=\"og:site_name\" content=\"Software House - rozwi\u0105zania IT dla Twojego biznesu | UniqueDevs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/Unique-Devs\/61564365418277\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-03T17:59:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-05T15:23:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"853\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Hubert Olech\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hubert Olech\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/\"},\"author\":{\"name\":\"Hubert Olech\",\"@id\":\"https:\/\/uniquedevs.com\/#\/schema\/person\/a2c9b776ac544a910615b03c8b9c4c18\"},\"headline\":\"How to start a project in React Native &#8211; Expo or React Native CLI?\",\"datePublished\":\"2025-03-03T17:59:28+00:00\",\"dateModified\":\"2025-03-05T15:23:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/\"},\"wordCount\":4059,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/uniquedevs.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp\",\"articleSection\":[\"Mobile\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/\",\"url\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/\",\"name\":\"Expo vs. React Native CLI: Choosing the right tool for your app development | UniqueDevs\",\"isPartOf\":{\"@id\":\"https:\/\/uniquedevs.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp\",\"datePublished\":\"2025-03-03T17:59:28+00:00\",\"dateModified\":\"2025-03-05T15:23:24+00:00\",\"description\":\"Understand the differences between Expo and React Native CLI to select the best framework for your mobile application development needs.\",\"breadcrumb\":{\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage\",\"url\":\"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp\",\"contentUrl\":\"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp\",\"width\":1280,\"height\":853},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/uniquedevs.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile\",\"item\":\"https:\/\/uniquedevs.com\/blog\/category\/mobile\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to start a project in React Native &#8211; Expo or React Native CLI?\"}]},{\"@type\":\"Website\",\"@id\":\"https:\/\/uniquedevs.com\/#website\",\"url\":\"https:\/\/uniquedevs.com\/\",\"name\":\"Software House - rozwi\u0105zania IT dla Twojego biznesu | UniqueDevs\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/uniquedevs.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/uniquedevs.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},[],{\"@type\":\"Person\",\"@id\":\"https:\/\/uniquedevs.com\/#\/schema\/person\/a2c9b776ac544a910615b03c8b9c4c18\",\"name\":\"Hubert Olech\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/uniquedevs.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/uniquedevs.com\/wp-content\/litespeed\/avatar\/4aa41b6b162ba5c7c2dc5577af43de87.jpg?ver=1776080645\",\"contentUrl\":\"https:\/\/uniquedevs.com\/wp-content\/litespeed\/avatar\/4aa41b6b162ba5c7c2dc5577af43de87.jpg?ver=1776080645\",\"caption\":\"Hubert Olech\"},\"description\":\"Huber Olech - Founder @UniqueDevs. \u0141\u0105cz\u0119 \u015bwiat technologii z biznesem, pomagaj\u0105c firmom rozwija\u0107 si\u0119 dzi\u0119ki innowacyjnym rozwi\u0105zaniom cyfrowym. Pasja do software development zainspirowa\u0142a mnie do zbudowania zespo\u0142u ekspert\u00f3w, z kt\u00f3rymi wsp\u00f3lnie dostarczamy najwy\u017cszej jako\u015bci produkty dla swoich Klient\u00f3w. W oparciu o swoje wieloletnie do\u015bwiadczenie w bran\u017cy IT, rozumiem trendy w nowych technologiach i potrafi\u0119 przeku\u0107 je w wymierne korzy\u015bci dla firm. Moj\u0105 misj\u0105 jest tworzenie rozwi\u0105za\u0144, kt\u00f3re nie tylko usprawniaj\u0105 procesy, ale tak\u017ce otwieraj\u0105 przed Klientami nowe mo\u017cliwo\u015bci rynkowe i zwi\u0119kszaj\u0105 ich konkurencyjno\u015b\u0107.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/hubert-olech-b0a524167\/\"],\"url\":\"https:\/\/uniquedevs.com\/en\/blog\/author\/h-olech\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Expo vs. React Native CLI: Choosing the right tool for your app development | UniqueDevs","description":"Understand the differences between Expo and React Native CLI to select the best framework for your mobile application development needs.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Expo vs. React Native CLI: Choosing the right tool for your app development | UniqueDevs","og_description":"Understand the differences between Expo and React Native CLI to select the best framework for your mobile application development needs.","og_url":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/","og_site_name":"Software House - rozwi\u0105zania IT dla Twojego biznesu | UniqueDevs","article_publisher":"https:\/\/www.facebook.com\/people\/Unique-Devs\/61564365418277\/","article_published_time":"2025-03-03T17:59:28+00:00","article_modified_time":"2025-03-05T15:23:24+00:00","og_image":[{"width":1280,"height":853,"url":"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp","type":"image\/webp"}],"author":"Hubert Olech","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Hubert Olech","Est. reading time":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#article","isPartOf":{"@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/"},"author":{"name":"Hubert Olech","@id":"https:\/\/uniquedevs.com\/#\/schema\/person\/a2c9b776ac544a910615b03c8b9c4c18"},"headline":"How to start a project in React Native &#8211; Expo or React Native CLI?","datePublished":"2025-03-03T17:59:28+00:00","dateModified":"2025-03-05T15:23:24+00:00","mainEntityOfPage":{"@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/"},"wordCount":4059,"commentCount":0,"publisher":{"@id":"https:\/\/uniquedevs.com\/#organization"},"image":{"@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage"},"thumbnailUrl":"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp","articleSection":["Mobile"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/","url":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/","name":"Expo vs. React Native CLI: Choosing the right tool for your app development | UniqueDevs","isPartOf":{"@id":"https:\/\/uniquedevs.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage"},"image":{"@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage"},"thumbnailUrl":"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp","datePublished":"2025-03-03T17:59:28+00:00","dateModified":"2025-03-05T15:23:24+00:00","description":"Understand the differences between Expo and React Native CLI to select the best framework for your mobile application development needs.","breadcrumb":{"@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#primaryimage","url":"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp","contentUrl":"https:\/\/uniquedevs.com\/wp-content\/uploads\/2025\/03\/code-820275_1280.webp","width":1280,"height":853},{"@type":"BreadcrumbList","@id":"https:\/\/uniquedevs.com\/en\/blog\/how-to-start-a-project-in-react-native-expo-or-react-native-cli\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/uniquedevs.com\/en\/"},{"@type":"ListItem","position":2,"name":"Mobile","item":"https:\/\/uniquedevs.com\/blog\/category\/mobile\/"},{"@type":"ListItem","position":3,"name":"How to start a project in React Native &#8211; Expo or React Native CLI?"}]},{"@type":"Website","@id":"https:\/\/uniquedevs.com\/#website","url":"https:\/\/uniquedevs.com\/","name":"Software House - rozwi\u0105zania IT dla Twojego biznesu | UniqueDevs","description":"","publisher":{"@id":"https:\/\/uniquedevs.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uniquedevs.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},[],{"@type":"Person","@id":"https:\/\/uniquedevs.com\/#\/schema\/person\/a2c9b776ac544a910615b03c8b9c4c18","name":"Hubert Olech","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uniquedevs.com\/#\/schema\/person\/image\/","url":"https:\/\/uniquedevs.com\/wp-content\/litespeed\/avatar\/4aa41b6b162ba5c7c2dc5577af43de87.jpg?ver=1776080645","contentUrl":"https:\/\/uniquedevs.com\/wp-content\/litespeed\/avatar\/4aa41b6b162ba5c7c2dc5577af43de87.jpg?ver=1776080645","caption":"Hubert Olech"},"description":"Huber Olech - Founder @UniqueDevs. \u0141\u0105cz\u0119 \u015bwiat technologii z biznesem, pomagaj\u0105c firmom rozwija\u0107 si\u0119 dzi\u0119ki innowacyjnym rozwi\u0105zaniom cyfrowym. Pasja do software development zainspirowa\u0142a mnie do zbudowania zespo\u0142u ekspert\u00f3w, z kt\u00f3rymi wsp\u00f3lnie dostarczamy najwy\u017cszej jako\u015bci produkty dla swoich Klient\u00f3w. W oparciu o swoje wieloletnie do\u015bwiadczenie w bran\u017cy IT, rozumiem trendy w nowych technologiach i potrafi\u0119 przeku\u0107 je w wymierne korzy\u015bci dla firm. Moj\u0105 misj\u0105 jest tworzenie rozwi\u0105za\u0144, kt\u00f3re nie tylko usprawniaj\u0105 procesy, ale tak\u017ce otwieraj\u0105 przed Klientami nowe mo\u017cliwo\u015bci rynkowe i zwi\u0119kszaj\u0105 ich konkurencyjno\u015b\u0107.","sameAs":["https:\/\/www.linkedin.com\/in\/hubert-olech-b0a524167\/"],"url":"https:\/\/uniquedevs.com\/en\/blog\/author\/h-olech\/"}]}},"_links":{"self":[{"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/posts\/2702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/comments?post=2702"}],"version-history":[{"count":5,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/posts\/2702\/revisions"}],"predecessor-version":[{"id":2712,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/posts\/2702\/revisions\/2712"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/media\/4880"}],"wp:attachment":[{"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/media?parent=2702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/categories?post=2702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uniquedevs.com\/en\/wp-json\/wp\/v2\/tags?post=2702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}