React Native 0.56 сошел с конвейера

10 мин. на чтение

4 июля в этом году не только День Независимости Соединенных Штатов Америки, но и релиз React Native 0.56. Далее перевод статьи Lorenzo Sciandra с официального блога.

Долгожданна версия React Native 0.56  наконец стала доступна. Этот пост выделит некоторый изменения и нововведения, которые появились в новом релизе. Мы также хотим объяснить широкой общественности, чем мы так заняты с марта этого года.

Дилемма новых фич или «когда зарелизиться?»

Руководство для контрибьюторов объясняет процесс разработки, по которому происходят все изменения в React Native. RN состоит из множества различных фич, поэтому он требует координации действий и непрекращающейся поддержки, чтобы все работало как надо. Добавьте к этому активное комьюнити, которое пулреквестит и багрепортит на проекте и у вас тоже пойдет кругом голова.

Несмотря на всеобщие положительные эмоции от React Native,  новые крутые фичи должны внедряться с большой осторожностью и аккуратностью, а это не всегда удается. Решение по которому в Апреле и Мае не было новых релизов, позволило команде разработчиков ядра добавить и протестировать целый набор новых фич. Мы использовали специальный канал на Гитхабе, чтобы убедиться что предстоящий июньский релиз (0.56.0) настолько хорош, насколько это возможно, в т.ч. с помощью тех, кто терпеливо ждал новой стабильной версии.

Так что, версия 0.56.0 идеальна? Нет как и любой другое ПО, здесь на Гитхабе. Но мы нашли компромис между «долгим ожиданием ради стабильной версии» и «выпускать быстрее и потом исправлять» и теперь мы готовы поделиться новинкой. Более того – нам известно о некоторых багах, которые не исправлены в финальной версии 0.56.0. Большинство разработчиков не должны столкнуться со сложностями при апгрейде React Native до версии 0.56.0. А тех коллег, кого указанные выше ошибки приведут к невозможности апгрейда, мы ждем в канале обсуждения для совместной работы над их устранением.

Вы можете считать версию 0.56.0 фундаментом, на котором мы построим еще более стабильный фреймворк. Потребуется неделя или две, чтобы отшлифовать все шероховатости, но это приведет к стоящему результату в Июле 2018 г. – релизу 0.57.0

Ну и в завершении вступительной части хотелось бы поблагодарить всех 67 контрибьюторов, которые работали над 818 комитами (!) чтобы ваши мобильные приложения стали еще лучше.

А теперь без лишних слов…

The Big Changes

Babel 7

Как вы все наверное знаете, транспеллер, который позволяет нам использовать все свежие фичи JavaScript (ECMAScript 2015+) скоро обновится до 7-й версии. Т.к. новая версия содержит некоторые важные изменения, мы почуствовали что это хороший момент, чтобы обновить Metro и добавить все улучшения Babel 7.

Если вы испытываете сложности с обновлением Babel, обратитесь к соответствующему разделу документации.

Модернизирована поддержка Android

Большая часть Android окружения была обновлена. Мы обновили Gradle 3.5Android SDK 26Fresco до 1.9.0, и OkHttp to 3.10.0 и даже NDK API target до API 16. Указанные обновления должно примениться без проблем и улучшить скорость сборки ваших приложений. Но куда важнее то, что эти обновления позволят вашим приложениям соответствовать новым требования магазина Play Store, которые заработают уже в следующем месяце.

Между прочим хочу поблагодарить Dulmandakh, за информационный шум, который он поднял в связи с этим и что все это стало возможно.

Есть еще некоторые шаги, которые нужно предпринять в этом направлении и вы можете ознакомиться с планом и обсуждением в специальной ветке на Гитхабе и частично в этой, посвященной JSC (JavaScriptCore).

Новые Node, Xcode, React и Flow — офигеть!

Node 8 отныне стандарт для React Native. Конечно, он уже был протестирован, но мы ушли от Node 6, т.к. закончилась ее поддержка. Библиотека React также обновилась до версии 16.4, в которой было сделана тонна исправлений.

Мы выбросили поддержку iOS 8, сделав iOS 9 самой старой версией iOS, которую можно выбрать. Мы не видим в этом проблемы, т.к. любое устройство, которое работает на iOS 8 может обновиться до iOS 9. Это изменение позволило выбросить из кода костыли, которые использовались для работоспособности устройств под управлением iOS 8.

Чтобы использовать Xcode 9.4 и убедиться, что приложения могут тестироваться на самых свежих средствах разработки, которые предоставляет Apple, мы обновили Continuous Integration Toolchain.

Мы так же обновили Flow до 0.75, чтобы использовать новый формат вывода ошибок, о котором просили многие разработчики. Мы так же написали типизацию для многих компонентов. В общем, если вы еще не используете статическую типизацию в своем проекте, подумайте над использованием Flow, чтобы исправлять ошибки пока вы кодите, а не когда приложение уже запущено.

Ну и много других вещей…

Для инстансов YellowBox заменили на новую имплементацию, которая позволила сделать дебаггинг намного лучше.

Ну а для полного списка изменений, пожалуйста перейдите по этой ссылке. Ну и конечно обязательно прочитайте Руководство по обновлению, которе позволит избежать многих проблем при обновлении на новую версию.

И последнее замечание: со следующей недели команда React Native возобновляют приостановленные ранее ежемесячные митинги. Мы хотим быть уверены, что все в курсе происходящего, а также что ваши фидбеки попали в правильные руки и будут обсуждены на следующих митингах.

Happy coding everyone!

LorenzoRyan, and the whole React Native core team

P.S. И как всегда: мы хотели бы напомнить, что React Native все еще версии 0.ХХ, т.к. многое в состоянии разработки. Так что помните: при обновлении (да, это возможно) что-то упадет или отвалится. Будьте взаимно вежливы и помогайте друг другу в исправлении ошибок. А Когда будете делать pull requests, не забывайте следовать Кодексу использования открытого ПО – за той стороной экрана всегда присутствует живой человек.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.