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

Release Notes

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 beta 2 app to beta 3. Check out the upgrade guide here.

Highlights - Cascades beta 3

The BBM Social Platform highlight.

BBM Social Platform

Engage users with the social features of BlackBerry Messenger by connecting your app to the BBM Social Platform. Access BBM contact lists and profiles, invite BBM contacts to download your app, or add a customizable application box to a user's BBM profile to broadcast achievements or updates, all from within your app.

The PIM highlight.

Calendar, Contacts, and Email

Take advantage of full integration with personal information management (PIM) applications in BlackBerry 10. You can add calendar entries, contacts, messages, notebooks, and more, all right from your app. Make your app indispensable to your users by working seamlessly with the core applications that they use every day.

The UI highlight.

UI additions and improvements

Many of the core UI controls have been improved or added upon in this release. Take a look at the new features of controls like the tab menu, action menu, and navigation pane. Other additions include text field and text area enhancements, new font sizes, context menu improvements, a new data model, and much more.

New in this release

Cascades UI framework

Built-in controls

  • Context menu - The context menu now supports landscape orientation. The menu is laid out correctly when the device is in landscape orientation, and it transitions smoothly between portrait orientation and landscape orientation. Also, you can populate the context menu automatically with actions for specific content types simply by specifying the MIME type of your content.
  • Tab menu - The way that tabs are arranged in the tab menu (or sidebar) has been improved. Tabs are now vertically in the menu. When you add a lot of tabs to the tab menu, the vertical position of the tabs is offset so that the tabs appear closer to the bottom of the menu. This positioning makes it easier for users to reach the tabs with their fingers, providing a more comfortable user experience. Also, highlighting of the currently displayed tab, as well as the tab that a user taps, has been improved for a better visual appearance. Finally, splats (indicating new content) are now displayed on the tab menu button if any of the tabs in the menu contain new content.
  • Action menu and action bar - Similar to the tab menu, actions in the action menu are now vertically, and their positions are offset toward the bottom of the menu when a lot of actions are displayed. When you add a Delete action to the menu using the predefined DeleteActionItem class that's provided, this action is placed automatically at the bottom of the action menu and stays visible when the rest of the menu scrolls. This lets users access the Delete action easily, no matter how many actions are in the menu. The action bar at the bottom of the screen now supports landscape orientation.
  • Label - Labels now support line breaks. This feature lets you create labels that are more than a single line of text.
  • List view - List views now support snapping for list items. You can decide whether you want the borders of list items to align automatically (or "snap") to the top or bottom of the visible area of the list. Using this feature, you can make sure that a full list item is always displayed at either the top or the bottom of your list. You can also insert implicit stop positions when users scroll through your list. New highlighting has been implemented for standard list items; when users touch and hold these items, they are gradually highlighted, indicating that the context menu is about to be shown. Also, programmatic scrolling is now fully animated.
  • Application menu - You can now define an application menu in QML, and add, arrange, and remove actions right in your QML code. The way that actions are arranged in the application menu has changed. Now, actions are placed on the left and right sides of the menu first, and remaining actions fill the center of the menu. The application menu now supports landscape mode.
  • Text field and text area - Many text selection features have been added or improved. Users can now select text by tapping two fingers (the first finger at the start of the selection and the second finger at the end of the selection); use the context menu to cut, copy, and paste text; touch and hold a word, or double-tap the word, to select it; and more. Padding properties on text fields and text areas now adjust the position of the text inside the controls. Also, you can specify the type of virtual keyboard that's displayed when users tap a text field or text area. You can now programmatically insert, replace, or edit the text in a text field or text area. Other features have also been added, such as hyperlink support, smart text scanning for phone numbers and email addresses, emoticons, basic rich text, and password masking.
  • Virtual keyboard support - Text input controls in Cascades are now integrated with the virtual keyboard. You can enable virtual keyboard featur, such as text prediction, dedicated numerical input, and so on, in your apps. Specialized keyboards for email addresses, passwords, chat, along with other input modes, are supported.
  • Navigation pane - You can now support peeking in your apps, which allows users to touch and drag the content area of a page to the right to display the page that's underneath it. Swiping the current page, or dragging it past half the width of the screen, pops the current page off of the navigation pane stack. Users can also peek at the first page in the stack by dragging or swiping the Back button on a page. You can also perform more operations on a navigation pane, such as inserting or removing pages at specific positions in the stack, or navigating back to any page in the stack (instead of repeatedly popping pages).
  • Tabbed pane and sheet - These controls now support peeking, similar to a navigation pane.
  • Foreign window - When you use a foreign window in your app (for example, to play a video), you can programmatically open the context menu to display actions that are related to the foreign window.
  • Images - You can now load PNG and JPEG images even if the image files don't include .png or .jpeg extensions. Cascades now supports decoding images from memory buffers, instead of just from the file system. Also, animated GIF images are now supported.
  • Dark theme - The dark theme that was used in a previous beta is back. You can now choose between using the dark theme and the light theme.

Other features

  • Active Frames - You can now specify a cover image for your app. A cover appears when your app is reduced to a thumbnail (for example, when users swipe up from the bottom of the screen to switch between running apps). Previously, a scaled-down version of your app's UI was used as the cover image, but now you can create your own custom cover images and use them instead. You can even use a completely dedicated UI tree as the cover image.
  • Dynamic QML loading - You can now create objects by loading QML files dynamically. This feature lets you load the contents of your UIs only when necessary, instead of storing all of the components in memory at once. This can potentially save a lot of memory and can significantly increase the performance of your apps.
  • Invocations - You can now trigger bound or unbound invocations from anywhere in your code. For example, you can choose to invoke a default target application or service when users tap on active text in your app.
  • Active text - Interactions with active text have been improved. Tapping performs the default action that's associated with the active text, while touching and holding opens the context menu with available actions for the selected text. You can also choose to turn off active text and emoticons in your apps.
  • Data models - A new data model, ArrayDataModel, has been added. This data model is designed for data that doesn't need to be sorted in a particular order, or for data that you want to sort in a precise way in your app. This model supports data manipulation operations such as insert, move, swap, and remove. You can use this model in either QML or C++.
The context menu while dragging a list item.

Tabs in the tab menu appear closer to the bottom, for easy access.

A custom dialog and title bar.

An application menu provides global actions for your app.

The Active Frames feature.

Active Frames let you customize the image that appears on your thumbnailed app.

  • Fonts - New font size levels have been added for use in text styles. Sizes ranging from XXSmall up to XXLarge are included, making it easier for you to select an appropriate size for the fonts in your apps. Also, built-in Cascades controls change their font sizes depending on the global font size that's set on the device.
  • Focus improvements - The way that UI controls handle focus has been improved, making it easier to perform focus-based tasks, such as filling out forms. You can now override the default focus policy if you want to handle focus in a different way in your apps.
  • Spell check - You can now spell check and correct text in a text field, and you can add words to the dictionary on the device. You can also use the spell check engine inside your own custom UI controls.
  • BBM Social Platform - Add social interaction and viral distribution to your app using BBM integration. Take advantage of instant social interactions and increase the popularity, discoverability, and stickiness of your app.
    • Invites - Invite BBM contacts to download your app by accessing a user's BBM contact list.
    • Profiles - Update a user's or a contact's personal message, status, and avatar with application-specific items.
    • Application Profile Boxes - Add a customizable application box to a user's BBM profile to broadcast achievements or provide updates.
  • Personal information management (PIM) - Integrate with the core PIM applications on the device, such as the Calendar application, Contacts application, and Remember application, to perform the following tasks in your apps:
    • Create new calendar entries, contacts, notebooks, and messages, as well as view and edit details of existing PIM entries
    • Search for contacts by unique identifier, by a particular string, or by a specific field
    • Use a contact picker to present a list of contacts for users to choose from
    • Notify third parties when calendar events are added, modified, or deleted
    • Package a calendar event in iCalendar (ICS) format
  • Internationalization - Prepare your application for markets around the world by using internationalization and localization. This feature allows you to translate and tailor the content of your application for a particular locale.
  • Cards - Use the invocation framework to allow your application to share discrete functionality across other applications in the form of a card.
  • Ad Service - Get access to multiple ad services to integrate ads into your apps. No custom coding is needed; advertisements are delivered to your app with just a few lines of code.
  • Push Service - Provide instant information to your users. This is the feature that smartphone customers love, and started the BlackBerry revolution. With push, your applications can run in the background, extending battery life.
  • Camera - Use the improved Camera APIs to integrate with the camera hardware on the device. You can let users take photos in your apps, as well as store these photos and share them with friends.
  • Custom menus - Create menus with your own distinctive look and feel. You can take advantage of the underlying menu service (the same service that provides items for built-in menus, such as the context menu) to provide context-sensitive menu items for the data in your app. Then, you're free to define the exact appearance and visual behavior of your menu.
  • Sensors - Access all of the data that's gathered by the various sensors on the device. You can retrieve sensor data from the accelerometer, gyroscope, light sensor, magnetometer, and rotation sensor, among others. Use these readings to make your apps responsive to a wide range of user input.
  • Radio info - Query the available radios on the device to retrieve information such as status, ESN/IMSI, SIM card information, mobile country code (MCC), and mobile network code (MNC).
  • Geocoding - Use new APIs to support geocoding and reverse geocoding in your apps.
  • HomeScreen - Set the wallpaper on the device using these new APIs.
  • Dialogs, prompts, and toasts updates - Dialogs, prompts, and toasts have been updated to let you use the power of the Cascades UI in your customized dialog or to choose the standard BlackBerry 10 look and feel in your system dialog. There's even a new system dialog, SystemListDialog, that presents your user with a list of choices when the standard OK or Cancel choices are not enough.
An illustration of BBM.

You can integrate BBM social features into your apps.

An illustration of sensors.

Various sensors are available on the device, so take advantage of them!

An illustration of dialogs and toasts.

Give your users the information they need by using dialogs and toasts.

  • Notifications additions - Sometimes your app needs to let everyone know what's happening. Cascades notifications can be used with the BlackBerry 10 notification settings to highlight an event in your app in the Universal Inbox or to put the BlackBerry splat on your app's icon on the home screen. The user can include LED, sound, and vibrate notifications by customizing the notification settings for your app.
  • Multimedia enhancements - New classes have been added that make it easier to support multimedia features in your apps. Your app can be notified of hardware media key presses, detect different media states, handle various video output devices, and more.
  • Data access additions - The data access APIs have been extended to support accessing data from XML, in addition to previous support for SQL and JSON data. You can also load JSON, SQL, and XML data from local and remote data sources right from QML.
  • Payment Service improvements - The Payment Service APIs have undergone some changes:
    • PaymentManager - The PaymentService API has been replaced with the PaymentManager API. The PaymentManager API provides functionality similar to what the PaymentService API provided, but is structured in a way that's clearer and easier to use.
    • PaymentConnectionMode - The enumerations in this class allow you to put your app in test mode or production mode. In test mode, your app will bypass the Payment server, preventing accidental purchases and credit card charges. Test mode provides simulated screens and data for purchases, purchase history, and other requests.
    • PaymentReply - The PaymentReply class provides responses for all PaymentManager requests. Success responses and error messages include detailed data, and the finished signal of a response can be used to determine when its corresponding request finishes.

Cascades Builder

  • JavaScript editing and debugging - There is now limited support for JavaScript editing and debugging when you're using the C++ debugger. You can set breakpoints, step through your code, and evaluate and set variables and QML property values.
  • Image viewer - An image viewer has been added so that you can preview the images that you use in your apps. The image viewer includes features such as zooming and rulers. The image viewer also lets you view and edit 9-slice scaling information.
  • Improved Outline view - The Outline view has been enhanced, and now allows you to manipulate the component tree of your app.
  • Improved QML editor - Several features of the QML editor have been improved, including better code completion with more relevant suggestions (including custom components that you write using QML), better hover help, improved drag-and-drop from the Component palette, and better error validation. Reformat and indentation support has also been added, as well as hyperlinks to referenced assets. Syntax highlighting has also been improved and expanded to include objects, properties, types, invokables, slots, and signals.
  • Improved Component palette - The Component palette now includes new component categories and additional items. An Assets view has also been added, which displays images and custom QML components that exist within the project.
  • Improved Properties view - The Properties view adds better property editors.
  • Improved QML Preview - The QML Preview now more accurately reflects the code in the QML file that you're editing.
The image viewer.

The new image viewer lets you work with nine-slice information.

Known limitations

  • Issues with sending output to the console

    In this release, the qDebug() and console.log() functions 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.

    Workaround 1): 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);

    After this, qDebug() calls will be logged to the console.

    Workaround 2): To see debug information that is output from qDebug(), you can access the slogger2 logs as follows:

    1. In the IDE, in the Target Navigator view, right-click the device target. Click Launch SSH Session.
    2. In the terminal that appears, do one of the following:
         a. To view the current slogger2 logs, type slog2info.
         b. To view real-time output for the processes that are being debugged (for applications that are running in development mode), type slog2info -w.
         c. To view help information on slogger2, type slog2info -h.

    You can also access the log files directly in the /tmp/slogger22 on the device and run these logs through slog2info at a later time.

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

  • BBM Social Platform and the simulator

    The BBM Social Platform APIs are not currently supported in the BlackBerry 10 Dev Alpha simulator. To test and debug your app, you'll need a BlackBerry 10 Dev Alpha device. To learn how to run your BlackBerry 10 application on a device, see Build, test, and deploy your app.

Known issues

Cascades UI framework


Forwarding an SMS or MMS message through the context menu (also known as the CrossCut menu) does not work and no message is forwarded.


Marking an email as read or unread through the context menu does not work and nothing is set.


A multi-line Label with TextAlign set to Center does not display correctly when switching orientations (portrait to landscape mode).


If you rotate the device while peeking from one page to the next, the application becomes unresponsive and the peek session freezes.


Receiving an incoming call and moving the call bar to the bottom of the screen causes the call bar to be stuck at the bottom of the screen.


Setting the imageSource property on any ImageView-like control (such as ImagePaintDefinition) takes longer than expected, around 3 ms. This issue reduces the creation time of the application scene.


The first creation of a Color class from QML takes longer than intended, around 8 ms.


When using a Bluetooth keyboard, some keys result in invalid text instead of the actual key. Some examples are: the arrow keys, the Ctrl key, the Alt key, the Delete key, and F1 to F12.


A Label ignores its maximum width if the preferred width is not set.


When using a Menu with 4 ActionItems, the 4 ActionItems are not evenly spaced.


If you receive an MMS message with a picture attachment and then open the picture, the MMS menu bar is displayed at the bottom of the picture.


Scrollable lists sometimes stutter when scrolling up and down.


If you play a video then switch from landscape to portrait orientation, the video flickers. Also, when you have a Label with textStytle.textAlign set to TextAlign.Center, the label renders incorrectly when switching between landscape and portrait mode.


The segments of a SegmentedControl do not animate properly. The wrong colors are used during transitions.


The Clock application in bed-side mode sometimes flickers when it's brought into view.


If you're editing a notebook and receive an incoming call, the call screen and edit notebook screen overlap each other.


When opening the unbound-target-selection menu, the title bar is animated in from the right hand side of the screen (right to left) while the remainder of the list slides in from the bottom of the screen up to the top. The entire sheet is intended to animate onto the screen together in one cohesive transition.


Selecting an unbound invoke action, such as Share in the Pictures app, proceeds to the target selection menu but does not display the title in the header of that menu.


When attempting to copy text from a work account message to a personal account message, no notification is given that pasting text from work to personal messages isn't allowed, but the text is not copied as expected.


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


If a TextField is located near the bottom of a Sheet and it obtains focus, the virtual keyboard hides the TextField.


When a long email is received, the text in the middle is cut off and doesn't display properly.


If you have a TitleBar in a NavigationPane, making the TitleBar visible from a slot function can sometimes cause the TitleBar not to be seen at all.


Labels use more memory than intended.


Zooming in or out on a ScrollView control flickers during the rubber band effect of the list.


Sometimes when performing searches, some email results do not appear.


If you have a TabbedPane containing images on tabs, there are black areas at the top of the images when viewing the images in full-screen mode and landscape orientation.


If you transfer a large amount of images to the camera folder (say, 5300), open the Pictures app, and then open the camera, the Pictures app terminates unexpectedly.


Sometimes when minimizing an application, a different application cover is momentarily displayed.


Lists of attachments in some emails are sometimes cut off and don't all display correctly.


Sometimes the Calendar app and BlackBerry Messenger app terminate unexpectedly due to memory allocation issues.


Sometimes when switching between the application and a context menu, the circle of search remains longer expected.


The fine cursor sometimes appears when the field is empty.


The TextArea.requestFocus() function does not work when used on the onCreationCompleted() slot function.


Sometimes the Calendar app terminates unexpectedly while attempting to paste text into a new event.


When typing into a TextField, the submit key doesn't emit a submitted signal and doesn't call the connected slot function.


In landscape orientation, the overflow menu has no line to separate Share from Delete.


The connect button on the virtual keyboard does not start the sign-in process when using Google Talk or Yahoo Messenger.
Workaround: Use the connect option in the menu.


The remember password option on Yahoo Messenger is not working correctly and cannot save passwords.


While editing a video, running a preview and switching to landscape mode causes the controls to become unresponsive and the application to terminate unexpectedly.


If you have a TextArea with a height of 400, after releasing your finger scrolling up, the list scrolls down.


There is no option to save an SMS message.


Touch events below a TitleBar do not emit a signal.


When a Tab on a TabbedPane contains many images, deleting the Tab does not delete the images.


Sometimes when highlighting text in emails, the highlighting continues after the touch has finished.


Loading an image with an ImageTracker control doesn't work properly and can't accept ResourceState or ResourceTracker enumerations.


When creating an account on Window Live Messenger, the application sometimes terminates unexpectedly when selecting a country.


The scrollToPosition() function on a ListView takes longer than expected.


When a TextField is moved, the fine cursor does not follow.


Opening a contact in the Contacts app while scrolling occasionally selects the wrong contact.


TextFields do not maintain the correct text position when many lines are entered.


The sender name is truncated if the name is too long without any way to view the whole name.


TextAreas with a double value as the max height don't maintain that height within the limit.


Sometimes BlackBerry Messenger becomes unresponsive when viewing the contacts.


Applications with multiple Pages sometimes terminate unexpectedly when copying text from one Page to another.


Sometimes targets (http://, mailto:, and so on) are not invoked when called from a TextField or TextArea.


Long text strings in a TextField are not replaced with an ellipsis.


The Pictures application can sometimes terminate unexpectedly when adding pictures to an album.


When using the Croatian or Kazakh character sets, some characters are missing.


When receiving onTouch events from applications that use child classes of CustomControl, unexpected values might be returned on the events. An example would be positional change between touch events of over 300 pixels in under 70 ms.


Dynamic objects and variables consume more memory than intended.


The defaultImageSource property of ImageButton does not prefix the file path with "file://", but the imageSource property does.
Workaround: Add the "file://" prefix manually.


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


The API documentation indicates that the TextField.resetHintText() slot function resets hint text to an empty string, but the function actually resets hint text to "Enter text".


TextStyle.base components cannot be set to null, even though in the API reference the default is stated as a null TextStyle. Also, altering TextStyle.base does not emit the onBaseChanged signal.


When the TextStyle.resetBase() function is called, the changeListener signal emits the new base as a defined TextStyle object instead of the default value of NULL.


The TextStyle.onBasedChanged signal is emitted after setting the same base value.


The default value of TextStyle.base was specified as null in the API documentation, but at runtime the value is undefined. The expected value on return is now undefined.


When using a GridListLayout object, calling the GridListLayout.setSpacingAfterHeader() function does not add spacing after the header. If the spacingAfterHeader property is connected to a slot function, a signal is not emitted when the setSpacingAfterHeader() function is called, as it should.


When using HeaderListItem with layoutDirection set to LeftToRight or RightToLeft, the parent ListView has infinite scrolling and non-header items are hidden.


The ImageTracker.onImageChanged signal is emitted even when setting the image to the same image.


Margins do not function correctly for any controls without a set value. When a control is initialized, or the margin is reset, the getMargin() function will not return a consistent value.


The titleChanged, valueChanged, and modeChanged signals for DateTimePicker are not being emitted correctly, or at all, when their respective changes occur.


Default-size TextFields in Containers with LeftToRight layouts can push some Labels out of view by exceeding the bounds of the Container.


With nested Containers and touch behavior set to start tracking on a touch down event, touching the child Container causes the parent Container to respond as if it had been touched.

Cascades platform APIs


When using the NotificationDialog API, the error() and result() functions return an incorrect value if the dialog was dismissed by a button selection.


When using the SpellChecker API, the checkWord() function and suggestion functions always time out and return false even though the word is correct, if using specific timeout values including: 3000, 4000, 7000, and 8000.


The Camera::open() and Camera::startViewfinder() functions have to be called twice to open the camera and start its viewfinder for the first time.


On a device, the function and exec() static function do not work properly and do not display the specified effects.
Workaround: Restart the device or test your application on the simulator.


The invoked(const bb::system::InvokeRequest&) signal of the InvokeManager class emits the incorrect signal for setFileTransferMode(FileTransferMode::Type type).


If a hard-link is specified and the original file has owner and write access, the sender must have owner permissions for the target to be invoked.


If a user denies an app permission to connect to BBM when the app first launches, or changes the permissions in the global settings for the app, the app terminates unexpectedly.


Sometimes if invocation requests are pending, peeking and closing the card does not work.


The NFC services are not correctly registered with the Invocation Framework. NFC viewer needs to be explicitly registered for handling unbound invocation requests.


A user cannot block future download invitations from a contact. After selecting "block future invites from <contact>", the contact is still able to send the user invitations.


The peek feature for cards does not work on the BlackBerry 10 Dev Alpha Simulator.


The peek feature is not working correctly when used with any card class while in landscape mode.


You can create more than the maximum allowable 3 items in an application profile box on a BlackBerry 10 device.


MenuManager does not create the menu if you set the TargetTypes to -100.


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


After you add an image to a profile box, the image does not display.
Workaround: Do not disconnect the app.


A contact's profile box items do not appear in the correct chronological order on the current user's BlackBerry 10 device, and the timestamps are incorrect.


Profile boxes are not updated in real time. For example, when a contact's profile box is modified, the changes are not immediately updated on the current user's BlackBerry device.
Workaround: Navigate away from the profile box and then return to it.


The Qt NFC APIs are missing documentation on protected and public methods including QnDefRecord, QnDefSpRecord, QnDefActRecord, QnDefIconRecord, QnDefSizeRecord, QnDefTypeRecord, QnDefTextRecord, QnDefUriRecord classes.
Workaround: Look at the respective header files in the installation folder.


When a user launches an app and the app attempts to register with the BBM Social Platform, after the user clicks Continue in the BBM Setup dialog, BBM does not launch.


After prolonged use, the peek functionality does not work correctly and prevents apps from launching and minimizing.


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


The ForeignWindow::controlFrameChanged signal is not emitted on rotation changes of the device. The signal is emitted on the first layout but not subsequent rotations.


When opening an encrypted database with bb::Data::SqlConnection with an SqlWorker, an OperationFailure error is thrown. The error should be a ConnectionFailure error.


When free storage on the device is less than 1 GB and video is recorded until the device storage is full, the videoCaptureStopped signal is not received when the device storage is full. Also, when this occurs, the videoCaptureFailed signal is received with an error set to RecordingSpaceFull.

Cascades Builder


If a running debug session is interrupted, the JavaScript debugger may lose the debug session. Some scenarios of interrupting a running debug session are: a change of the launch configuration, the debug session times out, and other debug sessions are started. You can avoid this issue by terminating the debug session before performing any other actions.
Workaround: Restart the IDE.


The debugger may terminate unexpectedly when displaying variable values in the Variables view, specifically when you are debugging QMap or QMultiMap objects.


After debugging with a JavaScript breakpoint, applications do not run on a device.
Workaround: Test on the BlackBerry 10 Dev Alpha Simulator.


An empty onClicked slot function in QML has an error at runtime but not in the QML editor.


The QML preview does not handle relative path images.


Custom components are listed under attached objects when the QML file is not immediately under the assets folder.


QML preview is not available on a Linux Ubuntu 11.04 32 bit OS.


When JavaScript editing, applying code assets to any console function (such as the console.debug() function) does not display any highlighting. The console functions still work at runtime.


Syntax highlighting (pretty-printing) of some Qt classes isn't displayed properly in the IDE (for example, QString, QVector, QChar, and others).


The debugger displays errors when watching expression values on Cascades objects.


When using the Debug Perspective on a Mac, variable information does not appear in the 'Variables View' after you debug an application.


It's not possible to browse for a file in the 'Image Source' text field of the Properties View.
Workaround: Specify the path manually.


On a BlackBerry 10 Dev Alpha device, attempting to debug a Cascades application over Wi-Fi can result in a timeout error, which stops the debug session.


Invoking code assist after 'TextStyleDefinition' does not display 'onBaseChanged' as an option in the property list.


When using TextStyle controls, the properties view is not updated properly and doesn't reflect changes in property content.


The NVIDIA graphics driver 191.25 does not support the QML editing perspective.


Attempting to use code assist for the first time in a project can cause code assist to function incorrectly, or not at all.
Workaround: Save, close, and re-open the project.


Adding an inclusion library folder through the QNX Momentics IDE does not work.
Workaround: Modify the project file (.pro) statement "INCLUDEPATH +=" to add the directory path of the library folder you wish to include.

Cascades Exporter plug-in for Adobe Photoshop


Text in Cascades applications displays larger on a device or simulator than it does in Photoshop, around 5 times larger.
Workaround: Manually adjust the font size in Cascades Builder.


On a Mac 10.6, a .tmz file name containing a '/' character shows an error with "Problem null".


The Reset option on the Rescale dialog is not working properly and does not reset the pixel values to their original values.


Adobe Photoshop CS5 windows do not minimize properly when the builder extension is enabled on Mac Snow Leopard.
Workaround: Disable the extension.

Fixed in this release

Cascades UI framework


If using a WebView component, your application used to sometimes fail or become unresponsive at runtime.


Adding or removing ActionItems from a hidden (immersive) action bar caused the action bar to be shown on the screen.


When using the deprecated Orientation messages API, your application could have become unresponsive at run-time if the orientation is altered by the user.


When you were using a QML Container with a LeftToRight stack layout with one element aligned to the left and the second aligned to the right (using the HorizontalAlignment.Right property), both elements used to be aligned side-by-side instead of to each side.


When using an ImageView component, the ScalingMethod.AspectFit enumeration did not scale the image correctly when used to resize an image between portrait and landscape mode.


In a scrollable Container component that includes a Button to toggle orientation, a scroll event was sometimes emitted when the button was pressed. A button-click event should have been emitted instead.


Calling QListDataModel::Move(x, y) moved x to index y-1 instead of index y.


When using a Label object with large font sizes, text used to be rendered incorrectly.


A ToggleImageButton was not visible if the dimensions were not specified.


A displayDirectionChanged signal was only emitted on the first instance of a display direction change.


When using a Slider control, a touchUp event used to contain incorrect information about the positional value of the slider.


A parent Container's maxHeight used to be overwritten by a child Container's minHeight when the parent Container used a DockLayout or the parent Container was contained within an empty Container.


Public headers for WebLoadRequest and WebSettings were missing.


Using nested StackLayout layouts used to cause overlapping elements.


Sometimes, the left-most edge of the first letter of text in a Label was clipped.


When two Pages with no background were programmatically pushed to a NavigationPane at the same time, both were displayed on top of each other.


When using a Button with HorizontalAlignment set to Fill inside an Container with a LeftToRight stack layout, sometimes text was displayed improperly and did not fill the width of the screen.


Inserting items into and removing items from a QListDataModel resulted in an incorrect DataModel size and incorrect number of items displayed in the associated ListView.


The TextField.onTextChanging signal was emitted after the onTextChanged signal if you changed focus to another UI element, even if no text had changed in the original TextField.


SegmentedControl did not update the display when an option had been moved from one control to another. The option remained in the initial control, and was placed in the target control.


When setting SupportedDisplayOrientation to All, the supportedDisplayOrientationChanged signal was not emitted and the connected slot function was not invoked.


Using SupportedDisplayOrientation::All caused application orientation to be unresponsive when the device was rotated.


The GroupDataModel::removeAt() function returned true even when removing the header was unsuccessful.


RadioGroup.SelectedIndexNone returned 'undefined' in QML. The expected return for RadioGroup.SelectedIndexNone was '-1'.


Attempts to use "QVariantList() << (negative integer)" as a parameter for DataModel::childCount, hasChildren, itemType, and data caused the application to terminate unexpectedly.


The QListDataModel::append() function emitted an itemAdded signal with an incorrect indexPath value.


The clipContentToBounds property had no effect when it was set from QML, and caused objects within a Container to be clipped if their size exceeded the bounds of the Container.


Attempting to quickly stop and restart an animation returned an error message.


The resetLayout() function should have reset a container's layout to StackLayout by default, but instead it returned a 'NULL' value.


A TextArea did not scroll up to display all entered characters when the virtual keyboard was displayed.


Tapping a TextArea after hiding the virtual keyboard did not display the virtual keyboard a second time.

Cascades platform APIs

Including the Multimedia library in your application required 4 linker additions to your project file (.pro) before but now only requires 1, -lbbmultimedia.


When you were using the AudioRecorderPrivate::setMediaState slot function connected to the mediaStateChanged signal, the mediaState used to sometimes be set to "Unprepared" even if another state was expected.


The InvokeManager::invoke(InvokeRequest) function did not invoke the target when only the mime-type was specified in the InvokeRequest parameter.


Notifications used to not trigger the LED/sound/vibration effects specified in the settings.


When the user performed a swipe down gesture, the swipeDown signal wasn't emitted.


In the HomeScreen class, the setIconBadge() function placed the icon badge in an incorrect position. The icon badge was placed in the middle of your application's icons as opposed to directly on top of the icon.


When you used the HomeScreen class, the setWindowCover() function did not set any cover when working on the BlackBerry 10 simulator.
This functionality has been moved to the Application class, and you should use the setCover() function, which works on the simulator.


Using the HomeScreen class, the addShortCut() function scaled up the image icon if the icon passed was smaller than the expected size, as opposed to not scaling the icon as stated in the documentation.


When using the bb::device::Led API, the red LED flashed, but the green and yellow LEDs did not flash.


The bb::Application class did not allow for delayed exits, but instead exited the application immediately. Sending the PPS message "extendTerminate" to the Navigator service to extend the exit did not work either.


Using Clipboard.insert() to insert an empty string or NULL statement was not allowed, and was not stated in the documentation.


In the HomeScreen class, the setBadgesDisplayed(true) function and setWindowCover() function did not show an image with a badge.
This functionality has been moved to the Application class, and you should use the setCover() function and setIconBadge() function.


In your application, if you called Toast.setIcon( const QUrl& ) and then called, the icon previously set was not shown.


In the bb::platform::DigitalGoodResponse class, the methods digitalGoodId() and digitalGoodSku() returned an empty string value, instead of the digital good ID. The header file stated that these methods will return the digital good ID if passed in the original request.


On a BlackBerry 10 Dev Alpha device, using the PaymentService API to make a purchase in Test Mode resulted in a cut-off configuration dialog for digital goods, in which only the bottom part of the dialog was shown.


Using the Display API, it was not possible to receive signals from the secondary display when signals are connected to the primary display.

Cascades Builder


The navigation and tabbing features did not display properly in the QML preview. Also, some of the new Cascades controls, such as the TitleBar and ImageButton, did not display correctly in the QML preview.


QML ImageTracker was marked as an unknown component in the QML Properties view.


When installing Cascades Builder on Mac OS, the soft links referenced invalid/missing files.


Adding a Container component to an empty Cascades project used to cause the QML editor to notify the user of parsing errors, when no parsing errors existed.


When using the Debug Perspective on a Mac, stepping into the code during a debug used to cause the debug session to stop responding.

Cascades Exporter plug-in for Adobe Photoshop


It was not possible to undo any action in Photoshop while the extension was enabled. If you attempted to undo an action, an error message saying "Can't undo" was displayed.


Using the 9-slice tool in Photoshop used to cause window margins to decrease in size unexpectedly.

Looking for release notes for previous betas?

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

  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.