iOS Tutorial B4i Change Log (versions history)

v8.50 - January 10, 2024 -
  • Code snippets:
  • Support for Swift frameworks. Note that Objective C bridge headers are required.
    This feature is supported by Xcode 15+. The hosted builders were upgrades to Xcode 15.
  • IDE shortcut to go to a layout file: 'ide://goto?Layout=MainPage
  • New #ModuleVisibility attribute. Value can be Public - default visibility, or B4XLib. B4XLib means that the module methods and fields will not be visible once the module is packed as a b4xlib. Note that it is an IDE feature and is ignored by the compiler.
  • B4XView.Alpha / SetAlphaAnimated property and method.
  • B4XLibs modules and files can be overridden. This is done by adding the module or file to the project. The compiler now accepts it and gives higher precedence to the project files.
  • Debugger improvements including performance improvements and bug fixes.
  • Minimum version is iOS 11 or higher.
  • Updated libraries: B4XFormatter v1.04, BCTextEngine v1.95, XmlMap v1.01, SimpleMediaManager v1.14, iHttpUtils2 3.04, iFacebook v2.1, XUI Views v2.60, iCore v8.50, XUI v2.30, iAdMob 4.00
  • Bug fixes and other small improvements.
v8.30 - March 28, 2023 -
  • Support for Java 14, which is now the recommended version:
  • Firebase 3.00 / iAdMob 3.00 - based on updated SDKs. This is a large change under the hood. If using hosted builder, and not using B4i v8.30, then you need to update the internal libraries in order to compile:
  • Improvement to error logs. The IDE will try to select the relevant message in the long text.
  • Map.Put / CreateMap support Nulls as values. This is mostly important for Json.
  • Updated libraries: iPhone v2.01, iCore v8.30, iFirebaseAnalytics v3.00, iFirebaseAuth v3.00, iFirebaseStorage v3.00, iFirebaseNotifications v3.00
  • Ctrl + Alt + W closes the current code window.
  • Bug fixes and other small improvements.
v8.10 - October 18, 2022 -
  • Support for Xcode 14
  • Bug fixes

v8.00 - July 19, 2022 -

  • 64 bit IDE. This improves performance, especially with large projects.
  • [B4X] [DSE] Designer Script Extensions. This feature was recently added to B4A and B4J. It allows extending the designer script with new functionalities.
  • New DesignerUtils (DDD) library.
  • RUNTIME and SIMULATOR conditional symbols.
  • Updated libraries: SimpleMediaManager (1.13), iXUI (2.2), iUI9 (1.12), XUI Views (2.55), B4XPages (1.11), xCLV (1.74), B4XCollections (1.13), B4XTable (1.22), PreoptimizedCLV (1.21), iHttpUtils (3.00), B4XPreferencesDialog (1.75), iUI8 (1.62), builder (v8.00).
  • Bug fixes and other minor improvements.

v7.80 - October 27, 2021 -

  • Support for Xcode 13.
  • Long hex literal numbers: 0xff00ff00ff00
  • New methods: Bit.OrLong / AndLong / XorLong / ShiftLeftLong / ShiftRightLong / NotLong / UnsignedShiftRightLong / ParseLong
  • List.SortType - stable sort. This means that equal items retain their order. It allows sorting by multiple fields.
  • Fix issue with Unicode sorting and string comparison (
  • Fix the "incompatible types" warning with the relatively new Json type.
  • Json.ToCompactString method.
  • Compiler verifies that the certificate and the provision profile match during compilation.
  • Several debugger fixes: crash on startup, missed assignments in some cases, single field objects were not always observable.
  • Code editor jumps to a sub when adding an event with the designer, including when the sub already exists.
  • SimpleMediaManager is included as an internal library.
  • Updated internal libraries: iCore (7.80), iJSON (1.21), B4XPreferencesDialog (1.74), BCTextEngine (1.92), XUI Views (2.53), iNet (1.81), KeyValueStore (2.31), iBarcode (1.22)
  • Bug fixes and other minor improvements.

v7.50 - July 13, 2021 -

  • IDE performance - several cases where the typing speed became slow were fixed. The speed difference in those cases is significant.
  • IIf - Inline If, also called ternary if as it is an operator with three arguments.
    Label1.Text = IIf(TextField1.Text <> "", TextField1.Text, "Please enter value")
  • As - Inline casting. Allows inline casting from one type to another. Some examples:
    Dim Buttons As List = Array(Button1, Button2, Button3, Button4, Button5)Dim s As String = Buttons.Get(2).As(B4XView).Text
    Buttons.Get(2).As(B4XView).Text = "abc"
    Dim j As String = $"{"data": {
    "key1": "value1",
    "complex_key2": {
    "key": "value2"
    "items": [0, 1, 2]
    Dim parser As JSONParser
    Dim m As Map = parser.NextObject
    Dim value1 As String = m.Get("data").As(Map).Get("key1")
    Dim value2 As String = m.Get("data").As(Map).Get("complex_key2").As(Map).Get("key")
    Dim FirstItemInList As String = m.Get("items").As(List).Get(0)
    For Each item As Int In m.Get("items").As(List)
    More information:
  • b4xlibs support class templates, this makes it possible to add B4XPages classes from B4i.
  • Updated internal libraries: iWebSocket, iFirebaseAuth, iFacebook, iDebug2 and iCore.
  • Bug fixes and other minor improvements.

v7.20 - March 11, 2021 -

v7.00 - January 28, 2021 -
  • New libraries tab.
  • Find all references feature was rewritten and it can now handle complex references.
  • The various IDE notifications also appear in the logs.
  • #CustomBuildAction - direct support for jar files, including Java 11+ UI jars.
  • B4X version of KeyValueStore added as an internal library.
  • New indicators to help understand the code flow with resumable subs.
  • Updated internal libraries: iMedia, iCore, iFirebaseAnalytics, iFirebaseNotifications, iWebSocket, iXUI, iNetwork, B4XCollections, B4XPages, iHttpUtils2, BCTextEngine, B4XDrawer and XUI Views.
  • Project size is displayed in the compilation output.
  • Bug fixes and performance improvements (including a significant improvements related to projects with many b4xlibs).
  • Xcode 12 is required if using a local builder.

v6.80 - July 13, 2020 -

  • Project templates:
  • Comment links:
  • Add New Module - Option to add the module in the parent folder. Useful for cross platform projects.
  • Fix for a bug related to multiple instances of the same class and resumable subs.
  • Fix for an issue related to wrappers (same fix as in B4J and B4A).
  • New project dialog.
  • Updated / new internal libraries: B4XTurtle, B4XPages, XUI Views, BCTextEngine, B4XCollections, B4XDrawer, iEventKit, iXUI, iXUI2D, iAdMob, Firebase, PreoptimizedCLV, B4XTable, iGoogleMaps and iPhone.
  • Selected line is visible in the various syntax colored lists.
  • Other minor improvements and bug fixes.

v6.50 - March 2, 2020 -
  • Internal WebView is now based on WKWebView. There is also a new EvaluateJavaScript method.
  • Launch images were removed and replaced with a launch story board. In most cases you can keep the default white one as apps start very quickly anyway.
    With this change the apps will run with the full resolution on all devices.
  • HttpJob.ErrorMessage returns the server response when there are errors and the response is still available.
  • IDE shows messages about available updates:


  • All the IDE windows preserve their layout.
  • Search results font can be changed in the font picker dialog.
  • Support for Swift frameworks with Xcode 11:
  • Other minor IDE improvements and bug fixes.
Note that there might be subtle behavior differences between UIWebView and WKWebView. Apple will soon reject apps based on UIWebView so the change is mandatory.

v6.30 - December 12, 2019 -

  • Find all references, quick search and find subs / modules tool windows were rewritten and are now syntax colored, the text is selectable and you can jump directly to the selected position:


  • Subs code appears in the quick info windows:


    This code is also selectable and clickable.
  • Show Sub in window:


  • Warning and errors do not hide other information.
  • Copy warnings from list of warnings.
  • Generate 'Create Type' Sub.
  • Copy events.
  • Modules list is saved in lexicographic order to avoid unexpected changes with source control tools.
  • Fixed incorrect missing file warning in some cases.
  • Resources in implicitly referenced b4x libs are now accessible.
  • BarButton with custom font reserved when clicked.
  • DateTime formatters locale is set to en_US_POSIX.

    Use this code to set it to the device locale (less recommended):
    Sub SetDateTimeLocaleToDeviceLocale
    Dim loc As NativeObject
    loc = loc.Initialize("NSLocale").GetField("currentLocale")
    Dim no As NativeObject = DateTime
    no.GetField("dateFormat").SetField("locale", loc)
    no.GetField("timeFormat").SetField("locale", loc)
    End Sub
  • Other minor improvements and bug fixes.

Developers who are eligible for a free upgrade will receive an email with the download link. Other developers will receive a discount offer.

v6.00 - September 16, 2019 -

v5.81 - June 11, 2019 -

  • Bookmarks and breakpoints are listed in the modules tree.
  • Auto bookmarks feature:

    • Recent code positions and designer layouts appear as tabs in the window title.
    • The IDE decides on the list of tabs based on several factors (recency, modifications and others).
    • The list is saved together with the project and restored when the project is loaded.
    • The window can be dragged directly from the tabs.
  • Auto backup improvements:
    • Project is saved before backup, based on the auto save option.
    • Project name added to the backup file.
    • The project folder is configurable (AutoBackupFolder in the ini file).
  • Warning for unused parameters in private, non-event, subs.
  • Additional library folder can be configured with a B4X folder for cross platform libraries:
  • #Event declarations appear in the autocomplete list.
  • Ctrl + Click on layout files from the code:


  • Fix for a long standing issue that caused scope changes of global variables to not always be detected.
  • Compilation performance improvements.
  • TextView / TextField SpellChecking property.
  • Default launch images for iPhone XS Max and iPhone XR were added.
  • #CertificateFile attribute supports absolute paths.
  • Debugger improvements.
  • Simulator builds with the hosted builder (Tools - Build Server - Build Simulator Release App).
    The simulator requires a Mac computer. With this improvement, developers using the hosted builder can make a simulator build, download it and then run it on an online service such as or on any accessible Mac.
  • Bug fixes and other minor improvements.
v5.50 - January 17, 2019 -

v5.30 - September 13, 2018 -

  • Support for C++ / Objective C++ libraries. This is required for iXUI2D which is based on box2d. More information about XUI2D:
  • A QR code appears when building B4i-Bridge. Scan this code with the camera to open the installation link:


  • Many debugger optimizations and bug fixes.
  • Bitmap.Crop and Resize methods are more accurate.
  • Map.Get properly handles cases where there are Null values. Relevant when parsing json strings with nulls.
  • Round method behaves as in B4A and B4J (bankers rounding).
  • Internal libraries updated:
    • iHttpUtils2 2.70
    • iBitmapCreator 4.18
    • iXUI2D 0.99
    • iXUI 1.70
    • iGameView 1.05
    • iGoogleMaps 1.41
  • "folders ready" custom build action step.
  • #CustomBuildAction attribute can be used in all modules.
  • #CustomBuildAction file parameter can include environment variables.
  • Improvements to the subs list behavior (the one above the code editor).
  • Bug fixes and other minor changes.
Developers eligible for free upgrades will receive an email with installation instructions.

v5.00 - May 17, 2018 -

  • Resumable subs in debug mode are optimized in the same way other subs are optimized.
  • Runtime performance improvements including: for loop optimizations, inlined methods, direct field access for properties and others.
    These improvements can make a huge difference in processor intensive tasks.
    As an example, the number of drawings per second with BitmapCreator:


    Draw smilies from BitmapCreator (skip blending): 81,000 per second
    Draw smilies from BitmapCreator (with blending): 700 per second


    Draw smilies from BitmapCreator (skip blending): 620,000 per second (7.5x)
    Draw smilies from BitmapCreator (with blending): 20,700 per second (30x)

    In most cases the difference will not be so large but it will still help your programs run faster.

  • Bit.ArrayCopy and FastArrayGet and Set methods that are useful when very fast access is required:
  • iXUI library v1.70 with B4XCanvas.MeasureText, DrawPath, DrawPathRotated, XUI.Scale, B4XBitmap.Scale and B4XView.TOUCH constants.


  • xCustomListView and iBitmapCreator are included as internal libraries.
  • New File methods: CopyAsync, Copy2Async, ReadBytes, WriteBytes and ListFilesAsync.
  • Custom class templates:

  • Support for Xcode 9.3.
  • Ctrl + Click on class type (Dim rx As RegexBuilder).
  • Autocomplete improvements
  • Libraries deprecation messages.
  • Other minor improvements including fixes for several debugger issues.

v4.80 - January 16, 2018 -

Several important components were rewritten to provide more features and better performance:
  • Visual designer properties grid
  • Visual designer views tree
  • Modules tree (new component)
  • Files tree
The major improvements are:
  • Code modules can be loaded from other folders and can be easily shared between projects (including projects targeting other platforms):
  • Modules and file tree support grouping:
  • Modules are monitored for external changes.
  • Files tree shows the files icons and allows opening the files with external editors:
  • Modules, files and views can be renamed directly from the relevant tree.
  • Full support for drag and dropping files and modules, including support for dragging multiple items.
  • B4A services and activities can be shared with B4J and B4i:
  • New options when adding modules:


    Copy to folder: Copies the module to the project folder (same as the current behavior).
    Link - relative path: Adds a link to the module with a relative path. Useful when the folder is under or close to the project folder.
    Link - absolute path: Adds a link to the module with an absolute path.
  • Deleted files are moved to the recycle bin.
  • Properties grid and views tree can be filtered.
  • Properties grid is much faster and includes new types of editors:


  • The modules internal attributes are sorted in lexicographical order to reduce random changes.
  • iXUI library is now an internal library.
  • Debugger hover window is resizable.
  • Add New Modules / Existing modules menu items in modules tree.
  • Code editor color picker is based on the designer color picker.
  • Open file with default program in Files tree. Also works with double click.
  • Support for opening multiple files at once.
  • Builder - better handling of certificates changes.
  • Compiler error for incorrect calls to resumable subs.
  • Hosted builder - prefer secondary builder option. Useful if a builder partially fails.
  • Page.SafeAreaInsets - Returns the distances from the four edges that are considered safe. This is relevant for devices such as iPhone X where parts of the screen are hidden.
  • NativeObject new methods: MakeEdgeInsets, ArrayFromEdgeInsets, ArrayFromPoint, ArrayFromRect, ArrayFromSize, ArrayFromRange
  • Bug fixes and other minor improvements.

v4.40 - October 23, 2017 -

v4.30 - September 4, 2017 -

  • Localizable IDE. Available in more than 20 languages. A big thank you to the great translators!
  • B4i-Bridge supports iOS 11.
  • All libraries updated to include a 64 bit simulator binary. This allows testing with iOS 11 simulators.
  • Initial support for Xcode 9 beta. There is currently an issue with Swift libraries.
  • Builder supports multiple Xcode installations.
  • ResumableSub object that allows returning values from resumable subs:
  • New bitmap methods:
    • LoadBitmapResize / Bitmap.InitializeResize / Resize - Load and resize a bitmap while optionally preserve the aspect ratio.
    • Crop
    • Rotate
  • iCustomDialog library - Makes it simple to create custom dialogs. Similar to B4A CustomLayoutDialog object.


  • LoadLayout is more flexible and allows setting different types to hold views. This will be used in the future to make the UI related code more cross platform.
  • iHttpUtils 2.6 - Job.GetBitmapResize and support for HEAD, PATCH and DELETE requests.
  • iStore v1.2 - Purchase.RestoredPurchase property.
  • Icon picker - aliases added to FontAwesome icons.
  • Auto complete and auto format improvements.
  • Bug fixes and other minor improvements.

v4.01 - May 24, 2017 -
- Fixes an issue with try / catch blocks inside resumable subs.

V4.00 - May 15, 2017 -

  • Resumable subs - Wait For / Sleep:
    [B4X] SQL with Wait For
    [B4X] OkHttpUtils2 with Wait For


    Complete code:
    Sub btn_Click
    Dim b As Button = Sender
    For i = 10 To 0 Step - 1
    b.Text = i
    b.Text = "Takeoff!"
    End Sub
  • CSBuilder - Builder for attributed strings. Similar to B4A CSBuilder:


  • Debugger improvements:
    • Better handling of multiple installed debug apps.
    • Bug fixes and better logging.
    • Deployment process improved. Auto installation is now the default.
    • SetDebugAutoFlushLogs keyword. When enabled a short pause is added in debug mode when internal logs are printed. This is useful for debugging hard crashes.
  • Find all references - Finds usages in layout files and CallSub calls.
  • Symbols renaming based on Find all references feature:
  • Replace from Quick Search (ctrl + F) results.
  • Icon Picker - Filter results, name tooltips and search by hex value.
  • Auto discovery - The IDE finds devices running B4i-Bridge app automatically:


  • Font.CreateMaterialIcons / CreateFontAwesome methods.
  • iNetwork library was updated with fixes related to handling of UDP packets.
  • Label / TextView / TextField.AttributedText property. Works together with CSBuilder.
  • Page.TitleView - Allows to replace the page title with a custom view (such as a label with attributed string).
  • TextView_LinkClick event. Links are created with CSBuilder.
  • Other bug fixes and minor improvements.

V3.60 - February 26, 2017 -

This update adds support for Swift frameworks. This is an important feature as Swift is becoming popular and many open source projects are written in Swift.

More information about such libraries:

There are currently two libraries:
- iTopNotifications - Sliding notifications
- iSwiftyButton

- The IDE now distinguishes between store provision profiles and other profiles and will not try to install applications signed with store profiles.
- Bug fixes and other minor improvements.

V3.50 - December 27, 2016 -

New features and improvements:

V3.00 - October 25, 2016 -

This update includes many IDE improvements as well as other improvements related to iOS 10, Xcode 8 and Mac Sierra.

  • The docking and layout features are based on a new and improved framework. Floating code editors behave as regular windows.
  • Documentation tool tips while hovering over code elements.
  • Copy links in the tool tips that allow copying code examples.
  • Support for bookmarks.
  • New themes.
  • Keychain handling was updated as required by Mac Sierra to allow non-intrusive deployments.
  • URLs in comments and strings are ctrl-clickable.
  • Unused libraries warning.
  • Custom views support "nullable colors".
  • #Entitlement attribute. Adds a declaration to the entitlement file. This is a new requirement. For example if your app supports push notifications then you need to add this line (assuming that you are using the distribution key, which you should):
    #Entitlement: <key>aps-environment</key><string>production</string>
    Push notifications will not work on iOS 10 without this declaration.
  • #AdditionalLib - Similar to B4A #AdditionalJar attribute. Adds a reference to an external library. Note that third party libraries should be in the builder Libs folder.
  • iAdMob - Support for mediation and rewarded video ads.
    Rewarded video ads:
  • Bug fixes and other minor improvements
V2.80 - July 27, 2016 -

This update adds support for Firebase backend services.

The following services are currently supported:
- Analytics:
- Authentication (Google + Facebook):
- Notifications / push messages:
- Storage. See the B4A tutorial:

The libraries are similar to B4A libraries which makes it simple to implement cross platform solutions.

Other improvements:

- Support for localization of the app name. Tutorial will be available soon.
- Better support for large projects when working with a local Mac (200mb+).
- Support for latest version of AdMob framework.
- Bug fixes and other minor improvements.

V2.51 - March 08, 2016 -

This update fixes an issue with certSigningRequest.csr file being rejected by Apple.

V2.50 - February 15, 2016 -
  • Custom views: [B4X] Custom Views with Enhanced Designer Support
  • iUI8 library:
    • WKWebView - Replaces WebView with better performance and more features.
    • VisualEffectView - A view that creates a blur effect.
    • NavControlExtra - Allows showing and hiding the bars with gestures.
    • TableView - Implemented as custom view (replaces iTableView2).
  • Faster and smoother startup in release mode.
  • Launch images for iPhone 4 are included by default.
  • Debugger improvements, especially relevant to large projects.
  • It is now possible to override main.m and Project-Info.plist by putting the files in the special folder.
  • #Target attribute: Allows targeting iPhone, iPad or both (default).
  • #MinVersion: Sets the minimum version. Default value is 7.0.
  • #CustomBuildAction: Similar to B4J and B4A attribute. Currently the only step available is 1 (beginning of compilation).
  • Notification.NotificationTag - A string that is tied to the notification and can be retrieved when the user clicks on the notification.
  • View.Parent - Returns the view's parent.
  • Support for native libraries packed as tbd.
  • New Google Analytics library.
  • TextView / TextField: New SetSelection method. SelectionStart property can be set.
  • TextView new events: BeginEdit, EndEdit and TextChanged.
  • View.CalcRelativeKeyboardHeight: Important new method that helps with the calculation of the keyboard top point relatively to the current view.
  • Bug fixes and other minor improvements.

V2.30 - October 18, 2015 -
  • Advanced optimizations were added to the debugger which significantly improve the debugger performance.
  • It is now possible to upload applications to iTunes Connect from the hosted builder.
  • Support for Xcode 7.
  • PageViewController - Controller that contains multiple Pages and allows the user to switch between the pages with a swipe gesture:
  • Refresh button in the designer files tab. Copies the designer files to the device. This is useful when you modify an existing file.
  • #DebuggerDisableOptimization attribute:
  • #QueriesSchemes attribute - Due to a new security feature in iOS 9 you need to list all the schemes that your app passes to App.CanOpenURL.
  • #ATSEnabled attribute - ATS is a security feature introduced in iOS 9 that prevents apps from accessing non-ssl web servers. This feature is disabled by default. You can enable it with this attribute.
  • Deployments improvements related to iOS 9.
  • Bug fixes.

V2.00 - July 8, 2015 -

New IDE. Other improvements:
V1.80 - January 21, 2015:

New features and improvements:
  • B4i UI Cloud. Similar to B4A UI Cloud. Allows developers to easily test their layout on multiple devices (hosted by Anywhere Software). Currently there are 4 devices: iPad, iPhone 6+, iPhone 5 and iPhone 4.
  • Take screenshot feature - While debugging you can take a screenshot of the device (Debug - Take Screenshot). Note that the screenshot only includes the app UI elements. Special elements such as camera preview panel will not appear.
  • DatePicker view added.
  • Support for inline Objective C code. This is a very important feature as it makes it much easier to extend B4i:
  • Bug fixes and other minor improvements.

V1.50 - December 23, 2014:

This version adds support for push notifications as well as other improvements:
  • Debugger memory handling was rewritten to avoid retaining unnecessary objects. This is very important as it can lead to different behavior between debug mode and release mode.
  • Const modifier - Allows declaring constants.
  • Performance of 2d arrays was improved.
  • #ProvisionFile / #CertificateFile attributes - Make it simpler to work with multiple provisions and certificates:
  • Phone.AddImageToAlbum / AddVideoToAlbum methods.
  • iArchiver library - Zip / Unzip methods.
  • iEncryption - Cipher.Encrypt / Decrypt is compatible with B4A / B4J B4XCipher libraries.
  • iRandomAccessFile - WriteB4XObject / ReadB4XObject compatible with B4A / B4J similar methods.
  • iNetwork - Support for UDP packets (same API as in B4A / B4J).
  • Support for displaying and creating PDF documents:
  • Build server was updated to allow creating the keystore required for push notifications.
  • Bug fixes and other minor improvements.

V1.20 - November 20, 2014:

This version adds support for designer script and auto scale:

These features make it much simpler to implement flexible layouts.

Other improvements:
  • List.SortType / SortTypeCaseInsensitive - Sorts a list made of user defined types.
  • NativeObject.RunMethodWithBlocks, AsBoolean, AsString and AsNumber methods.
  • Phone object - Currently with two methods: SetFlashlight and Vibrate.
  • Canvas.DrawRectRotated.
  • Bug fixes.

V1.00 - November 12, 2014:
Last edited: