These release notes apply to an earlier version of the software and the corresponding documentation. Some links may no longer be active.

10.2 beta Release Notes

The BlackBerry 10 Native SDK logo with some release notes falling in the background.

You can learn more about the 10.2 beta release in the BlackBerry Native SDK 10.2 beta Release Notes. For more information about the 10.1 Gold release, you can read the Native SDK 10.1 Gold Release Notes.

Upgrading to BlackBerry 10.1 beta Native SDK.

We also have an upgrade guide available that can help you transition your apps to the 10.2 beta release version for BlackBerry 10. Check out the upgrade guide here.

Upgrading to 10.2 beta

Upgrading to the 10.2 beta version of the BlackBerry 10 Native SDK will be slightly different from previous upgrades. We've updated the QNX Momentics IDE for BlackBerry. The updated IDE needs a unique location to run (a different location than the previous version of the QNX Momentics IDE for BlackBerry). You have two options for upgrading:

  • Uninstall the previous version, then install the new version.
    If you uninstall the previous version of the QNX Momentics IDE for BlackBerry, you will be able to download previous versions of the SDKs through the update site of the IDE of the new SDK.
  • Install the new version to a different location.
    If you install the 10.2 beta IDE to a new location, you will have access to the previous version of the QNX Momentics IDE for BlackBerry and the 10.2 beta version. You cannot update previous version of the QNX Momentics IDE for BlackBery to the 10.2 beta SDK. However, you can develop apps for 10.1 using the new 10.2 beta version of the QNX Momentics IDE for BlackBerry.

To download and install the IDE and BlackBerry 10 Native SDK:

  1. Download the QNX Momentics IDE for BlackBerry from the Downloads page.
  2. Complete the installation following the on-screen instructions.
  3. Launch the QNX Momentics IDE for BlackBerry.
  4. Select an API level (10.2 beta in this case) or, if a device is connected to the computer, the IDE automatically detects and installs the appropriate SDK for your device.
For more information about API levels, see API levels.

Multiple API levels

If you're using the 10.2 beta release version of the SDK but you still want to develop for a previous BlackBerry 10 device (for example, the BlackBerry 10 Dev Alpha device or the BlackBerry Z10 smartphone), you need to download an additional SDK by using the update site. To do this, in the QNX Momentics IDE for BlackBerry, complete the following:

  1. In Windows or Linux, click Window > Preferences. In Mac OS, click Momentics > Preferences.
  2. Expand BlackBerry and click API level.
  3. Click Get More.
  4. Navigate to the desired SDK: Beta or Gold.
  5. Click Install on the appropriate SDK.
  6. Allow the IDE to complete the installation, then restart the IDE.

For more information, see Set up your environment.

Finding the appropriate version

Here's a quick summary of the versions you'll need:

  • If you are developing for a BlackBerry 10 Dev Alpha device, you need to download the API level from the update site.
  • If you are developing for the BlackBerry Z10 smartphone or the BlackBerry Q10 smartphone, you need to download an API level from the update site that matches the device version that's provided by your wireless service provider. You can verify the device version by opening the Settings app, tapping About, selecting OS in the Category drop-down list, and checking the version that's listed in the OS Version field.
For more information about developing apps that work on different versions of the BlackBerry 10 Native SDK, see Appropriate version of the BlackBerry Native SDK in the BlackBerry Support Community Forums.

Reverting to an earlier software version

If you've upgraded the software version on your device to a recent SDK OS build, and you want to revert to a software version that's been released by your wireless service provider, complete the following:

  1. Open BlackBerry Link.
  2. Connect the smartphone using the micro USB cable.
  3. At the bottom of the BlackBerry Link window, click the Computer tab.
  4. Select Settings.
  5. Under Reload Device Software, select Reload.
  6. Follow the on-screen instructions.
Any backups created while running a developer build of BlackBerry 10 OS version 10.2 will not be able to be restored once the production BlackBerry 10 OS has been reloaded.

For more information on reverting to an earlier software version, read this knowledge base article.

Highlights - Cascades 10.2 beta

A screenshot of the new QNX Momentics IDE for BlackBerry.

Redesigned QNX Momentics IDE for BlackBerry

The new QNX Momentics IDE for BlackBerry has a new and simplified interface. We've introduced API levels which can help you determine that APIs are available on a device OS version. Now, your debug messages using qDebug() and console.log() display directly in the console. You can also get access to developer forums, documentation, and sample apps straight from the IDE. We have improved the automatic detection of devices that you connect to the IDE as well. With the new interface, we have a new quick and easy method for building your projects and deploying your projects to devices. For more information on the new 10.2 beta IDE, see Getting Started.

The Flurry logo.
The Wi-Fi connection between the BlackBerry 10 device to a compatible TV.
A map in action.

Flurry Analytics

Flurry, the industry-leading analytics service, is now available for BlackBerry 10 apps. Get access to real-time data about how your apps are used. Find out about your customers; who they are, where they live, and what devices they use. You can track anything relevant to your app such as when a consumer makes a purchase, completes a level, or uses a key feature. Here's where you can find more information.

Miracast support

We've added Miracast card support to the BlackBerry 10 Native SDK. Miracast allows you to wirelessly display your app to compatible displays in up to 1080p video format and 5.1 surround sound format. A Miracast card can be invoked to discover and establish a connection to a nearby Miracast device. You can invoke the Miracast card in two modes: play on and show on. For more information, take a look at the Miracast card documentation.

Updated Maps API

We've updated the Maps API to include new classes and new functionality for geographic shapes (GeoShape and GeoPolygon) and lines (GeoPolyline and Polyline). You can use MapView to display a map that the user can interact with. You can also display location-specific information including points of interest and locations using GeoLocation. You can drop pins for points of interest and show bubbles to present more details about a point of interest using Marker.

New in this release

Cascades UI framework

Built-in controls

  • Custom list item - We've added a new CustomListItem class that allows you to create custom list items that has the StandardListItem look. This class acts as the base class when creating new list items and can be used in a ListView. CustomListItem objects allow you to specify the type of content, but also have two optional features: highlights and dividers. A highlight determines what the list item looks like when it's selected, and is represented by the highlightAppearance property. You can use a divider to separate the list item from adjacent items in the list. A flag to indicate whether the divider should be shown is represented by the dividerVisible property. You can specify any Cascades control as the content, which appears in the body of the list item. The content is represented by the content property. For more information, check out the API reference.
  • Accessibility - There is a new Accessibility API to make integration with assistive technologies easier. Some of the core controls, including Control, AbstractActionItem, AbstractDialog, and AbstractPane, contain a new accessibility property that connects an AbstractAccessibleObject to the control. Within the AbstractAccessibleObject, an AccessibleRole object defines the type of control.
  • Delegate - We're introducing a new API called Delegate along with properties delegate and deleteActivationPolicy. The Delegate class provides a generic delegate that instantiates an object when it is active, and deletes it when it's not active. A Delegate can be used on a Tab to let you manage how content is loaded.
  • Tab {
    	id: tab1
        delegate: Delegate {
            id: delegate1
            source: "Chats.qml"
        delegateActivationPolicy: TabDelegateActivationPolicy.Default
The selection of the chats Tab.
  • In the above code sample, instead of including Page directly under Tab, it is included as the source of the Delegate class, which is set as the delegate property in the Tab. The Delegate class is similar to a ComponentDefinition, but provides object lifecycle management similar to ControlDelegate using the active flag. So, you could use Delegate class instead of ComponentDefinition. The TabDelegateActivationPolicy.Default toggles the active flag on selecting tabs. For more details on the flags, take a look at the TabDelegateActivationPolicy API reference.
  • .
  • Custom input for text areas - TextArea objects now allow for custom input through TextAreaInputMode::Custom. Custom input will ignore all key input that Cascades handles for you, and you can explicitly handle the key input in your app. All spell checking and features are disabled as well, but your app could implement its own integration with the Input Method Framework. For more information, take a look at the API reference.
  • Contact pickers - The ContactPicker class has a new signal, excludedAccountsChanged(), which takes a QList of account IDs to monitor changes in the excluded accounts.

Cascades platform APIs

  • Dynamic QML extensions - AdaptableExtensionPlugin is an addition to the QDeclarativeExtensionPlugin interface that makes it possible to create QML extensions that are loaded dynamically, which allows for asset selection. This allows custom QML types to be made available to the QML engine while selecting the correct component using asset selection.
  • A cash register.
  • Payment service - We've added a new PaymentErrorCode class to correspond to error code states from the errorCode() function of PaymentReply. For more information on the additional error code class, take a look at Handling errors in the Payment Service documentation.
  • Homescreen - There is a new function in the HomeScreen class, wallpaperLockState(), which returns the value of the wallpaper lock state as: unknown, locked, or unlocked. These enumerated states are part of the WallpaperLockState class, see the API reference for more information.
  • Invocation framework - There is new functionality in the invocation framework. We've added a new errorCode() function to InvokeReply, and added additional features to InvokeManager. You can now use the selectListItem() function in InvokeManager by passing the InvokeListCursorDirection::Type to replace the current list item with next or previous list item. For more information, take a look at the InvokeManager API reference.
  • QR code - The QrCode API now contains a QrCodeRenderResult that acts as the feedback mechanism for how the QR code was rendered, making error handling related to rendering easier.
  • Cellular - The Cellular API has been updated to contain a CellularDataInterface class which maps the logical name of a cellular data service to its carrier-dependent network interface, provides information about the service's network connection, and allows the activation/de-activation of on-demand connections.
  • Personal information management (PIM) - We've added a new FileAttachment class that includes information about a file attachment, such as file path to the downloaded attachment on the file system, MIME type, and sender. We also now have an AttachmentFilter class that lets you filter lists of attachments based on key-value pairs. The Account class can now check if data is stored externally through the isExternalData() function. The AccountsChanged class now has getter and setter functions for connected accounts, invalidated accounts, synced accounts, and sync started accounts.

    CalendarEvent objects can now get and set their original start time. CalendarService can serialize a calendar event as an ICalendar byte array through the eventToICalendarString() function, and also reply to an invitation with the replyWithMessageId() function. ContactsService can now convert/export/import contacts to VCards. The ICalendarData API can now get and set the body MIME type. The Message API can check if a message should be in the priority inbox through the isPriorityInbox() function. Lastly, the MessageService API has functions to correspond to the additional accounts and attachment APIs.
  • NFC - NFC now allows the use to start a transfer on tap or on demand by using the new NfcShareStartTransferMode class.
  • Screenshot - There is a new Screenshot API that allows your application to capture the contents of the display and save it to the camera roll. The captured image is saved to the camera roll (a sequentially numbered image available in the Pictures application, just like taking a picture with the camera). When capturing the display, you can save the image in any one of the formats specified by ScreenshotFormat.
  • Phone - The Phone API can now determine what lines are available through the availableLines() function.
  • WebPage - The WebPage class has two new signals and slots: enterFullScreenRequested() and exitFullScreenRequested(), for when your WebPage enters and exits full-screen mode.

Cascades Builder

  • QML Preview - We've enhanced the stability and performance of QML Preview, and we've added support for Linux-based operating systems. Also, the rendering capabilities of QML Preview have been extended to provide rendering of more custom controls. With the introduction of API levels, QML Preview now has API level-specific preview per project, allowing you to see your UI depending on the API level of your customer.
  • C++ Support and Templates - The QML editor now recognizes and provides code completion support for custom components written in C++, including properties and functions. We've also updated the project and file templates to correspond to the updated SDK.
  • Code editor improvements - We've improved semantic validation and error checking. You now can specify API-baseline per project. There is a new whitelist feature and code completion displays more relevant proposals for you. Code completion is also faster, lighter, and has better matching. We have improved capabilities and options for auto-editing and formatting. We now have options to configure errors and warning levels. You can now preview your image assets and color definitions. There is also now a link to our online documentation from the in-line hover-help

Back to Top

An image of Tux

The 10.2 beta SDK now supports QML preview on Linux operating systems.

Other features

Back to Top

Known limitations

  • Using older drivers with QML preview

    Any drivers that are more than 12 months old are unsupported. Using unsupported drivers can lead to issues with rendering, such as, complete disabling of the QML preview feature. The user will also be notified about this situation by a dialog box within the QNX Momentics IDE for BlackBerry.
    Workaround: Update to the latest drivers. This issue might occur even with newer graphics cards and the latest drivers. In this case, you should report this issue to BlackBerry developer support with as much detail as possible. You can report to the support community forums. For more information, check out the QML preview troubleshooting documentation.
  • Viewers in the invocation framework

    Using the invocation framework, viewer-related classes (for example, InvokeViewerMessage and InvokeViewerRequest) and functions have been deprecated. The viewer-related classes and functions have been replaced by Card classes and functions. For more information on the Cards API, see the Cards documentation.
  • QRC-based resources

    If you are using QRC to improve performance in your apps, the new asset selection tool may affect your apps. If asset selection is used, an index file is generated automatically. However, this index file does not include contents that are only included in the QRC binary file. Instead, it lists only the files that reside in the assets directory in your project.
    Workaround: Place a copy of QRC-compiled assets in your assets directory. The tool will then include these assets in the index file. When the device loads the app, the appropriate files in the binary are still used and the app continues to benefit from the performance gain of QRC.
  • BBM Social Platform

    Apps installed in the Work perimeter cannot access the BBM social platform. To connect to BBM, your app must be installed in the Personal perimeter.

Back to Top

Fixed in this release

Cascades UI framework


If you created an app using the Cascades StarshipSettings sample app on Windows 8 or Mac OS, then opened the main.qml file, went to Design mode, and changed the theme dimensions, the QNX Momentics IDE for BlackBerry may have become unresponsive.


If you were using a Picker and you set the rootIndexPath property to rootIndexPath: [0], the QNX Momentics IDE for BlackBerry may have become unresponsive.


If you selected text using the selection handle in a TextField in a ScrollView control below a TitleBar, the app would become unresponsive.


When you opened a secondary page, viewed and swiped a list until the action bar disappeared, then started to peek the page back and released the peek before it completed, the action bar would not reappear.


Attempting to select two words in a TextField by placing the cursor in the middle of the second word then holding Shift and tapping the first word would not select the characters in the second word preceding the initial cursor position.


When selecting and highlighting text to copy in a Cascades app, text handle bars sometimes did not appear.

Cascades platform APIs


If you used the PlatformInfo class in a QML file, then called osVersion(), the app would become unresponsive.


When you called setSoundUrl() to post a notification with a specified sound file, the app played the sound specified by the user settings instead.


The BatteryInfo API returned -1 as the value of the full charge capacity.

Cascades Builder


If you added a JavaScript function that included a breakpoint to an app during a C++ debug session, attempting to debug the app again would not prompt you to enable JavaScript debugging.


If QML profiling was started after the application was launched, Caller/Callee information may have been missing from the Events tab and 'Jump to Resources' may have been disabled.


Restarting the QNX Momentics IDE for BlackBerry on a Mac may have triggered an erroneous "Possible crash detected" message, which could be safely ignored.

Back to Top

Known issues

Cascades UI framework


When using a ScrollView, if the scrollMode is set to Both or Horizontal, the UI element extends to past the screen and is unusable.
Workaround: Change the scroll mode of the app itself instead of the single ScrollView.


If you have a group chat on BBM, BlackBerry HUB might still display the chat after you delete it, and the title field might be incorrect.


Sometimes when you're using a WebView control, blank content displays temporarily.


In the StarshipSettings sample app, if you drag a slider handle from one end of the slider to the other and release it, the tooltip for the slider does not disappear as expected.


If you swipe at the exact distance of the scroll/peek threshold, a peek is detected instead of a scroll.


If you type some text in a TextField or TextArea and simultaneously use two fingers to select text in another TextField or TextArea, the focus may remain on the original TextField or TextArea, producing a blinking text cursor in both.


When you peek at a screen that includes a freeform TitleBar, the expandable area of the TitleBar may be revealed.


If you do not have a device password set and you lock your device and then swipe down from the top to put the device in bedside mode, when you try to wake up the device by swiping up, the password dialog is not presented or the UI does not respond to the swipe up.
Workaround: Press the Power/Lock button on the top of your device and hold it for a few seconds, then click Cancel.


In a ListView, calling itemRemoved() and itemAdded() with the same index path may cause the app to become unresponsive.


If you invoke and then dismiss a tooltip using two fingers, the ActionBar may become unresponsive.


If a DropDown automatically receives focus before it is fully populated with options (for example, by pressing Enter to submit an input field when the DropDown is a different control, like a TextArea), this focus will prevent the DropDown from updating as expected.
Workaround: Set focusPolicy = FocusPolicy.Touch on the DropDown.


When you have a WebView and call storage()->clear(), the WebView storage will not be cleared.
Workaround: Use a render fence to set up WebView storage after the WebView has been rendered.


The logs for a Cascades app may contain irrelevant entries.


When using keyboard shortcuts, keys are case-sensitive (for example, "Alt + r" is not the same as "Alt + R").


You might not be able to share a link for a mapped network drive from an email.


When the local storage file system on your device is filled to maximum capacity, the device may become partially unresponsive.


When you set a custom title for the Back button on the action bar, the tooltip will continue to display the default "Back" instead.


When your device language and region are set to Greek and Greece respectively, if you press and hold the V key on your keyboard to enter an accented Greek character, then press the Shift key to capitalize the accented character, it remains lower case.


When you use a validator in a password TextField and the validation fails, the errorMessage icon and text are not displayed.


When you reach the bottom of a view and the action bar reappears, it may cause the scroll bar to display incorrectly and "bounce."


When you display the action menu in a list, and then navigate quickly between pages, sometimes the action menu will open with an empty or incorrect display.


When the keyboard is displayed in an app (for example, if a user taps a text field), the transition of the page content is not in sync with the appearance transition of the keyboard.


When an InvokeQuery object is initialized, it may be locked and calling updateQuery() will not update the query.


You might have trouble highlighting text or copying and pasting text on your device.


When using a TextField, you can't invoke the NumericPassword keyboard. This issue relates to 6757164.


When you change the orientation in the QML Preview of the QNX Momentics IDE for BlackBerry, sometimes the orientation doesn't change correctly.


Asset resolution when using QRC-embedded QML files or resources may not work as expected. This issue relates to 6298916.
Workaround: Use file-based resources instead.


When you use a DropDown control and you try to remove the option at index 0 while the option at index 1 is selected, the app may terminate unexpectedly.


Icons that are used in a SegmentedControl may be cropped at the left and right edges, even if there is width available to display the icons correctly.


Calling bb::cascades::QmlDocument::create() in a non-Cascades app may cause the app to terminate unexpectedly.


The ImageSource property of an ImageView does not respond to changes in bound properties.


The setKey() function in the Shortcut class can erroneously accept invalid strings (for example, strings that don't correspond to an acceptable shortcut).


In the Phone app, if you set a a new Call Forwarding number, in the drop down list, the phone number might have a check mark beside it.


If an implicit or explicit animation occurs immediately after an orientation change of the device, the animation does not play but instead jumps to its final position. For example, this issue may occur if animations are started from the rotationCompleted() or orientationChanged() signals.


When a ListView control's flick mode is set to a non-default value and a slot function is connected to the flickModeChanged() signal, calling the resetFlickMode() function doesn't set the flick mode back to the default value and no signal is emitted.


Default-sized TextField controls in Container controls with LeftToRight layouts can push some Label controls out of view by exceeding the bounds of the Container .

Cascades platform APIs


The BarcodeDetectorVisuals class is missing an API reference. Also, the return value of detected() in the BarcodeDetector class is just void.
Workaround: Use the BarcodeDetectorVisuals.hpp found in \qnx6\usr\include\bb\cascades\multimedia of the installation folder as reference.


When a DisplayInfo object is set to the primary display, then the display name is obtained, sometimes the display name returns as an empty string.


When you're using the BlackBerry 10 Simulator in Z10 mode, the isPhysicalKeyboardDevice() function returns true, even though it should return false.


In the SpellChecker API, the checkWord() function sometimes returns true, even if the word is misspelled. Invoking word suggestions does not return any results.


The PaymentErrorCode class sometimes won't work properly in QML, and cites an error at run-time.


When using the PurchaseReply class, the finished() signal doesn't return true, even after the purchase is made and the onPurchaseFinished() slot function is run.


An InvokeTargetFilter allows you to set the MIME type as '*' and register the filter, even if the filter is restricted.


If you call the InvokeUpdateTargetFiltersRequest.updateTargetFilters() function, a finsihed() signal is not emitted.


When you try to pair using Bluetooth, there is a potential risk for out-of-band (OOB) pairing to fail.
Workaround: Try OOB pairing again.


When reading a URI tag that contains ‘pin’, the BBM application doesn't handle the content of the tag, but the Smart Tags application does and invokes the URI.


When an SMS URI is typed, "Call" is an option in the context menu.


When a parent app invokes a Camera card, then the parent app disables the camera use, the camera is still usable.


When you try to create a Bluetooth connection, there is a potential risk for a low energy (LE) connection to fail.
Workaround: Try connecting again.


When a DisplayInfo object is set to the primary display, then the display name is obtained, sometimes the display name doesn't appear as expected.


An unbound invocation query may cause some invocation targets to appear twice in the menu. This issue also relates to 7215861 and 7301535.


Using the Screenshot API, the capture() function doesn't display a permission requirement message, and fails with the error citing permission denied.


Sometimes when you purchase non-consumable items more than once, no error message is displayed, even if the payment does not go through.


An established TCP connection over the cellular network interface fails when Wi-Fi is enabled on a device that is initially connected to a mobile network with Wi-Fi disabled.


In the SdCardInfo class, the state() and activity() functions do not return proper values when a valid SD card is inserted, instead an unknown state is returned.


Sometimes when signing a BAR file, the content of the manifest .mf file and your Invoke-Target-Filter URI is altered, and your application fails to deploy properly.


On the BlackBerry 10 Device Simulator, if you connect the windowGroupInvisible() and processStateChanged() signals and then minimize the app, neither signal is emitted.


When you have an app with paid digital items listed on the BlackBerry World storefront, each time you call the requestPrice() function, a response is required before sending the next request. Calling requestPrice() multiple times without waiting for a response will result in a PriceReply error.


When you have an app with paid digital items listed on the BlackBerry World storefront and call the requestPrice() function, both a valid SKU value and a valid ID number are required in order to retrieve the price. However, the documentation states that only one of the ID or SKU is required in order to retrieve the price.


InvokeRequest.setMetaData() doesn't work correctly if a QByteArray as part of the QVariantMap is passed in.


Sometimes when texting two numbers separated by a comma, the message is only sent to the first number.
Workaround: Use a semi-colon to separate the numbers.


Opening a large number of cards can cause the device to become unresponsive.


When you set a URL property for a QML object, file paths are case-sensitive when they should be case-insensitive. For example, “FILE:app/native/assets/contacts.json� and “file:app/native/assets/contacts.json� should be treated the same, but are not. Also, a URL that’s defined in QML may result in a URL that has part of the path duplicated.


If there are no list items in the SystemListDialog class, the confirmButton function can't be enabled.


When using cards in an app that is run on the BlackBerry 10 Device Simulator, rotating the simulator may cause the UI to become distorted.


The API documentation for MenuItemInvokeParams.fileTransferMode() states that the file transfer mode will be applied if the scheme of the URI is "file:///". It should also note that the third forward slash represents the file path.


When you use the HardwareInfo class to query for device information, the modelName() function returns the incorrect model name.


On the BlackBerry 10 Device Simulator, if you start the controller from the installation folder and connect it to the simulator, then launch an app, you may not be able to switch the charging state to "charging."


When you add a custom URI to an InvokeTargetFilter and then retrieve the list of custom attributes, the size of the custom attribute list is reported as 0. The documentation does not specify that the returned size will be 0.


Progress toasts sometimes time out incorrectly when show() or exec() is called repeatedly.


On the BlackBerry 10 Device Simulator, if you're using the SdCardInfo API, the SD card channel requires access_shared permissions, but no permissions should need to be set.


If an application has an invoke filter containing an asterisk (*), the application fails to install, showing a failure 884.


The API documentation for the Application.pooling() signal needs improvement. The app needs to be closed to trigger the pooling feature and pooling() signal. In the pooling() slot function, the handler, or somewhere after the pooling() signal is emitted, the app must call poolingCompleted(). If not, the app will be terminated in the normal way. In order to properly have pooling working, the app must be deployed using the 'BlackBerry-deploy' command line program. Pooling will not work if you run your app from the QNX Momentics IDE for BlackBerry using the 'Run as' option.
Workaround: Deploy your app using the command line. To do this, in your project, remove "-devmode" from the makefile. Open a command prompt, navigate to the bbndk folder, and run the following command: bbndk-env. After that, navigate to the app directory, and make the BAR file. If you need to sign the BAR file, use the following command: blackberry-signer -storepass thePassword To deploy the application, run the following command: blackberry-deploy -installApp -device -password DevicePassword


The ProcessState API documentation doesn't contain enough information on the difference between background and stopping Type enumerations.


The API reference for resetEmoticonsEnabled() of the SystemCredentialsPrompt class says the function resets the main text of the dialog box to QString::null. However, the function actually resets the emoticonsEnabled property back to the default value of false.


The move() function of QListDataModel moves items incorrectly. If the 'from' index is lower than the 'to' index, the item is moved to the 'to' index minus 1.
Workaround: If you're moving to any index except for the last, move to an index expected plus one. There is no way to move to the last index with this issue present.


There is missing documentation on QtNfcSubset classes including some enumerations and constructors in QNdefRecord, QNdefMessage, QNdefNfcSmartPosterRecord, QNdefNfcTextRecord, and QNdefNfcUriRecord.
Workaround: Look at the respective header files in the installation folder of the BlackBerry 10 Native SDK.


If invocation requests are pending, sometimes peeking and closing a card does not work.


Invoking multiple cards while in landscape mode distorts the user interface.


When a card is closed, InvokeManager::peekEnded() signal is emitted twice. It should only be emitted once.


Classes that inherit DataModel, such as GroupDataModel, QListDataModel, and XmlDataModel, are missing some description information for implemented superclass functions, such as childCount(), hasChildren(), type(), and data().

Cascades Builder


Wifi debugging may not work depending on the selected target and API baseline.
Workaround: connect via USB instead of wifi prior to debugging.


QML Preview may fail to render some unicode characters when using older API baselines.
Workaround: view using the 10.2 API baseline.


When you're profiling QML, the move forward and backward in the call stack doesn't allow you to traverse the call stack.


Sometimes when you import a project, then immediately run it, the build fails citing a missing config.pri file.
Workaround: Build the project first, then run it.


When you drag and drop a custom component into QML, the custom component is always placed as the last control, even if you have dropped the component above other controls.
Workaround: Drag and drop the component into the outline view or add the component manually.


Depending on the complexity of the QML and the performance of your computer, QML Preview may generate a timeout message.


Sometimes custom component property references are not correctly displayed in QML Preview.
Workaround: Disable QML Preview pre-processing.


Using QML Preview for the UIA project template with the 720x720 device selected, the device orientation is then locked and subsequent attempts to view landscape mode with 768x1280 selected will fail.
Workaround: Close the QML file and reopen it.


When using QML Preview on a Mac for projects using pre-10.2 API baseline, the qmlpreview_jni process may continue running even after the file is closed.
Workaround: Restart the IDE or use QML Preview with a 10.2 API baseline.


QML profiling may generate more binding entries when simulating a BlackBerry Q10 smartphone on the BlackBerry 10 Device Simulator than on a device.


QML profiling may be unavailable over Wi-Fi on Linux platforms.


If your project contains QML assets stored outside the assets folder, Cascades Builder may not be able to correctly discover them, generating error and warning markers within the editor.


The lupdate tool does not correctly handle files with names containing more than one dot.
Workaround: Do not use more than one dot when naming project files.


The application profiler does not correctly report the number of function calls in a shared library of a Cascades app.


When using the Memory Analysis Tool to analyze Cascades projects, the Memory Problems view takes longer than expected to populate the errors.


The conditional breakpoint doesn't work in both a JavaScript section of a QML file and a JavaScript function of a JavaScript file.


On Windows 7 64 bit, QML Preview may fail to render ListView components when zooming.


WebView controls don't render in QML Preview.


Sometimes when editing JavaScript, code completion displays no proposals when there are proposals to display, including on console functions (such as the console.debug() function) or math functions (such as the Math.sin() function). The functions still work at runtime though.

Cascades Exporter plug-in for Adobe Photoshop


Using Cascades Exporter with Windows 8 and CS6 may fail when exporting text layers.

BBM Social Platform


Images that use transparency might not appear correctly in the user's list of BBM applications.


When the Connect to BBM permission (Settings > Security and Privacy > Application Permissions)is toggled from enabled to disabled or from disabled to enabled, the registration and permission states are not updated. This issue relates to 6118318.
Workaround: Restart the app if permissions have been modified.

Command line tools


You cannot build a project from the command line on a Mac.


When using the Apple Darwin command line tool, the DYLD_LIBRARY_PATH environment variable is not set from the environment script. This causes some compiles to fail. If you install additional targets, you need to modify the target scripts in a similar manner.
Workaround: Update the environment script file (e.g in the installation directory to set the DYLD_LIBRARY_PATH environment variable. After QNX_TARGET is set, add the following line and change LD_LIBRARY_PATH to DYLD_LIBRARY_PATH on the final export line.


When using the DOS command line, Windows environment variables are not set with forward slashes “/�. This causes some compiles to fail. If you install additional targets, you need to modify the target scripts in a similar manner.
Workaround: Update environment batch file (e.g bbndk-env_10_2_0_282.bat) in the installation directory to use forward slashes for BASE_DIR, QNX_HOST, QNX_TARGET, and MAKEFLAGS environmental variables.
Example (“C:/bbndk� is the installation directory):
set BASE_DIR=C:/bbndk
set QNX_HOST=%BASE_DIR%/host_10_2_0_1/win32/x86
set QNX_TARGET=%BASE_DIR%/target_10_2_0_282/qnx6
set MAKEFLAGS=-I%QNX_TARGET%/usr/include


Linux command line users need to use the system's java runtime or add an executable bit on features/*/jre/bin and add this to their PATH.


When using the DOS and Linux command line, environment variables are not set to use the packaged JRE from the environment batch file. This sometimes causes any command that uses Java to fail.
Workaround for Windows: Ensure that the following lines are inserted or appear in the environment batch file (e.g bbndk-env_10_2_0_282.bat) that ensures that ‘host_10_2_0_x’ directory points to the installed version:
set DOS_BASE_DIR=%~dp0
for /f "delims=" %%x in ('dir /od /b %DOS_BASE_DIR%\features\*') do set LATEST_JRE=%%x
set PATH=%DOS_BASE_DIR%\host_10_2_0_1\win32\x86\usr\bin;%QNX_CONFIGURATION%\bin;%DOS_BASE_DIR%\features\%LATEST_JRE%\jre\bin;%PATH%

Workaround for Linux: Ensure that the following lines are inserted or appear in the environment batch file (e.g
LATEST_LINUX_JRE=`ls -lrt $BASE_DIR/features | awk '/ {f=$NF};END{print f}'`


When using the Linux command line, the LD_LIBRARY_PATH environment variable is not set from the environment script. This causes some compiles or commands to fail. If you install additional targets, you need to modify the target scripts in a similar manner.
Workaround: Update the environment script file (e.g in the installation directory to set the LD_LIBRARY_PATH environment variable. Add the following line after QNX_TARGET is set:

QNX Momentics IDE for BlackBerry


In the QNX Momentics IDE, installing more than one API Level at the same time will result in an error.
Workaround: Only install one API Level at a time.


If you uninstall or abort the installation of the BlackBerry 10 simulator from within the IDE, it will no longer appear in the Device Manager list or be available to download from within the IDE.
Workaround: Download the BlackBerry 10 simulator from the downloads page.


On Mac OSX, launching the BlackBerry 10 Simulator from within the IDE may cause Momentics to crash.
Workaround: Start the simulator by running the simulator .vmx file and then connecting it to the IDE.

Back to Top

Looking for release notes for previous releases?

You can find the release notes for the previous releases on the following pages:

Back to Top

Last modified: June 12, 2013

  1. 1. Download the tools

    Before you start developing, you'll need to visit the Downloads tab. Here you'll find downloads for the BlackBerry 10 Native SDK, BlackBerry 10 Device Simulator, and some other useful tools.

  2. 2. Try the sample apps

    Now featuring a filter control, the Sample apps tab allows you to search for samples by name or by feature.

    Select either the Core or Cascades radio buttons to display the samples relevant to you.

  3. 3. Educate yourself

    The Documentation tab contains tons of examples, tutorials, and best practices to guide you along the path towards building an awesome app.

    You can access all the documentation that you need in the left-hand navigation.

  4. 4. Start developing

    The Reference tab is where you'll find essential details about how to use our APIs.

    You can use the left-hand navigation to choose how you would like to browse the reference: by module, by topic, or alphabetically. If you have an idea of what you are looking for, start typing it in the Filter box.