hunk.code_window: Expo provides various settings to configure how your app receives over-the-air (OTA) JavaScript updates. OTA updates allow you to publish a new version of your app JavaScript and assets without building a new version of your standalone app and re-submitting to app stores ([read more about the limitations](../../workflow/publishing/)).
   To perform an over-the-air update of your app, you simply run `expo publish`. If you're using release channels, specify one with `--release-channel <channel-name>` option. Please note that if you wish to update the SDK version which your app is using, you need to rebuild your app with `expo build:*` command and upload the binary file to the appropriate app store ([see the docs here](../../distribution/building-standalone-apps)).
   OTA updates are controlled by the [`updates` settings in app.json](../../workflow/configuration/#updates), which handle the initial app load, and the [Updates SDK module](../../sdk/updates/), which allows you to fetch updates asynchronously from your JS.
   ## Automatic Updates
  
hunk.labels: keep keep keep replace keep keep keep keep
hunk.after_edit: To perform an over-the-air update of your app, you simply run `expo publish`. If you're using release channels, specify one with `--release-channel <channel-name>` option. If you wish to update the SDK version of your app, or make [any of the these changes](../../workflow/publishing/#some-native-configuration-cant-be-updated-by), you'll need to rebuild your app with `expo build:*` command and upload the binary file to the appropriate app store ([see the docs here](../../distribution/building-standalone-apps)).
  
hunk.file_path: docs/pages/versions/v34.0.0/guides/configuring-ota-updates.md
hunk.type: replace
file: 
  // Copyright (C) 2009-2012 Lorenzo Caminiti
  // Distributed under the Boost Software License, Version 1.0
  // (see accompanying file LICENSE_1_0.txt or a copy at
  // http://www.boost.org/LICENSE_1_0.txt)
  // Home at http://www.boost.org/libs/local_function
  
  #ifndef BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE_HPP_
  #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE_HPP_
  
  #include <boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp>
  #include <boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp>
  #include <boost/preprocessor/tuple/eat.hpp>
  
  // PRIVATE //
  
  #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE_1_(sign, error) \
      BOOST_PP_IIF(BOOST_PP_IS_EMPTY(error(/* expand empty */)), \
          BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE_THIS \
      , \
          error BOOST_PP_TUPLE_EAT(1) \
      )(sign)
  
  // PUBLIC //
  
  // Validate params before starting to parse it.
  #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE(sign) \
      BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE_1_(sign, \
          BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_SIGN_VALIDATE_DEFAULTS(sign))
  
  #endif // #include guard
  
  