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

Highlights - Cascades beta 4

The title bar highlight.

Title bar changes

Several changes have been made to the TitleBar control in Cascades. The appearance has been improved, and support for dark themes and bright themes has been incorporated.

The font change highlight.

Font size changes

Some of the font sizes have changed a bit. If you use system fonts in your apps, you shouldn't need to make any changes to accommodate the new sizes. If you use custom font sizes, you might need to adjust your UI to accommodate the new sizes.

The dialogs, prompts, and toasts highlight.

Dialogs, prompts, and toasts

Several new features have been added to enhance your experience with these components. Among other additions, you can now enable emoticons, add custom buttons, and customize the message that appears when you use a system credentials prompt.

New in this release

Cascades UI framework

Built-in controls

  • Title bar - The TitleBar control has changed color and is now blue. You can use the branded property to specify whether you want to use a blue title bar in your apps. The title bar also uses a different default color depending on the theme that you set for your app. If you use the dark theme, the title bar remains dark. If you use the bright theme, the title bar can be either blue or bright, with blue being the default appearance for bright-themed apps.
  • List view - In a ListView, the list items have changed slightly in font size, height, and divider appearance.
  • Segmented control - A SegmentedControl can be used in a title bar. To preserve a consistent look and feel, the SegmentedControl has been aligned.
  • Web view - The WebView control has been improved. You can now share cookies (persistent information across requests) among all WebView controls that are running in the same process. A new class, WebCookieJar, manages cookies as strings in a database.

Other features

  • Text editor API - You can now programmatically insert text into text controls. You can also control the position of the cursor within these controls, and you can track the text that's currently selected.
  • Font sizes - The predefined font sizes (such as XSmall, Medium, XLarge, and so on) have changed slightly. If you use system font sizes in your apps, these changes shouldn't affect the appearance of your UI, but you should test for any inconsistencies.
A highlight of the title bar changes.

The color of the title bar has changed.

  • Animations - To make it easier to create the animations you want, you can now turn off implicit animations for the width and height properties of UI controls.
  • Animated GIF controls - You can now control the animation in animated GIF images. For example, you can now stop and start the animation directly from your app.
  • Dialog boxes, prompts, and toasts - Several additions and improvements have been made to these controls, including the following:
    • You can use the emoticonsEnabled property to display smiley faces as emoticons in a SystemDialog, SystemCredentialsPrompt, or SystemPrompt.
    • You can associate an action with the return key in a SystemDialog, SystemListDialog, or SystemPrompt using the returnKeyAction property.
    • You can add a custom button to a SystemPrompt or SystemCredentialsPrompt.
    • The buttonAreaLimit property has moved from the SystemDialog class to the SystemListDialog class.
    • You can customize a message that is displayed when invalid credentials are entered in a SystemCredentialsPrompt using the validationMessage property.
    • You can use the new system classes, SystemProgressDialog, SystemProgressToast, and SystemUiProgressState, to create standardized progress dialog boxes and prompts.
  • Notifications - You can set, retrieve, or reset the invocation request that is associated with a Notification. When you reset the invocation request for a notification, this resets the invokeRequest property to a context-specific default value, which is a bb::system::InvokeRequest instance.
  • Payment Service - There are several new classes and other elements that can help you make your Payment Service apps more effective:
    • You can use new classes DigitalGoodReply, PriceReply, and ExistingPurchasesReply to analyze replies to PaymentManager requests. The PaymentReply class is the base class for all PaymentManager replies. The DigitalGoodReply, PriceReply, and ExistingPurcasesReply classes are children of PaymentReply and provide details for specific PaymentManager requests.
    • You can use a new constant, PaymentManager::Subscription_App, as the digitalGoodId in a call to the requestSubscriptionStatus() function to check the status of an app that is priced as a subscription item in BlackBerry World.
A highlight of dialogs and toasts.

Dialogs, prompts, and toasts have been improved.

  • Location - The Maps API has been improved. There is now support for pin drops using the MapLongPressToPinDrop class. A user can press a location on a map to drop a pin at that location. You can create points on a map (represented by latitude and longitude coordinates) using the Point class. You can also define the limits of a geographical area on a map using the BoundingBox class.

Other features

  • Development mode notifications - Previously, when you turned on development mode on the device, you would see an indicator at the top of the screen. Now, a notification is displayed in the BlackBerry Hub.

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.

    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);

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

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

  • 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 whole QML preview feature. The user will also be notified about this situation by a dialog within the QNX Momentics IDE.
    Workaround: Update to the latest drivers.

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

  • API does not have permission to access the chat database

    The access_sms_mms permission does not work correctly. If you try to save a text message in your app, you'll receive an error message and the text message is not saved.

Fixed in this release

Cascades UI framework


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


If you rotated the device while peeking from one page to the next, the application and peek session became unresponsive.


The first creation of a Color class from QML used to take longer than intended.


A Label ignored its maximum width if the preferred width was not set.


Previously, when using a Menu with 4 ActionItems, the 4 ActionItems weren't evenly spaced.


If you played a video then switched from landscape to portrait orientation, the video flickered. Also, when you had a Label with textStytle.textAlign set to TextAlign.Center, the label rendered incorrectly when switched between landscape and portrait mode.


The segments of a SegmentedControl didn't animate properly, the wrong colors were used during transitions.


When an unbound-target-selection menu was opened, the title bar was animated in from the right hand side of the screen (right to left) while the remainder of the list slides were animated in from the bottom of the screen 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, proceeds to the target selection menu but it didn't 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 was given that pasting text from work to personal messages wasn't allowed, but the text was not copied as expected.


If a TextField was located near the bottom of a Sheet and it obtained focus, the virtual keyboard hid the TextField.


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


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


Labels used more memory than intended.


Zooming in or out on a ScrollView control flickered during the rubber band effect.


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


Sometimes when minimizing an application, a different application Cover was momentarily displayed.


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


The fine cursor sometimes appeared when the field is empty.


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


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


If you had a TextArea with a height of 400, after releasing your finger scrolling up, the list used to scroll down.


Touch events below a TitleBar didn't emit a signal.


Sometimes when highlighting text in emails, the highlighting continueed after the touch had finished.


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


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


When a TextField is moved, the fine cursor didn't follow.


TextFields didn't maintain the correct text position when many lines are entered.


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


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


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


When receiving onTouch events from applications that used child classes of CustomControl, unexpected values used to 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 consumed more memory than intended. Heap memory usage on many controls has been reduced, but will continue to be reduced further on other controls.


The defaultImageSource property of ImageButton didn't prefix the file path with "file://", but the imageSource property did.


TextStyle.base components couldn't be set to null, even though in the API reference, the default was stated as a null TextStyle. Also, altering TextStyle.base didn't emit the onBaseChanged signal.


The TextStyle.onBasedChanged signal was 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.


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


Margins didn't function correctly for any controls without a set value. When a control was initialized, or the margin was reset, the getMargin() function wouldn't 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.

Cascades platform APIs


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


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


The show() function and exec() static function of NotificationDialog control didn't work properly and didn't display the specified effects.


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


Peek feature for cards didn't work on the BlackBerry 10 Dev Alpha Simulator.


The Qt NFC APIs was missing documentation on QNdefRecord class.


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


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

Cascades Builder


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


Custom components were listed under attached objects when the QML file wasn't immediately under the assets folder.


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


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

Cascades Exporter plug-in for Adobe Photoshop


Text in Cascades application displayed larger on a device or simulator than it does in Photoshop, around 5 times larger.


On a Mac 10.6, a .tmz file name that contained a '/' character showed an error with "Problem null".


The Reset option on the Rescale dialog wasn't working properly and didn't reset the pixel values to their original value.

BlackBerry Messenger Social Platform


If a user denied an app permission to connect to BBM when the app first launched, or changed the permissions in the global settings for the app, the app crashed.


After adding an image to a profile box, the image did not display.


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


When a user launched an app and the app attempted to register with the BBM Social Platform, after the user clicked Continue in the BBM Setup dialog, BBM did not launch.

Known issues

Cascades UI framework


When a ListView control's flickMode 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 flickMode back to the default value and no signal is emitted.


When using an ImageView, the implicit layout animations cannot be disabled. Normally, you disable implicit layout animations in QML by setting implicitLayoutAnimationsEnabled to false.


The requestFocus() function is not obtaining focus on TextArea and TextField controls.


Notifications in the BlackBerry Hub cannot be dismissed. The notifications will time out after 10-15 minutes or can be turned off completely.


After a device reboots, development mode is turned off, however the notification that it is on remains in the BlackBerry Hub.


The development mode indicator has been replaced with a notification in the BlackBerry Hub.


If you are using your device in Portrait mode and then switch to Landscape, your device might not display as expected.


Sometimes BBM gets stuck during startup on endless startup animations.
Workaround: Restart BBM.


Right-to-left languages in the BlackBerry Hub display as left-to-right, instead of right-to-left.


Fine cursors are placed directly under your finger and can be difficult to see where the fine cursor is.


If you're using ActionItems with the default title string, a dynamic language switch through Settings doesn't translate those ActionItem title strings.


On a text control with the editable property set to false, if you cut text from that control through the context menu, then reopen the context menu, you are able to paste text into a text control which you are not supposed to.


If multiple itemsChanged() signals are fired in quick succession on a ListView, the ListView doesn't update properly.


If you have one finger holding an item in the context menu, pressing off the context menu with another finger closes the context menu.


If you have one finger holding an item in the context menu, swiping from right to left with another finger on the same context menu expands the menu.


When using two handed interaction on the context menu, a release of the finger that initiated the menu starts navigation.


The cursor width might change depending on whether the cursor is placed at the end of a block of text, or between characters within the block of text.


If Retranslate.onTranslationChanged is called on a ListView item, then the application is closed, you might receive an error message.


When returning from a peek transisition, the TitleBar from the previous view sometimes gets stuck to the returned view.


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.


A list sometimes stutters when scrolling up and down.


If you open a link in your work calendar, your device might open it in your personal browser.


When connecting the SubmitKey for a TextField, the "Submit" text is not displayed for the enter key.


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


When highlighting text that is longer than the containing area, text can't be highlighted if it's past the visible area.


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


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


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


When text is entered into a TextField that is longer than the TextField, there is no ellipsis at the beginning of the text.


If you try to save a text message, you will get an error message and text message is not saved.


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


A ListView component defined in QML 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".


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.


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


The 24-Hour time setting is not set properly according to the region locale selected, and sometimes the 12-hour time is shown instead.


Target filters currently can register with the invocation framework dynamically (by calling the APIs), which is against the restrictions set for target filter registration. These restrictions prohibit the target filters from registering with the invocation framework through static (listing filters in the bar-descriptor.xml file) or dynamic (by calling the APIs).


When international characters are used in a URL, the translation sometimes is incorrect and the proper URL isn't displayed.


In the HardwareInfo class API reference, the processorCount(), processorSpeed(), processModel() functions state that the application must have read_moredeviceinfo permission to access this information. However, to access this information, the application must have read_hardware_inventory permission instead.


On the BlackBerry 10 Dev Alpha Simulator, when using the SpellChecker API, a list of suggested words might not return. Also, calling checkWord() sometimes returns true when a misspelled word is passed in.


When creating an application based off bb::core::Application and Qt only, a connected thumbnail() signal is not emitted when the application is minimized.


Using the SpellChecker API, the suggestions() method sometimes times out on the first time it's called and returns no suggestions. If suggestions() is called again after this, the list of suggestions is returned.


If you have a SystemUiInputField control and setMaximumLength() is called with a negative value, calls to inputFieldTextEntry() doesn't return the input string.


If your application has an app cover and the application is minimized then locked, the application doesn't occupy the full screen when unlocked and maximized.


The target() and targetType() functions of InvokeTargetReply class are returning incorrect values when target of type Viewer is invoked using the unbounded invocation.


When using the DataSource class with source is set to a remote URL through setSource() function, the type() function always "unknown data type" (which is 0) until the content is loaded through the load() function. However, this is not currently stated in the documentation.


After creating a DisplayInfo object for a secondary display, calls to physicalSize() on that DisplayInfo object can sometimes return incorrect values.


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 default false value.


The move() method of QListDataModel incorrectly moves items. 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.


When using the HardwareInfo class in an application with access_device_model_name permission, the modelName() and modelNumber() functions don't return the correct information. The access_device_model_name permission is not working correctly.


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.


If you create an app of core::application (instead of a common cascades app), signal asleep() is not emitted when the app screen is minimized.
Workaround: use a common cascades app (an app of bb::cascades::Application).


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


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


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


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


When using a ArrayDataModel and QListDataModel, the itemsChanged() signal is emitted with clear() is called on an empty data model.


If you have an ArrayDataModel containing QString types of values, a call to indexOf() looking for a QString type value within the range of the model returns a index, even if the QString type value isn't in the model.


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


Using the JsonDataAccess class with a .json file saved as UTF-8 with byte order mark (BOM) shows an error when calling error().
Workaround: Save the file as UTF-8 without BOM.


If you call find() on the empty GroupDataModel, a QVariantList containing a single 0 is returned (saying that we found an match at the very first item in the model) instead of an empty QVariantList as expected.


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

Cascades Builder


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


Using the IDE with older/unsupported video drivers may result in Momentics terminating unexpectedly without any error.
Workaround: Disable QML preview.


Sometimes compilation can fail if you're linking to libbbcascades.


Due to the nature of QML preview, auto-build is not supported.
Workaround: Manually build.


To debug sample projects that are loaded through the QNX Momentics IDE, debug code needs to be added to main.cpp. Newly created projects do not need enable debugging.
Workaround: If you're debugging based on a sample project, the debug code needed in main.cpp is putting #include <Qt/qdeclarativedebug.h> before the main() function.


When updating nine-slice margins for an image, changes may not be seen in QML preview.
Workaround: close and reopen QML file.


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.
Workaround: Restart the debug session and avoid interrupting it.


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


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


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.


WebView controls don't render in QML preview.


Hitting breakpoints in JavaScript will not suspend native/C++ threads in the application.


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


QML preview doesn't render international characters correctly.


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.


The Add Library Dependency wizard allows you to pick a new library to add to your project. You can modify Makefiles and .pro files for non-managed projects.


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.


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


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.

Cascades Exporter plug-in for Adobe Photoshop


On a Mac computer with the developer view enabled (BB10 Toolbar is shown and export review is enabled), after an image is exported with a preview, results are displayed, and the user closes the image, the exporter window inside Photoshop is disabled and can't be interacted with.
Workaround: To avoid this issue, close the BB10 Toolbar before exporting. If the issue has already happened, disable and enable the extension.


When exporting a 9-sliced image with developer view enabled, the export review doesn't show the image.
Workaround: To avoid this issue, detach the exporter plugin from the toolbar, so it is a standalone panel.


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

BlackBerry Messenger Social Platform


After blocking a contact from sending application download invitations by selecting "block future invites from <contact>" from a pending application invite, the user is unable to unblock the contact.


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.


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


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.

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.