Состоялся релиз Expo SDK 50

18 января 2024 года состоялся релиз Expo SDK 50. SDK 50 включает в себя React Native 0.73 а также много новых функций.

18 января 2024 года состоялся релиз Expo SDK 50. SDK 50 включает в себя React Native 0.73.

Плагины Expo Dev Tools

Этот API предоставляет авторам библиотек основу для создания плагинов на основе браузера для отладки и взаимодействия с аспектами их библиотеки/приложения. Для проверки и демонстрации API было создано несколько плагинов для популярных инструментов: Apollo Client, TanStack Query, TinyBase, React Native Async Storage и React Navigation — и вы можете найти их в репозитории expo/dev-plugins . Узнать больше .

Новые и улучшенные API-интерфейсы SQLite и Camera.

  • Библиотека expo-sqlite/next была полностью переработана с целью обновления её API и соответствия зрелым аналогам, используемым в сети и Node.js. В обновленном API реализованы как синхронные, так и асинхронные методы, добавлена поддержка подготовленных операторов, обратных вызовов обновления и типа данных Blob, а также другие возможности. Версия SQLite теперь обновлена до 3.42.0 на обеих платформах, независимо от версий, поставляемых с операционной системой, что позволяет использовать расширения SQLite, такие как CR-SQLite. Также создан диалект Knex для expo-sqlite, предназначенный для тех, кто предпочитает использовать построители запросов. SQLite становится все более важным строительным блоком, особенно в свете растущих шаблонов, таких как архитектура локальных приложений. Команда продолжит активные инвестиции в развитие этой библиотеки. Дополнительную информацию о новом API SQLite можно найти здесь.

  • expo-camera/next: доступ к камере устройства - это фундаментальная возможность многих мобильных приложений, и разработчики Expo считают, что это должно быть как просто, так и надежно. Поэтому они взяли одну из наших старых и самых популярных библиотек и обновили ее с учетом лучших практик нативных платформ. Для большинства случаев использования ожидается, что expo-camera/next подойдет идеально. Для более сложных сценариев использования (например, обработки кадров) отличным вариантом является react-native-vision-camera. Узнайте больше о новом API камеры.

import { CameraView } from 'expo-camera/next';// Minimal example of using the new API, refer to types for more information on propsexport default function Camera() {  return (      );}

Представлен @expo/fingerprint

Это - ответ на общий вопрос разработчиков React Native: "как узнать, совместим ли JavaScript-пакет приложения с конкретной сборкой моего приложения?".

@expo/fingerprint (CLI) или API генерирует отпечаток, представляющий уникальные характеристики проекта, и если этот отпечаток меняется, то вы знаете, что JavaScript-приложение, ориентированное на старый отпечаток, может быть несовместимо.

Попробуйте это через CLI: npx @expo/fingerprint путь/к/вашему/проекту, и узнайте больше в README, а также в README expo-github-actions. Интеграция первого класса в службы EAS будет доступна в будущем!

Expo Router v3

Это следующий крупный выпуск для универсальной маршрутизации на основе файлов и расширенной поддержки веб-приложений. В Expo Router v3 внесено множество исправлений ошибок и улучшений стабильности, улучшена документация, добавлена поддержка веба, тестирование и типы. Особенно стоит отметить, что в Expo Router v3 теперь есть экспериментальная поддержка создания универсальных серверных конечных точек с помощью API Routes. Подробный блог-пост, посвященный этому выпуску опубликован здесь.

EAS Build


Непрерывно внедряются улучшения в EAS Build. Вот несколько ключевых моментов с момента последнего выпуска SDK:

  • Теперь Xcode 15.2 является версией по умолчанию для macOS-воркеров. Узнайте больше.

  • JDK 17 и Ubuntu 20 теперь являются версиями по умолчанию для Linux-воркеров. Узнайте больше.

  • Теперь Node 18 является версией по умолчанию. Версия Node по умолчанию в EAS Build соответствует текущей версии поддержки с долгосрочной поддержкой, и 27 ноября 2023 года изменена версия по умолчанию с Node 16 на 18. Узнайте больше.

  • Улучшены предупреждения и ошибки. "Аннотации сборки" могут создать ощущение, что опытный инженер следит за вашей работой, чтобы помочь вам понять, почему возникают конкретные предупреждения и ошибки в вашей сборке, и что с ними делать. Узнайте больше.

  • Pre-warmed кеш CocoaPods для ускорения сборок. Все ваши сборки iOS будут немного быстрее, без каких-либо изменений с вашей стороны. Узнайте больше.

  • Выпущен Expo Orbit v1: Orbit для macOS делает установку и запуск сборок из EAS быстрее и проще. Узнайте больше.

  • ...добавлена поддержка для Bun, EAS CLI теперь будет читать файлы .nvmrc для установки версии Node для ваших сборок (если не указано явно в вашем профиле сборки), eas build:run теперь принимает флаг --profile для фильтрации сборок, добавлена команда eas build:delete по запросу для поддержки определенных автоматизированных рабочих процессов, и продолжается улучшение предварительного просмотра полностью настраиваемых сборок, который должны сделать GA в ближайшие месяцы.

EAS Update

  • Новый, простой в использовании JavaScript API: в пакет expo-updates теперь включен новый хук useUpdates() (подразумевался в течение недели запуска в августе), который облегчит отслеживание состояния и взаимодействие с API обновлений. Этот API предоставляет удобный доступ ко всему, что вам нужно знать о состоянии обновлений в вашем проекте. Для получения дополнительной информации о типе возвращаемого значения, документации по useUpdates() и репозитории expo/UpdatesAPIDemo обратитесь к соответствующим ресурсам.

import { useUpdates } from 'expo-updates';export default function App() {  const {    currentlyRunning,    availableUpdate,    isUpdateAvailable,    isUpdatePending,    // and so on!  } = useUpdates();  // etc..}
  • Новые функции пользовательского интерфейса панели управления: Недавно были выпущены обновления для панели управления, которые позволяют пользователю: создавать новые каналы, удалять их, повторно публиковать обновления и удалять их. Подробнее узнайте здесь.

  • Откаты: Теперь есть возможность указать производственным приложениям откатиться к встроенному обновлению (JavaScript-приложение, созданное во время сборки) при следующей проверке обновлений. Это полезно в случаях, когда вы случайно развернули регрессию как первое обновление новой сборки и хотите вернуться к встроенному рабочему состоянию, а не пытаться развернуть исправление обновления поверх этого. Подробнее узнайте здесь.

  • Постепенные обновления: Теперь вы можете постепенно внедрять обновления для определенного процента ваших пользователей, чтобы минимизировать воздействие случайного введения ошибки в ваше производственное окружение. Подробнее узнайте здесь.

Поддержка базовых модулей Expo для tvOS и macOS

Теперь вы можете использовать API модулей Expo для создания собственных модулей для tvOS и macOS.

Другие нововведения

  • React Native версии 0.73 и React 18.2.0 (неизмененная с SDK 49) представляют собой значительное обновление. В этом релизе внесено множество улучшений, подробности которых можно найти в файлах React Native CHANGELOG, Release Notes и React CHANGELOG.

  • Плагин конфигурации expo-font теперь поддерживает нативное добавление шрифтов в ваше приложение. Это может быть полезно для загрузки шрифтов во время выполнения с использованием Font.loadAsync или useFonts, чтобы избежать перекомпиляции бинарного файла приложения. Однако шрифты в приложении обычно изменяются редко, поэтому внедрение шрифта в нативный проект с помощью плагина конфигурации может помочь вам упорядочить часть кода асинхронной загрузки при запуске приложения перед сборкой. Узнайте больше.

  • Модуль expo-secure-store получил несколько новых улучшений. По запросам пользователей были введены синхронные функции getItem и setItem! Узнайте больше об изменениях в changelog.

  • Модуль expo-dev-client теперь по умолчанию загружает самый недавно открытый проект при запуске сборки разработки. Если сервер разработки недоступен, он возвращается к экрану запуска. Узнайте больше.

  • Добавлена команда npx expo run. Теперь Expo CLI будет предлагать вам выбрать целевую платформу, если она не указана явно в команде. Это небольшое улучшение, которое согласуется с пользовательским интерфейсом npx expo run с eas build:run. Вы также можете использовать npx expo run android или npx expo run ios в качестве альтернатив run:android и run:ios.

- npx expo run? Select the platform to run › - Use arrow-keys. Return to submit.❯   Android    iOS
  • Команда "npx expo install --fix" теперь обновляет пакет Expo до последней версии. Разработчики регулярно обновляют Expo SDK с помощью этой команды, но пакет expo не обновляется автоматически. После обновления до SDK 50, флаг --fix обновит все пакеты Expo SDK, включая expo.

  • Теперь доступен инструмент обновления для нативных проектов. Если вы используете CNG, это не относится к вам. Для облегчения обновления нативных проектов с использованием Expo Modules создан аналог инструмента для CLI React Native. Он теперь доступен в документации под названием "Native project upgrade helper".

  • Веб-разделение пакетов с помощью Metro теперь включено по умолчанию.

  • Улучшены сообщения об ошибках и удаление кода. Expo CLI теперь предоставляет полные стек-трейсы для ошибок на основе компонентов, оптимизирует неиспользуемый код для конкретной платформы и быстрее трансформирует при упаковке для Hermes. Экспорт статических веб-сайтов теперь более чем в 2 раза быстрее!

  • Встроены стандарты URL и URLSearchParams. Теперь для использования многих библиотек на npm, где предполагается наличие API URL, не требуется полифилл (как ранее с библиотекой react-native-url-polyfill).

  • Улучшена поддержка изолированных модулей. Теперь можно использовать pnpm или npm --install-mode=isolated для сборок локальной разработки.

  • В предварительной версии доступен экспериментальный пользовательский интерфейс отладчика React Native JS. Совместная работа с Meta привела к унификации опыта отладки в React Native, и инфраструктура, поддерживающая этот новый пользовательский интерфейс отладчика, также является основой отладчика JS, встроенного в Expo CLI.

Заметные критические изменения

  • Обновления в Android SDK 34, AGP 8 и Java 17. Требуется установка JDK 17 для локальной сборки проекта.

  • Минимальная поддерживаемая версия Android увеличена до 6 (API 23), а минимальная версия iOS для развертывания — до 13.4.

  • Expo CLI и React Native теперь требуют Node 18+.

  • В Expo SDK 50 прекращена поддержка классических обновлений, рекомендуется использовать EAS Update.

  • @expo/vector-icons обновлен до [email protected], добавлена поддержка FontAwesome6 и изменены некоторые имена иконок.

  • Большинство JavaScript API expo-updates теперь недоступны в Expo Go и dev-сборках с expo-dev-client.

  • React Native 0.73 перешел с Java на Kotlin для Android Main* классов.

  • ProgressBarAndroid и ProgressViewIOS удалены в 0.73.

  • При использовании Expo Router v3 beta обратитесь к разделу Breaking Changes.

🧹 Expo Go: удалены SDK 47 и 48.

Регулярно выпускаются новые версии SDK с низким использованием для сокращения числа версий, которые поддерживает Expo Go. Это означает, что проекты на SDK 47 и 48 больше не будут работать в последней версии Expo Go, но будут функционировать нормально в остальных случаях. Для устройств Android/emulators или симуляторов iOS можно установить более старые версии Expo Go. Узнайте больше.

➡️ Обновление вашего приложения

Вот как обновить ваше приложение до Expo SDK 50 с версии 49:

  • Обновите EAS CLI до последней версии (если вы его используете):

npm i -g eas-cli
  • Установите новую версию пакета Expo:

npm install expo@^50.0.0
  • Обновите все зависимости, чтобы они соответствовали SDK 50:

npx expo install --fix
  • Если в вашем package.json есть какие-либо разрешения/переопределения, убедитесь, что они все еще необходимы. Например, вам следует удалить переопределения Metro и Metro-Resolver, если вы добавили их для expo-router в предыдущей версии SDK.

  • Проверьте наличие возможных известных проблем:

npx expo-doctor@latest

Подробнее в блоге Expo.

Материал опубликован при поддержке сайта habr.com
Комментарии

    Актуальные новости по теме "Array"