Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Titanium SDK 10.0.0.RC -


21 April 2021

Table of Content Zone

About this release

Titanium SDK 10.0.0 is a major release of the SDK, addressing high-priority issues from previous releases; introducing some breaking changes; and removing a number of long-deprecated APIs. This version is the last major version released by Axway. Axway support for this version and prior versions released by Axway will be discontinued after March 1, 2022.

Community Credits


  • TIMOB-28346 - TiAPI: Remove getter/setter methods for properties
  • TIMOB-28011 - iOS: Drop iOS 10 support in Titanium SDK 10
  • TIMOB-28343 - CLI: Update minimum Node.js version to 12.13.0
  • TIMOB-28263 - Android: Change min supported version to Android 5.0 (API Level 21) (8440ad7)
  • TIMOB-28298 - Android: Material widget support (Requires "Theme.MaterialComponents" based theme)
  • TIMOB-28395 - Android: Use native APIs for forward/reverseGeocoder()
  • TIMOB-28396 - iOS: Use native APIs for forward/reverseGeocoder()
  • TIMOB-28403 - Analytics: Limit number of cached events
  • TIMOB-28198 - Deprecate TableViewRow header footer properties

The following APIs were removed in 10.0.0:

Removed APINotes / Replacement
Ti.Android.PENDING_INTENT_FOR_SERVICENo longer used.
Ti.Android.PENDING_INTENT_MAX_VALUENo longer used.
Ti.Android.Intent#getData()Use the property instead.
Ti.Android.MenuItem#setCheckable()Use the Ti.Android.MenuItem.checkable property instead.
Ti.Android.MenuItem#setChecked()Use the Ti.Android.MenuItem.checked property instead.
Ti.Android.MenuItem#setEnabled()Use the Ti.Android.MenuItem.enabled property instead.
Ti.Android.MenuItem#setVisible()Use the Ti.Android.MenuItem.visible property instead.
Ti.Media.AudioPlayer#getPaused()Use the cross-platform API Ti.Media.AudioPlayer.paused property instead.
Ti.Media.AudioPlayer#isPaused()Use the cross-platform API Ti.Media.AudioPlayer.paused property instead.
Ti.Media.AudioPlayer#getPlaying()Use the cross-platform API Ti.Media.AudioPlayer.playing property instead.
Ti.Media.AudioPlayer#isPlaying()Use the cross-platform API Ti.Media.AudioPlayer.playing property instead.
Ti.Media.AudioPlayer#setPaused()Use the cross-platform API Ti.Media.AudioPlayer.pause instead.
Ti.Media#hasAudioPermissions()Use Ti.Media.hasAudioRecorderPermissions instead.
PreviewImageError.messageUse error property instead
Ti.Media.Sound.error.messageUse the error property instead
Ti.Media.VideoPlayer.error.messageUse error property instead
Ti.Network.HTTPClient#setTimeout()Use the Ti.Network.HTTPClient.timeout property instead.
Ti.UI.iOS.NavigationWindowUse Ti.UI.NavigationWindow instead.
Ti.UI.iOS.TabbedBarUse Ti.UI.TabbedBar instead.
Ti.UI.iOS.ToolbarUse the cross-platform Ti.UI.Toolbar instead.
Ti.UI.TabGroup#getActiveTab()Use the Ti.UI.TabGroup.activeTab property instead.
Ti.UI.TabGroup#setActiveTab()Use the Ti.UI.TabGroup.activeTab property instead.
Ti.UI.TabGroup#getTabs()Use the Ti.UI.TabGroup.tabs property instead.
Ti.UI.TableView#setHeaderPullView()Use the Ti.UI.TableView.headerPullView property instead.

Bug Fixes

Multiple platforms

  • TIMOB-26304 - TiAPI: Ti.UI.TableViewRow.* selectedBackgroundColor partially deprecated
  • TIMOB-27807 - convertPointToView() to use "ti.ui.defaultunit" (b4f6c3e)
  • TIMOB-28205 - Angular: packaging an angular app fails
  • TIMOB-28264 - Improve Ti.UI documentation to reflect current state
  • TIMOB-28401 - declare all variables before their usage (062c06d)
  • replace shortened URLs with long URLs (d0caea0)
  • filepath compatibility with windows (824488f)
  • handle when project has no root package.json (7b9a747)
  • record output files for process js task (e7951bd)
  • remove unused event (56ddf95)
  • support cjs files in apps equivalent to js files (4b2c8fc)

Android platform

  • TIMOB-24365 - Ti.UI.ActivityIndicator "indicatorColor" not working
  • TIMOB-24735 - AttributedString link underline color
  • TIMOB-26663 - touchFeedbackColor doesn't work if view has a transparent backgroundColor and a border (5b5ac48)
  • TIMOB-27504 - touchFeedback / ripple does not work when tapped from child view (5e77724)
  • TIMOB-27807 - convertPointToView() returns pixels instead of default units
  • TIMOB-28270 - App builds fail if it includes the "jaxen" library
  • TIMOB-28272 - Accelerometer spams warning messages when exiting app (e10b6e6)
  • TIMOB-28329 - touchFeedback property on ListView is ignored and true by default (5e77724)
  • TIMOB-28330 - Application crashes when scrolling a listview with zero items in the first section:
  • TIMOB-28333 - rgba(int,int,int) parity with iOS (d36c5c7)
  • TIMOB-28345 - CLI: -b shorthand does not work for Android and perform a full build
  • TIMOB-28352 - Application crashes when scrolling to listview marker
  • TIMOB-28375 - Hyperloop fails to access enum types with JDK 12
  • TIMOB-28376 - Update header and footer view activity (ef5c95d)
  • TIMOB-28383 - minRowHeight of tableview does not work
  • TIMOB-28384 - rightImage property for tableviewrow does not work for res images in "/images/" folder
  • TIMOB-28385 - ListView crash error on SDK 9.3.X
  • TIMOB-28387 - index in TableView click event is no longer unique
  • TIMOB-28388 - Calling updateRow does not update rows other than the first row
  • TIMOB-28389 - Calling TableViewRow.remove does not remove child view that is a Label
  • TIMOB-28399 - TableView setData does not preserve TableViewRow child views (cee557b)
  • TIMOB-28404 - amend TabGroup selected tab (c08379b) (d13c884)
  • TIMOB-28406 - ListView on a modal with a * transparent background is invisible (55910d8)
  • TIMOB-28410 - ListView causes ArrayIndexOutOfBoundsException in production (aa7a8c2)
  • add back Ti.Media.Sound.setLooping for now (1c14926)
  • add V8Promise constructor with existing pointer value (b1d88f9)
  • avoid calling toString on empty clipboard text (d0b632f)
  • explicitly define Ti.Android.currentService to be null when not a service (7ce713c)
  • expose builder property for hyperloop to mark js files not to process (a6ad3ed)
  • expose properties for get/set pairs on QuickSettingsService (b21ece2)
  • expose Ti.UI.Tab activeTintColor/tintColor properties (63844f1)
  • fix Ti.Blob.arrayBuffer definition (2d9bfce)
  • guard copying processed js to not do so when encrypting (9c23b99)
  • handle resource images/drawables and splash screens (3cd22eb)
  • override global.L behavior for non-string default values (6f6cea2)
  • reject promise with Error in MediaModule (1de2eb3)
  • remote policy encryption error dialog handling (222cba1)
  • remove getters for documented properties on RecurrenceRule (a413a9e)
  • remove set methods for width/height/center for Views (70bd7a7)
  • restore MenuItem is* boolean query methods (49a6f7f)
  • restore Sound is* boolean query methods (c35cc4a)
  • set minSdkVersion to 19 (8440ad7)
  • TableView regressions (65ed909)
  • the Ti.UI.Clipboard#hasData() arg is optional (51b6428)
  • use C++14 when building native modules (2df13a9)
  • warning logged by widgets when needlessly removing background (f89fecf)

iOS platform

  • TIMOB-26913 - New SearchBar property "showSearchBarInNavBar" does not work with custom item templates
  • TIMOB-27888 - circular references in require don't work
  • TIMOB-28037 - Relative path require not working with node_modules
  • TIMOB-28209 - App orientations stopped when using the search bar in the listview (10c1a25)
  • TIMOB-28217 - Ti.Media.VideoPlayer is crashing when setting showsControls earlier than url property (e84ce9d)
  • TIMOB-28267 - removing eventlistener multiple times ourCallbackCount should not be in negative value (798bd54)
  • TIMOB-28275 - RemovingEventListener in Location event will freeze App (0749a30)
  • TIMOB-28281 - Support Big Sur / Apple Silicon
  • TIMOB-28297 - support ti symbols via xcconfig file to work with swift (c61d943)
  • TIMOB-28324 - image from filereader function not being called (a18fb68)
  • TIMOB-28325 - ListView row is incorrectly sized when using INSET_GROUPED and Ti.UI.SIZE (4488fe2)
  • TIMOB-28331 - Updating the "labels" property in the "Ti.UI.TabbedBar" sometimes does not work (6ffe8f9)
  • TIMOB-28360 - DocumentViewer setAnnotation method causing a crash (bba9eef)
  • TIMOB-28361 - largeTitleDisplayMode always is not respected on load when using a ListView in a Window (26b5bfe)
  • TIMOB-28382 - Requiring a native module errors when building with liveview
  • TIMOB-28394 - openWindow transition broken / frame dropping (10.x regression)
  • TIMOB-28401 - Building an app with a DefaultIcon that contains alpha errors
  • TIMOB-28404 - tabGroup.setActiveTab() and text.setSelection() shows an error (fff45b2)
  • TIMOB-28408 - App with remote policy encryption crashes when offline (5c9d3f9)
  • autorelease Ti.Blob#arrayBuffer() Promise (9afe176)
  • call callback on Geolocation#requestTemporaryFullAccuracyAuthorization if missing purpose (2155d0a)
  • convert JSValue* to JSValueRef directly (33508b6)
  • convert KrollPromise to JSValueRef for return types of old proxies (62ee5c5)
  • deprecate selectedBackgroundColor and selectedBackgroundImage (dc07aeb)
  • deprecate selectedBackgroundGradient (9cf10cd)
  • detect when ios has service (7fe9cf4)
  • error code/object for Ti.Geolocation permissions/position (974a7f6)
  • explicitly flush KrollPromises created internally and not exposed to JS (682e64a)
  • expose KrollPromise as part of TitaniumKit (a6d2c5b)
  • expose Ti.Network.HTTPClient#getAllResponseHeaders() (e520aa2)
  • fire authorization changes even when no callback (25a1873)
  • fix list-view crash (7c1aa59)
  • fix sytax error (0d662e1)
  • fixed sdk build issue (b0c41aa)
  • formatting (d325bac)
  • guard launch image code to ios only, match to only root images (7ce99e8)
  • guard simulator check for Ti.Platform.model with define (1bcf4d6)
  • have KrollPromise static methods return instancetype, not JSValue* (de50c8c)
  • if user supplies no specific auth constant for hasLocationPermissions, assume WHEN_IN_USE (5db8321)
  • implement Ti.Blob binary toString natively (ce900a7)
  • implement Ti.Blob.arrayBuffer natively (46842aa)
  • implement Ti.UI.Tab.setWindow() in JS to avoid error (2185a8f)
  • make JSValue nonatomic property, retain it under the hood, handle exception in creation (10c4acd)
  • make KrollPromise no-op under covers when KrollFinalizer is running to avoid crash (b3aaaa3)
  • merged switch statment (97d157a)
  • minor fixes for Ti.Geolocation#requestLocationPermissions() (82ff625)
  • modify gathering of npm packages (82f7a33)
  • prevent deprecation warning (d36b81b)
  • properly handle Ti.UI.Clipboard.setData with Files (485f5cf)
  • report Ti.Media.VideoPlayer.error event with all typical error properties (2f1a84b)
  • tweak to get correct platform values on macos (e9a6587)
  • use compile guard for determining if macos (df14d0a)
  • remove unsupported architectures (a4e61bf)


Multiple platforms

Android platform

iOS platform

  • TIMOB-20473 - Support storyboard in iOS-modules (7292d1b)
  • TIMOB-27355 - Support native iOS 13+ JavaScriptCore promises
  • TIMOB-27865 - Titanium should add view controllers as children
  • TIMOB-28259 - Replace OSSpinLock usage with os_unfair_lock
  • TIMOB-28282 - Use supportedInterfaceOrientations of UINavigationController.topViewController instead of UINavigationController
  • TIMOB-28297 - swift files doesn't recognize macros defined in defines.h
  • TIMOB-28302 - macOS: Add checkbox style to Ti.UI.Switch
  • TIMOB-28304 - Enabling swift in Objc based module is failing while building
  • TIMOB-28334 - Update modules to set minimum target iOS 11
  • TIMOB-28342 - Drop iOS 11 support in titanium SDK 10
  • have Ti.Database.DB.executeAllAsync return a Promise (6c4253f)
  • have Ti.Database.DB.executeAsync return a Promise (fbbbe98)
  • include project root node_modules folder in app (84d5641)
  • move to JS based require implementation (1e66008)
  • return Promise from (5fa6258)
  • return Promises from Ti.Geolocation.getCurrentHeading/Position methods (a4015cd)
  • support Ti.UI.NavigationWindow#open()/close() returning Promise (ca09400)
  • support Ti.UI.TabGroup#open()/close() returning Promise (cafd270)

SDK Module Versions

ModuleAndroid versioniOS Version