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

10.1 Gold Release Notes

This is the gold release for the 10.1 version of the BlackBerry 10 Native SDK. This release includes new features that support both the BlackBerry Z10 smartphone and BlackBerry Q10 smartphone. You can visit the Downloads page to download the installer for this gold release.

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

This image shows the update button in the QNX Momentics IDE.

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 target from the update site.
- If you are developing for the BlackBerry Z10 smartphone, you need to download a target 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.

You can find more information about new features, known issues, and fixed issues (including installation issues for the BlackBerry 10 Native SDK) in the Native SDK release notes.

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

This document contains the following sections:

Upgrading to 10.1 Gold

There are two recommended ways to upgrade your version of the BlackBerry 10 Native SDK, depending on the version of the SDK that you currently have installed:

  • If you're upgrading from the 10.0 Gold version of the SDK to the 10.1 Gold version, you can either uninstall the 10.0 version and install the 10.1 version in the same location, or you can install the 10.1 version in a different location than the 10.0 version. You can also use the update site in the QNX Momentics IDE to download the 10.1 version.
  • If you're upgrading from the 10.1 Beta version of the SDK to the 10.1 Gold version, you should uninstall the previous beta version before you install the new Gold 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.1 will not be able to be restored once the production BlackBerry 10 OS has been reloaded.

For more information, read this knowledge base article.

Highlights - Cascades 10.1 Gold

This is a header image for the profiling highlight.

Cascades Profiler

You can now use the QNX Momentics IDE to profile JavaScript and QML code, in addition to C++. The Cascades Profiler shows you information about frame rendering, image loading, compiling and creating QML files, time consumed by running QML bindings, and QML signal handlers. To learn more, visit the Profiling documentation.

This is a header image for the keyboard devices highlight.

Support for keyboard devices

This release contains many new features for supporting keyboard devices. All core controls have had visual updates to support the new screen resolution and the different themes available (light and dark). To learn more about developing apps for keyboard devices, visit the Devices characteristics documentation and the UI Guidelines.

This is a header image for the asset selection highlight.

Asset selection

To help you develop for both all-touch and keyboard devices, you can use the asset selector feature that's built into the QNX Momentics IDE. You can use a different set of visual assets (QML files and images) depending on the resolution and theme of the device that your app runs on. To learn more, visit the Static asset selection documentation.

New in this release

Cascades UI framework

Built-in controls

  • Custom pickers - You can now create your own custom picker controls using the Picker class. You can choose from a predefined picker type using PickerKind, and you can specify your own picker item visuals using PickerItemComponent. Visual node objects can be provided as picker items by using a PickerProvider.
  • Text filters and validators - You can now set a text filter on a TextArea in your apps. You can also specify a validator, which is represented by the Validator class, on TextField controls.
  • Auto-hiding action bars - When you develop your apps for the smaller screen size of the upcoming BlackBerry Q10 smartphone, you can take advantage of new functionality that hides the action bar automatically in certain circumstances. If your app includes a ListView or ScrollView as its main control (that is, as the root control of your Page), as users scroll, the action bar is hidden automatically so that additional items are visible on the screen. The action bar reappears when users reach the end of the list or start scrolling the other way.
  • Sticky and non-sticky title bars - In addition to action bar changes that are designed for devices with smaller screens, the title bar now includes sticky and non-sticky modes. When you use a title bar in conjunction with a ListView or ScrollView, a non-sticky title bar will scroll off the screen when users scroll the list or content vertically. This behavior can give your app a bit more screen space on devices with smaller screens. In contrast, a sticky title bar always remains at the top of the screen.
  • Freeform title bars - You can now customize the title bar that appears at the top of pages in your app. The new freeform title bar lets you add a wide range of UI controls (such as images, labels, check boxes, and more) to the title bar. You can also specify that you want the title bar to be expandable, and you can provide selectable options to display when the title bar is expanded.

Other features

  • Shortcuts - You can now create your own key shortcuts and system shortcuts by using the Shortcut and SystemShortcut classes, respectively. Keyboard shortcuts improve usability and user experience by decreasing the effort required to perform commonly used actions in an application. To learn more, visit the Physical keyboard shortcuts documentation.
  • Key listeners - In addition to key shortcuts and system shortcuts, you can use key listeners to handle any key press that produces a character. You can implement key listeners by attaching a KeyListener to any control that inherits from Control or AbstractPane. Key listeners give you more control over how you listen for and handle keyboard input in your apps. To learn more, visit the Cascades keyboard events documentation.
  • Support for keyboard devices - With the future release of the BlackBerry Q10 smartphone, you'll need to make sure that your apps work well and look great on this new device. We've given you a head start by updating many core features to support keyboard devices. Core controls have been updated and the QNX Momentics IDE has been enhanced. We've also prepared some documentation to help you develop or adapt your apps for keyboard devices:
    • Device characteristics - Describes some of the differences between all-touch and keyboard devices, and provides some guidelines and best practices to consider when developing for both types of devices.
    • Resolution independence - Includes strategies for developing a UI that doesn't depend on the resolution of the target device.
  • Asset selection - We wanted to make it as easy as possible for you to develop apps for both all-touch and keyboard devices that run BlackBerry 10. The asset selection feature, which is included as part of the BlackBerry 10 Native SDK, lets you create and use entirely different sets of visual assets depending on the characteristics of the device that your app runs on. You can:
    • Use assets that are designed for resolutions of 768 x 1280, 720 x 1280, or 720 x 720.
    • Use assets that are designed for light or dark themes.
    • Create a folder structure in your Cascades project that separates your assets, making them easier to manage.
    • Let Cascades choose, at runtime, the set of assets that's best for your target device.
    You can learn more about asset selection by visiting the Static asset selection documentation.

Cascades platform APIs

  • Sandbox testing for the Payment Service - You can now use a sandbox account to test your apps that use the Payment Service. By using this sandbox approach, your apps communicate with the BlackBerry World servers to test the digital goods purchases that your app offers, but it doesn't cost you any money for this communication. To learn more about this feature and how to use it in your apps, read the BlackBerry Payment Services: Return of the Sandbox blog post.
  • Geolocation markers - You can now use the GeoLocation and Marker classes to set geolocation markers to use when a location is not in focus.
  • MapView window/world coordinates - The MapView class now includes the windowToWorld() function that maps window coordinates to world coordinates, as well as the worldToWindow() function that maps world coordinates to window coordinates.
  • Phone - The callUpdated(), lineRemoved(), and lineUpdated() functions have been added to the Phone class.
  • Remember Me options - Additional "Remember Me" options have been added to the SystemDialog, SystemPrompt, SystemCredentialsPrompt, and SystemProgressDialog classes.
  • Camera availability - You can now determine whether the camera resource is available for you to use by calling cameraResourceAvailable(), a new function in the Camera class.
  • Contact list exclusions - When you search for contacts using the ContactListFilters and ContactSearchFilters classes, you can now exclude a specific account's contacts from the results by using the new setExcludeAccount() and setExcludeAccounts() functions.
  • Query for display technology - You can use the new displayTechnology() function in the DisplayInfo class to gather more information about the display on a device (for example, whether the device uses an OLED display).
  • Invocation custom attributes - Functions (such as addCustomAttributeValue() and removeCustomAttribute()) have been added to the InvokeTargetFilter class that let you manipulate custom attributes for invocation target filters.
  • Message transactions - A new class, MessageTransaction, has been added that represents a discrete message or conversation transaction in the message service.
  • Audio manager handles - In the NowPlayingConnection class, which manages the playback of audio and video files, you can now set the audio manager handle and respond to the corresponding signal when the handle is changed.
  • Low-light camera support - You can use the camera_get_lowlight_status() to determine if the camera considers the current conditions to be low in light. The CAMERA_FEATURE_LOWLIGHT_STATUS enumerator in the camera_feature_t enumeration is available for low light notification.
  • Advertising Service requests - When your application submits an ad request, the Advertising Service SDK sends the location of the user's device along with the ad request to the Advertising Service mediation layer. This information enables ad network partners to supply more relevant ads based on the location of the device. If you don't want to send the device location along with the ad request, you can ask the user to turn off location-based ads.

Cascades Builder

  • Cascades Profiler - We've expanded the ways that you can gather performance information about your apps by including the Cascades Profiler. This tool lets you profile JavaScript and QML code and helps you identify areas of your app that could run more efficiently. You can:
    • Start profiling as soon as your app starts, or start and stop profiling manually at any point while your app is running.
    • Save profiling data to a file for later analysis.
    • View details about the three main QML threads in an app: frame rendering, image loading, and QML engine.
    • Examine each event in a thread in greater detail.
  • Code editor improvements - The code editor in the QNX Momentics IDE now includes better code completion, improved validation, formatting enhancements, hyperlinking to custom components, and much more.
  • Icons and splash screens - The editor for the bar-descriptor.xml file now provides the ability to specify icons and splash screens for the BlackBerry 10 keyboard device.

Back to Top

Other features

Back to Top

Known limitations

  • Issues with sending output to the console

    In this release, the qDebug() and console.log() functions (and related functions qWarning(), qFatal(), and qCritical()) do not work the same way as they did in previous releases. Previously, when you used these functions in your JavaScript/QML code, the function sent the debug information to the console, and you could view the information in the Console view in the IDE. Now, this function does not send output to the console. Instead, this function sends debug information to the slogger2 log.

    You can now view all slogger2 log information in the Device Log view in the QNX Momentics IDE. To open the Device Log view, on the Window menu, click Show View > Other. Expand Debug and select Device Log.

    If you want to view log information in the console, you can use the fprintf() function with stdout or stderr as the output stream to receive output directly to the console. Or, you can use a function similar to the following:

    void myMessageOutput(QtMsgType type, const char* msg) {
        fprintf(stdout, "%s\n", msg);

    Then, you can register this handler function with QDebug by calling the qInstallMsgHandler() function in your main function after the default Application creation, similar to the following:

    int main(int argc, char **argv)
        Application app(argc, argv);
        #ifndef QT_NO_DEBUG

    After this, qDebug() calls will be logged to the console. However, you should keep in mind that this approach may adversely affect the performance of your applications.

  • QML preview considerations

    There are several considerations you should keep in mind as you work with the QML preview in the QNX Momentics IDE.

    QML preview in Linux

    QML preview functionality is not working on Linux, and only works on Windows and Mac OS at the moment. Linux users can deploy their applications to a device or simulator to test the look of their QML components.

    Using older drivers with QML preview

    Any drivers more than 12 months old are unsupported and can lead to issues with rendering, including, but not limited to, 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.
    Workaround: Update to the latest drivers. Note that this issue might occur even with newer graphics cards and the latest drivers. In this case, you should report this issue to BlackBerry with as much detail as possible.

    QML preview with C++ objects

    The QML preview can load and render components based on the Cascades plug-in only (in bb.cascades 1.0). Objects that are registered in C++ in your project are not understood by the QML preview and cannot be loaded and rendered.

  • Viewers in the invocation framework

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

  • Push pins for geographic data on a MapView control

    Push pins are added to MapView through MapData. MapData for a Mapview is obtained by calling the mapData() function. Push pins can be added through MapData::add(bb::platform::geo::Geographic *geo) or MapData::add(const bb::platform::geo::GeoList &elements). If you add the push pins to the MapView, the push pins will not render at all. Subsequently, the user is not able to interact with push pins. Bubbles around the push pins will not render either. The APIs do not show any errors during compilation or cause an unexpected termination at runtime.

    You can learn more about this issue, including a proposed solution with a complete sample app, by reading the BlackBerry 10 Cascades MapView blog post.

  • 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.

  • Creating the StampCollector sample project

    If you are using device target version and you try to create the StampCollector sample project in the QNX Momentics IDE, the project cannot be created due to path changes of certain assets. This limitation will be resolved in a subsequent release.
    Workaround: Download the updated StampCollector project from the Cascades Sample Apps page.

Back to Top

Fixed in this release

Cascades UI framework


If you created a QML file with a TextField or TextArea, then invoked QML preview, it may have triggered excessive battery drain on laptop computers and high CPU usage.


In a QML file, if you had set the inputRoute.primaryKeyTarget property of a TextField to true, then typed some text on the device keyboard, text may not have appeared in the TextField.


In a ListView, the last element of the list might not have been visible, but the TitleBar was visible. Keyboard shortcuts to hide the TitleBar were unresponsive.


When you clicked the option tab of a TitleBar, the active tab may have changed without triggering the selectedIndexChanged() signal.


When you embedded a horizontal ScrollView within a vertical ScrollView, then touched and dragged the horizontal ScrollView diagonally with a larger horizontal change than vertical change, the ScrollView would scroll in both directions, instead of just horizontally as expected.


When you embedded a SegmentedControl within a vertical ListView, then touched and dragged the SegmentedControl downwards, the ListView did not scroll down.


If you tried to page down on a ListView by pressing the Space bar, in a page that had a non-sticky TitleBar displayed, the keyboard shortcut may have been unresponsive.


When using the scrollRole property on a ListView, if the list's DataModel emitted an itemsChanged() signal, the list would animate and scroll to the bottom instead of the top.


When you used a FreeForm TitleBar with a DropDown on a page that also contained a ListView, both the DropDown and ListView may have responded to touch input in unexpected ways.


Apps compiled with the 10.0 release of the BlackBerry 10 Native SDK did not have an .assets.index file, which prevented image assets from being found when working with the 10.1 release.


When the action menu was displayed in an app with a ListView, navigation keyboard shortcuts acted on the ListView instead of being ignored.


If you had a TextArea with disabled input flags, then typed some text in the TextArea and pressed Enter, a new line was not generated.


Pressing the Alt key is no longer required to enter numbers in a date/time with a device keyboard.


If you had a Page with a ListView as the root control, you sometimes couldn't scroll to the top of the leading visual.


When you entered many lines of text in a WebView, you may not have been able to reset the height of the WebView to its minimum height.


ListView may not have reacted to system shortcuts.


When you had a TextField with the submitKeyFocusBehavior set to Keep, and the user pressed Enter more than once, unwanted new lines would sometimes appear.


When a WebView was positioned below a Container inside a ScrollView, the WebView content was obscured behind the Container.


When using the BlackBerry 10 Native SDK with QML Preview enabled, setting the text property in a TextField may have triggered high CPU usage and excessive battery drain on the device.


When you included a user stylesheet in your assets, then referenced it in a WebView, the WebView ignored the userStyleSheetLocation property and the specified stylesheet was not applied.


When you used a NavigationPane, the popTransitionEnded() signal was not emitted when a Page was popped off of the NavigationPane stack.


When using WebViewCanvas and WebViewContentSecurityQML, the WebView height may have flickered.


Buttons with a width of less than 138 pixels appeared distorted on keyboard devices, because of the change in minimum width for those devices.


When the overflow menu was shown in a card or sheet, dragging left to right may have erroneously started a peek.


When you have tabs shown on the action bar, if you hid the action bar and then added new content to the current tab, the badge appeared at the same time that the action bar reappeared, instead of appearing following a delay.


When you added a fourth new tab to TabbedPane with the action bar hidden, when the action bar reappeared it may not have displayed correctly.


If you were using multiple input languages in a Cascades app that contains many controls, the Alt + Enter shortcut to switch languages did not function. Instead, the Alt + Enter shortcut would move the focus to the previous control.


When you moved through a long list using Top and Bottom keyboard shortcuts, the list may have displayed empty spaces.


The integer string is now correctly aligned in the tab menu.


Disabled items in the context menu were sometimes still animated when selected.


If you used a DropDown and there were no other components on the same page to receive focus when the DropDown was closed, when you pressed Enter on the DropDown, it did not close.


If you used a DateTimePicker and there were no other components on the same page to receive focus when the DateTimePicker was closed, when you pressed Enter on the DateTimePicker, it did not close.


WebView now supports YouTube playback in Cascades apps.


When the device was in bedside mode and you tried to use the keyboard shortcuts to open and collapse the time picker, the device would not respond.


When running any app with a TitleBar control that can be hidden, if you hid the bar it would immediately disappear without displaying the transitional animation.


When a DateTimePicker was placed next to another, no default margin appeared between them.


When you used a NavigationPane and a page was being peeked at, if that page was removed or deleted, all of the pages in the NavigationPane may have been popped.


If you used a DateTimePicker for some languages or locales, it may have produced an incorrect date format.


When using a SegmentedControl and the padding of an option was changed, the SegmentedControl was updated to reflect the new size but the selected option did not update.


If the language on your device was set to Arabic or Hebrew with RightToLeft input, entering a string longer than the visible width of the text field caused the text field to continuously scroll back and forth.


The "Shift+Space" application shortcut combination did not work correctly.


When you used a ListView and you tried to obtain data from the associated data model by using ListItemData, some of the values may not have been populated correctly.


An ImageView may not have animated correctly the first time its size was changed dynamically as an app ran (for example, by showing or hiding the virtual keyboard).


In some apps, if you tapped the Symbol key, the symbols might not have appeared.


When running an implicit animation on an ImageView, the ImageView may not have stayed centered, and instead may have animated outward with inconsistent direction.


When you highlighted words and then used two fingers to zoom in or out, the blue selection cursor would become unresponsive.


Some Cascades apps could enter a state where they no longer rotated properly, and they might potentially have stopped responding and required a reset to recover.


If you had set your device language to Spanish and touched and held text in an app, you might have seen some menu items in English.


When you pressed the Enter key in a TextArea, focus management consumed the key event before the TextArea could consume it, so no shortcut was set.


In some cases, list items disappeared when multiple items were added to the list.


The LocalizationManager class was implemented as a singleton with a static instance, which was not thread-safe and could cause the QNX Momentics IDE to terminate unexpectedly.


When you used a StandardListItem in a list, sometimes the list item retained its activated visual state (by changing color) even when the item was not active.


If you double-tapped a fine cursor for text selection and then moved it before the fine cursor disappeared, the application might have terminated unexpectedly.


If you had a ListView with multiple top-level items, some of the top-level items disappeared when sub-items were added to the top-level items.


To support foreign windows in Cascades, the main window must be made transparent when there are foreign windows in the scene. For example, when invoking cards, the main Cascades window marks itself as transparent. If another card is pushed onto the first card, the first card also becomes transparent. The main window was never made opaque after the first card was invoked, which may have caused performance issues and unnecessary power drain.


If you selected text on the screen and then rotated your device from portrait to landscape orientation, the text selection handles would lose their place relative to the selection.


If you tapped and held on a fine cursor, the context menu was not invoked.


Switching from English to another language didn't translate the context (or cross-cut) menu during a cut, select, copy, or dismiss action.


When you attempted to select text with two fingers, sometimes the text wasn't selected.


If your application opened a Sheet and closed it using a timer, memory from the sheet might not have been freed after it was closed.


If you were using your device in Arabic and you tapped and held to open a menu, text in the menu might have been truncated.


If you set the focusRetentionPolicyFlags for a text field to FocusRetentionPolicy.LoseOnScroll, the text field could not be focused.


Sometimes when selecting text, the text selection handles on either side of the text didn't follow your finger when moved.


The text on the tab menu would be larger than expected.


If you were using your device in portrait orientation and then switched to landscape orientation, your device might not have displayed as expected.


When setting focus to multiple DropDown controls with the keyboard, only the first DropDown would display the entire control.


In a TextArea, if you pressed and held Enter to focus on the next item, the focus would instead skip past that item to the next item in the tab order.


When returning from a peek transition, the TitleBar from the previous view sometimes incorrectly appeared in the returned view.


If you pressed and held on the whitespace of a StandardListItem, the context menu was not displayed.


If you entered long text into a TextField so that the TextField scrolled to the right, then tapped outside the control to drop focus, the text in the TextField might not have scrolled back to the beginning.


The space between title and description on a StandardListItem was smaller than intended.


Cascades applications logged statements in a .log file instead of a .slog file.


Right-to-left language text started on the left instead of on the right when using a TextField or TextArea.


When you used a GridListLayout object, calling the setSpacingAfterHeader() function did not add spacing after the header. If the spacingAfterHeader property was connected to a slot function, a signal was not emitted when the setSpacingAfterHeader() function was called, as it should have been.

Cascades platform APIs


When you compiled and launched an app that uses multiple target types (such as cards and applications), then queried for cards, the card targets from the application were not returned.


When you had more than two cards stacked on the parent app, and then performed a peek root from the top card, the cardPeekStarted signal was not emitted.


When DataSource::setSource() was called, it used bb::UiToolkitSupport::absolutePathFromUrl() to translate the source URL. This function would log a warning if the URL was using a scheme other than "asset" or "file" (including the "http" scheme).


When you had the setProgress() function set at 100, the ProgressDialog class displayed an incorrect progress bar.


When you used the invocation framework and you tried to query another application's filter (for example, NFC), the filter query may have been successful. You should not be able to query another application's filter and should receive a TargetNotOwned error.


When an app used cards and the cards were peeked at many times in quick succession, the device may have become unresponsive or the app may have terminated unexpectedly.


When using the windowGroupFullscreen() signal in the Application class, the documentation now notes that the window group ID of a window will not be available until a window message has been processed by the application.


When you used the Message API to read the list of SMS messages on the device, and you tried to read the body of the messages, the body couldn't be accessed. The message body would appear as an empty string.


When using application targets in the invocation framework, an app may have been able to incorrectly modify the targets of other applications on the device, even if the app was not the owner of the target.


When using a dialog box in your app and the dialog request could not be completed, the appropriate finished signals were not emitted. For example, this situation might have occurred when a PPS channel could not be opened.


When you used an SqlConnection object and tried to add an empty QVariantList, the empty list reused the previous list item's data and was added to the SqlConnection. The empty list data should not have been added.


The BatteryChargingState class returned the incorrect charging state when the charger was unplugged.


The appearance of the barcode detector control is now consistent with that of other controls.


The Marker class is now available.


The AttachmentDownloadStatus class is now available.


If you were using the InvokeTargetReply class and the error() function returned a value other than None, the targetType() function returned values outside the defined range.


If your application used the Card class and a SystemDialog control, and called SystemDialog.exec() to display the dialog, your application could sometimes have terminated unexpectedly.


The NFC secure element APIs now support, and enforce where appropriate, the Global Platform ACF format. If you were using certain Gemalto SIMs, you may have found that you received the error response NFC_RESULT_SE_REQUEST_REJECTED from the APIs due to a "deny all" rule in the GlobalPlatform ACF applet that Gemalto load onto their SIMs. You should explicitly whitelist any particular AID that you want your application to have access to by providing an "any application can access AID X.Y.Z rule".


If your application had the post_notification permission and the application ID, <id>, defined in the bar-descriptor.xml file was longer than 50 characters, the notification service terminated unexpectedly.


The CalendarEventPicker and CalendarEventPickerError classes are now available.


The MapView API didn't work on the BlackBerry 10 Device Simulator.


When using certain Qt classes (such as Qtimer), Cascades may not have properly unblocked these classes when an application returned to a fullscreen state from a thumbnailed state.


In some cases, you might have seen a %20 in a Title instead of a space.


If you were using the SqlDataAccess class, calling the execute() function on a table that didn't exist returned an error message that lacked information about the non-existence of that table. The message "No query/ Unable to fetch row" was returned.


If you deleted an app whose icon was dimmed, the app might not have been deleted and might have reappeared when you restarted your device.


Sheet controls that were opened from the application menu could be displayed only once.


If the language on the device was set to Arabic, the Calculator app showed a 'k' as the decimal point.


MenuManager would not create the menu if you had set the TargetType to -100.


Setting a button area limit on a SystemCredentialsPrompt caused the confirm button to be enabled.


The JsonDataAccess class could not handle JSON files that were saved in UTF-8 with byte order mark (BOM).

Cascades Builder


In the QNX Momentics IDE, when you opened the QML code template under Preferences, then modified and removed the code template, that modification was not synced to the Asset view.


When you selected 'Insert spaces for tabs' under Text Editors preferences, pressing Tab may have resulted in no action, or moved the cursor to the next line.


Assets that you used in your projects may not have been discovered or updated correctly in the QNX Momentics IDE. This issue affected primarily images, but may have occurred with other asset types. For example, if you dragged an image into the QML preview window, the image may not have been displayed.


After deploying an application to a device or simulator, subsequent attempts to use QML preview within the IDE may have failed.


The QML editor did not allow you to add more than one empty line (that is, by pressing the Enter key multiple times). The issue was present only if you used the "Windows/DOS" style for your files in the QML editor.


When you saved Cascades Profiler data to a file, nested spans may have been double-counted.


When you added a library to a Cascades project, the Add Library wizard contained instructions that were incorrect.


After building a project in the QNX Momentics IDE, the project may have compiled correctly but, in some cases, it may have shown header files as unresolved.


If you created a Cascades project with a name that included a hyphen (-), the app could not be deployed to a device.


If a color was set on text, the color shown in the Properties view was incorrect, though the color appeared correctly in QML preview and on the device.

BBM Social Platform


When you called ProfileBox::requestRetrieveIcon() to obtain the profile box icon that was registered with BBM Social Platform, the icon was not retrieved.

Back to Top

Known issues

Cascades UI framework


In the Cascades 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're using a Picker and you set the rootIndexPath property to rootIndexPath: [0], the QNX Momentics IDE may become unresponsive.


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 will become unresponsive to some actions.


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 the next control), 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.


If you have a ScrollView below a TitleBar and the ScrollView contains text input, then you type some text in a TextField, select the text and grab the selection handle, the app will become unresponsive.


When using keyboard shortcuts, keys are case-sensitive (that is, "Alt + r" is not the same as "Alt + R"). They should be case-insensitive.


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 you open a secondary page, view and swipe a list until the action bar disappears, then start to peek the page back and release the peek before it completes, the action bar will not reappear.


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 scrollbar 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 you move the cursor from a position in the middle of the second word in a text field, and hold the Shift key and tap the screen to select the first word in the text field, sometimes it does not also select the part of the second word preceding the cursor's initial position.


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


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


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


When using a TextField, you cannot invoke the NumericPassword keyboard.


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


Asset resolution when using QRC embedded QML files or resources may not work as expected.
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 (that is, strings that don't correspond to an acceptable shortcut).


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.


A ListView component defined in QML with a GridListLayout displays only the grid header and does not display data within each cell.


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


If you use the PlatformInfo class in a QML file, then call osVersion(), the app will become unresponsive.
Workaround: Use this class in C++ instead of QML.


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.


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


If you stack many cards on top of each other, it will lead to low system resources. This may lead to UI distortion, or in some cases cause the device to stop responding.


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 and the app is run on the BlackBerry 10 Device Simulator, rotating the simulator may cause the UI to become distorted.


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 BatteryInfo API returns -1 as the value of the full charge capacity.


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 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 pop-up 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.


On the BlackBerry 10 Device Simulator, calling secondaryDisplayId() from the DisplayInfo class returns invalid display, and no secondary display is simulated.


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


If you create an app using the Cascades StarshipSettings sample app on Windows 8 or Mac OS, then open the main.qml file, go to Design mode, and change the theme dimensions, the QNX Momentics IDE may become unresponsive.


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.


On Linux, if you deploy a Cascades app to the BlackBerry 10 Device Simulator using the Debug As option, the application BAR file may not be generated in time for a successful deployment.
Workaround: Deploy multiple times until the action completes successfully.


If you run a C++ debug session on an app, add a JavaScript function while the C++ debug session is still running, and then set a breakpoint in the JavaScript function and debug the app again, you are not prompted to enable JavaScript debugging.


If you create a list with a context menu, profile the app using the Cascades Profiler, and then check the binding data of the list items on the Event tab, the call number may be double the correct size, with each list item binding twice.


If QML profiling is started after the application is launched, Caller/Callee information may be missing from the Events tab and 'Jump to Resources' may be disabled.
Workaround: Ensure that the 'Start profiling during application launch' checkbox is enabled prior to profiling.


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.


"When previewing the QML file created using the UIA project template, if you switch between devices and then change the orientation to landscape mode, landscape mode may not display properly and the zoom controls may stop working.
Workaround: Close the QML file and reopen it."


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


Restarting the QNX Momentics IDE on a Mac may trigger an erroneous "Possible crash detected" message, which can be safely ignored.


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.


You may not be able to run a JavaScript debug session over Wi-Fi.


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.

BBM Social Platform


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


When BBM Connect (Settings > Security and Privacy > Application Permissions) is toggled from on to off, or from off to on, the registration and permission states are not updated.


If BBM Connect (Settings > Security and Privacy > Application Permissions) for an app is turned off before launching the app, toggling BBM Connect doesn't update the registration status of the app.
Workaround: Turn BBM Connect on before launching the app.

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: May 1, 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.