Состоялся релиз 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.
Написать комментарий