# Titanium SDK 10.0.0.GA - 17 May 2021
# 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
Hans Knöchel
TIMOB-28376 (opens new window) - fragments in children of list view and tableview header/footerview (ef5c95d (opens new window))
remove unused event (56ddf95 (opens new window))
Revert "perf(ios): use new API for rendering view to image" (91c00ba (opens new window))
Michael Gangolf
TIMOB-28348 (opens new window) - text alignment justify (851b4f6 (opens new window))
TIMOB-28333 (opens new window) - rgba(int,int,int) parity (d36c5c7 (opens new window))
add missing parameter in NotificationChannel (fa17daf (opens new window))
docs(api): add information about material Buttons (e5eb0a0 (opens new window))
Sergey Volkov
"requestPermissions" and Geolocation APIs return Promise (971e71e (opens new window))
TIMOB-24549 (opens new window) - native Promise API (ea75a0f (opens new window))
# BREAKING CHANGES
TIMOB-28346 (opens new window) - TiAPI: Remove getter/setter methods for properties
TIMOB-28011 (opens new window) - iOS: Drop iOS 10 support in Titanium SDK 10
TIMOB-28343 (opens new window) - CLI: Update minimum Node.js version to 12.13.0
TIMOB-28263 (opens new window) - Android: Change min supported version to Android 5.0 (API Level 21) (8440ad7 (opens new window))
TIMOB-28298 (opens new window) - Android: Material widget support (Requires "Theme.MaterialComponents" based theme)
TIMOB-28395 (opens new window) - Android: Use native APIs for forward/reverseGeocoder()
TIMOB-28396 (opens new window) - iOS: Use native APIs for forward/reverseGeocoder()
TIMOB-28403 (opens new window) - Analytics: Limit number of cached events
TIMOB-28198 (opens new window) - Deprecate TableViewRow header footer properties
The following APIs were removed in 10.0.0:
Removed API | Notes / Replacement |
---|---|
Ti.Android.PENDING_INTENT_FOR_ACTIVITY | No longer used. |
Ti.Android.PENDING_INTENT_FOR_BROADCAST | No longer used. |
Ti.Android.PENDING_INTENT_FOR_SERVICE | No longer used. |
Ti.Android.PENDING_INTENT_MAX_VALUE | No longer used. |
Ti.Android.Intent#getData() | Use the Ti.Android.Intent.data 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.message | Use error property instead |
Ti.Media.Sound.error.message | Use the error property instead |
Ti.Media.VideoPlayer.error.message | Use error property instead |
Ti.Network.HTTPClient#setTimeout() | Use the Ti.Network.HTTPClient.timeout property instead. |
Ti.UI.iOS.NavigationWindow | Use Ti.UI.NavigationWindow instead. |
Ti.UI.iOS.TabbedBar | Use Ti.UI.TabbedBar instead. |
Ti.UI.iOS.Toolbar | Use 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 (opens new window) - TiAPI: Ti.UI.TableViewRow.* selectedBackgroundColor partially deprecated
TIMOB-27807 (opens new window) - convertPointToView() to use "ti.ui.defaultunit" (b4f6c3e (opens new window))
TIMOB-28205 (opens new window) - Angular: packaging an angular app fails
TIMOB-28264 (opens new window) - Improve Ti.UI documentation to reflect current state
TIMOB-28401 (opens new window) - declare all variables before their usage (062c06d (opens new window))
TIMOB-28440 (opens new window) - Production builds crash if Node 14 is installed (94ab6bf (opens new window),948b4bd (opens new window))
replace shortened appcelerator.com (opens new window) URLs with long URLs (d0caea0 (opens new window))
filepath compatibility with windows (824488f (opens new window))
handle when project has no root package.json (7b9a747 (opens new window))
record output files for process js task (e7951bd (opens new window))
remove unused event (56ddf95 (opens new window))
support cjs files in apps equivalent to js files (4b2c8fc (opens new window))
# Android platform
TIMOB-24365 (opens new window) - Ti.UI.ActivityIndicator "indicatorColor" not working
TIMOB-24735 (opens new window) - AttributedString link underline color
TIMOB-26663 (opens new window) - touchFeedbackColor doesn't work if view has a transparent backgroundColor and a border (5b5ac48 (opens new window))
TIMOB-27504 (opens new window) - touchFeedback / ripple does not work when tapped from child view (5e77724 (opens new window))
TIMOB-27807 (opens new window) - convertPointToView() returns pixels instead of default units
TIMOB-28270 (opens new window) - App builds fail if it includes the "jaxen" library
TIMOB-28272 (opens new window) - Accelerometer spams warning messages when exiting app (e10b6e6 (opens new window))
TIMOB-28329 (opens new window) - touchFeedback property on ListView is ignored and true by default (5e77724 (opens new window))
TIMOB-28330 (opens new window) - Application crashes when scrolling a listview with zero items in the first section:
TIMOB-28333 (opens new window) - rgba(int,int,int) parity with iOS (d36c5c7 (opens new window))
TIMOB-28345 (opens new window) - CLI: -b shorthand does not work for Android and perform a full build
TIMOB-28352 (opens new window) - Application crashes when scrolling to listview marker
TIMOB-28375 (opens new window) - Hyperloop fails to access enum types with JDK 12
TIMOB-28376 (opens new window) - Update header and footer view activity (ef5c95d (opens new window))
TIMOB-28383 (opens new window) - minRowHeight of tableview does not work
TIMOB-28384 (opens new window) - rightImage property for tableviewrow does not work for res images in "/images/" folder
TIMOB-28385 (opens new window) - ListView crash error on SDK 9.3.X
TIMOB-28387 (opens new window) - index in TableView click event is no longer unique
TIMOB-28388 (opens new window) - Calling updateRow does not update rows other than the first row
TIMOB-28389 (opens new window) - Calling TableViewRow.remove does not remove child view that is a Label
TIMOB-28399 (opens new window) - TableView setData does not preserve TableViewRow child views (cee557b (opens new window))
TIMOB-28404 (opens new window) - amend TabGroup selected tab (c08379b (opens new window)) (d13c884 (opens new window))
TIMOB-28406 (opens new window) - ListView in a modal window with a transparent background is invisible (55910d8 (opens new window))
TIMOB-28410 (opens new window) - ListView causes ArrayIndexOutOfBoundsException in production (aa7a8c2 (opens new window))
TIMOB-28423 (opens new window) - Windows - Unable to launch application on 2nd run without cleaning (7d6ba8a (opens new window), 6a0cfa5 (opens new window))
TIMOB-28424 (opens new window) - Drop-down picker text color does not change when switching dark/light theme (499cba5 (opens new window))
TIMOB-28430 (opens new window) - Use correct TableView moveable property (da7b6b4 (opens new window))
TIMOB-28438 (opens new window) - TableViewSection header displays the first header text for all other headers (ccd55c4 (opens new window))
TIMOB-28442 (opens new window) - maxDate is not respected when value of picker is set higher than maxDate (1c8b82b (opens new window))
add back Ti.Media.Sound.setLooping for now (1c14926 (opens new window))
add V8Promise constructor with existing pointer value (b1d88f9 (opens new window))
avoid calling toString on empty clipboard text (d0b632f (opens new window))
explicitly define Ti.Android.currentService to be null when not a service (7ce713c (opens new window))
expose builder property for hyperloop to mark js files not to process (a6ad3ed (opens new window))
expose properties for get/set pairs on QuickSettingsService (b21ece2 (opens new window))
expose Ti.UI.Tab activeTintColor/tintColor properties (63844f1 (opens new window))
fix Ti.Blob.arrayBuffer definition (2d9bfce (opens new window))
guard copying processed js to not do so when encrypting (9c23b99 (opens new window))
handle resource images/drawables and splash screens (3cd22eb (opens new window))
override global.L behavior for non-string default values (6f6cea2 (opens new window))
reject promise with Error in MediaModule (1de2eb3 (opens new window))
remote policy encryption error dialog handling (222cba1 (opens new window))
remove getters for documented properties on RecurrenceRule (a413a9e (opens new window))
remove set methods for width/height/center for Views (70bd7a7 (opens new window))
restore MenuItem is* boolean query methods (49a6f7f (opens new window))
restore Sound is* boolean query methods (c35cc4a (opens new window))
set minSdkVersion to 19 (8440ad7 (opens new window))
TableView regressions (65ed909 (opens new window))
the Ti.UI.Clipboard#hasData() arg is optional (51b6428 (opens new window))
use C++14 when building native modules (2df13a9 (opens new window))
warning logged by widgets when needlessly removing background (f89fecf (opens new window))
# iOS platform
TIMOB-26913 (opens new window) - New SearchBar property "showSearchBarInNavBar" does not work with custom item templates
TIMOB-27888 (opens new window) - circular references in require don't work
TIMOB-28037 (opens new window) - Relative path require not working with node_modules
TIMOB-28209 (opens new window) - App orientations stopped when using the search bar in the listview (10c1a25 (opens new window))
TIMOB-28217 (opens new window) - Ti.Media.VideoPlayer is crashing when setting showsControls earlier than url property (e84ce9d (opens new window))
TIMOB-28267 (opens new window) - removing eventlistener multiple times ourCallbackCount should not be in negative value (798bd54 (opens new window))
TIMOB-28275 (opens new window) - Removing event listener in "location" event will freeze App (0749a30 (opens new window))
TIMOB-28281 (opens new window) - Support Big Sur / Apple Silicon
TIMOB-28297 (opens new window) - support ti symbols via xcconfig file to work with swift (c61d943 (opens new window))
TIMOB-28324 (opens new window) - image from filereader function not being called (a18fb68 (opens new window))
TIMOB-28325 (opens new window) - ListView row is incorrectly sized when using INSET_GROUPED and Ti.UI.SIZE (4488fe2 (opens new window))
TIMOB-28331 (opens new window) - Updating the "labels" property in the "Ti.UI.TabbedBar" sometimes does not work (6ffe8f9 (opens new window))
TIMOB-28360 (opens new window) - DocumentViewer setAnnotation method causing a crash (bba9eef (opens new window))
TIMOB-28361 (opens new window) - largeTitleDisplayMode always is not respected on load when using a ListView in a Window (26b5bfe (opens new window))
TIMOB-28382 (opens new window) - Requiring a native module errors when building with liveview
TIMOB-28394 (opens new window) - openWindow transition broken / frame dropping (10.x regression)
TIMOB-28401 (opens new window) - Building an app with a DefaultIcon that contains alpha errors
TIMOB-28404 (opens new window) - tabGroup.setActiveTab() and text.setSelection() shows an error (fff45b2 (opens new window))
TIMOB-28408 (opens new window) - App with remote policy encryption crashes when offline (5c9d3f9 (opens new window))
TIMOB-28422 (opens new window) - Debugger not hitting breakpoint (0099dc3 (opens new window))
TIMOB-28339 (opens new window) - macOS catalyst apps intermittently crashing on Ti.UI.iOS.CollisionBehavior tests (02e400a (opens new window))
TIMOB-28413 (opens new window) - intermittent crash on TableView INSET_GROUPED test (6b3a9ec (opens new window))
TIMOB-28344 (opens new window) - Table view unit test is crashing sometimes on iPad (6b3a9ec (opens new window))
TIMOB-28296 (opens new window) - macOS Frequently Crashing due to Ti.UI.Picker tests (0468283 (opens new window))
TIMOB-28429 (opens new window) - Build failed with assets containing a tilde (~) in filename (0f1b754 (opens new window))
TIMOB-28443 (opens new window) - ScrollView setZoomScale()/setContentOffset() methods crash as of 10.0.0 (8dcf5c8 (opens new window))
TIMOB-28444 (opens new window) - Missing setters with 2 arguments(8fd166c (opens new window))
autorelease Ti.Blob#arrayBuffer() Promise (9afe176 (opens new window))
call callback on Geolocation#requestTemporaryFullAccuracyAuthorization if missing purpose (2155d0a (opens new window))
convert JSValue* to JSValueRef directly (33508b6 (opens new window))
convert KrollPromise to JSValueRef for return types of old proxies (62ee5c5 (opens new window))
deprecate selectedBackgroundColor and selectedBackgroundImage (dc07aeb (opens new window))
deprecate selectedBackgroundGradient (9cf10cd (opens new window))
detect when ios has service (7fe9cf4 (opens new window))
error code/object for Ti.Geolocation permissions/position (974a7f6 (opens new window))
explicitly flush KrollPromises created internally and not exposed to JS (682e64a (opens new window))
expose KrollPromise as part of TitaniumKit (a6d2c5b (opens new window))
expose Ti.Network.HTTPClient#getAllResponseHeaders() (e520aa2 (opens new window))
fire authorization changes even when no callback (25a1873 (opens new window))
fix list-view crash (7c1aa59 (opens new window))
fix sytax error (0d662e1 (opens new window))
fixed sdk build issue (b0c41aa (opens new window))
formatting (d325bac (opens new window))
guard launch image code to ios only, match to only root images (7ce99e8 (opens new window))
guard simulator check for Ti.Platform.model with define (1bcf4d6 (opens new window))
have KrollPromise static methods return instancetype, not JSValue* (de50c8c (opens new window))
if user supplies no specific auth constant for hasLocationPermissions, assume WHEN_IN_USE (5db8321 (opens new window))
implement Ti.Blob binary toString natively (ce900a7 (opens new window))
implement Ti.Blob.arrayBuffer natively (46842aa (opens new window))
implement Ti.UI.Tab.setWindow() in JS to avoid error (2185a8f (opens new window))
make JSValue nonatomic property, retain it under the hood, handle exception in creation (10c4acd (opens new window))
make KrollPromise no-op under covers when KrollFinalizer is running to avoid crash (b3aaaa3 (opens new window))
merged switch statment (97d157a (opens new window))
minor fixes for Ti.Geolocation#requestLocationPermissions() (82ff625 (opens new window))
modify gathering of npm packages (82f7a33 (opens new window))
prevent deprecation warning (d36b81b (opens new window))
properly handle Ti.UI.Clipboard.setData with Files (485f5cf (opens new window))
report Ti.Media.VideoPlayer.error event with all typical error properties (2f1a84b (opens new window))
tweak to get correct platform values on macos (e9a6587 (opens new window))
use compile guard for determining if macos (df14d0a (opens new window))
remove unsupported architectures (a4e61bf (opens new window))
# Features
# Multiple platforms
TIMOB-24549 (opens new window) - TiAPI: Add support for Promises (ea75a0f (opens new window)) (23541b3 (opens new window)) (bbb48f8 (opens new window))
TIMOB-26352 (opens new window) - CLI: node_modules in project root should be handled properly
TIMOB-28302 (opens new window) - add checkbox style to Ti.UI.Switch (446d215 (opens new window))
TIMOB-28317 (opens new window) - add Ti.UI.OptionBar (260f65b (opens new window))
TIMOB-28328 (opens new window) - Update to recommend installing @appcd/plugin-webpack via appcd pm rather than from npm
TIMOB-28340 (opens new window) - Return Promise for Ti.UI.Window open() and close()
TIMOB-28364 (opens new window) - TiAPI: Return Promises for async Ti.* Geolocation APIs
TIMOB-28367 (opens new window) - Ti.UI.ProgressBar should smoothly animate value changes
TIMOB-28369 (opens new window) - Add Ti.UI.overrideUserInterfaceStyle property
TIMOB-28372 (opens new window) - Remove native module verification
# Android platform
TIMOB-24735 (opens new window) - implement ATTRIBUTE_UNDERLINE_COLOR functionality (645c91e (opens new window))
TIMOB-25954 (opens new window) - Add "Ti.UI.ButtonBar" support (5a6be04 (opens new window))
TIMOB-26263 (opens new window) - Add "MaterialButton" support to "Ti.UI.Button" (f835bba (opens new window))
TIMOB-28082 (opens new window) - Update "CardView" to support material theme (a828779 (opens new window))
TIMOB-28083 (opens new window) - Update dialogs to support material theme
TIMOB-28086 (opens new window) - Update "Toolbar" to support material theme (1c1431d (opens new window))
TIMOB-28286 (opens new window) - Touch events should fire synchronously
TIMOB-28299 (opens new window) - Add new material theme styles to "TextField" and "TextArea" (4d81389 (opens new window)) (ed22a7d (opens new window))
TIMOB-28300 (opens new window) - Add material "chip" style to Ti.UI.Switch (4295acc (opens new window))
TIMOB-28301 (opens new window) - Use the material DayNight theme by default (86a704f (opens new window))
TIMOB-28326 (opens new window) - Number-based "itemId" is transformed into string in ListView
TIMOB-28336 (opens new window) - Update V8 runtime to 8.8 (738b2c2 (opens new window)) (be490ba (opens new window))
TIMOB-28348 (opens new window) - Add TEXT_ALIGNMENT_JUSTIFY support (851b4f6 (opens new window))
TIMOB-28351 (opens new window) - Update ProgressBars/ActivityIndicators to use material theme (b1c5d0a (opens new window))
TIMOB-28353 (opens new window) - Update Date/Time picker dialogs to use material theme (6fbe014 (opens new window))
TIMOB-28370 (opens new window) - Add "title" support to Ti.UI.Switch slider style
TIMOB-28390 (opens new window) - Change Ti.UI.SearchBar to use native SearchView (9637ac1 (opens new window))
TIMOB-28402 (opens new window) - Implement delete event for ListView and TableView (6b60f5f (opens new window))
"requestPermissions" and Geolocation APIs return Promise (971e71e (opens new window))
add "?attr/color" string support (4dde745 (opens new window))
add npm packages to android apps (7ea9d0e (opens new window))
add outlined CardView support (dc3b279 (opens new window))
change button theme to not all-caps (a664bc8 (opens new window))
expose Ti.Media.AudioPlayer.audioSessionId as read-only property (d8c64af (opens new window))
fetchSemanticColor() support dynamic light/dark change (0b07d89 (opens new window))
have Ti.Database.DB.executeAllAsync return a Promise (41e83be (opens new window))
scale top tab style to fit icon (8d2831d (opens new window))
have Ti.Database.DB.executeAsync return a Promise (4b03ac6 (opens new window))
make Geolocation getCurrentHeading/Position return Promises (fcf6d0a (opens new window))
return Promise from Ti.UI.Window.close() (d67537f (opens new window))
return Promise from Ti.UI.Window.open() (2fda671 (opens new window))
# iOS platform
TIMOB-20473 (opens new window) - Support storyboard in iOS-modules (7292d1b (opens new window))
TIMOB-27355 (opens new window) - Support native iOS 13+ JavaScriptCore promises
TIMOB-27865 (opens new window) - Titanium should add view controllers as children
TIMOB-28259 (opens new window) - Replace OSSpinLock usage with os_unfair_lock
TIMOB-28282 (opens new window) - Use supportedInterfaceOrientations of UINavigationController.topViewController instead of UINavigationController
TIMOB-28297 (opens new window) - swift files doesn't recognize macros defined in defines.h
TIMOB-28302 (opens new window) - macOS: Add checkbox style to Ti.UI.Switch
TIMOB-28304 (opens new window) - Enabling swift in Objc based module is failing while building
TIMOB-28334 (opens new window) - Update modules to set minimum target iOS 11
TIMOB-28342 (opens new window) - Drop iOS 11 support in titanium SDK 10
have Ti.Database.DB.executeAllAsync return a Promise (6c4253f (opens new window))
have Ti.Database.DB.executeAsync return a Promise (fbbbe98 (opens new window))
include project root node_modules folder in app (84d5641 (opens new window))
move to JS based require implementation (1e66008 (opens new window))
return Promise from Ti.UI.Window.open()/close() (5fa6258 (opens new window))
return Promises from Ti.Geolocation.getCurrentHeading/Position methods (a4015cd (opens new window))
support Ti.UI.NavigationWindow#open()/close() returning Promise (ca09400 (opens new window))
support Ti.UI.TabGroup#open()/close() returning Promise (cafd270 (opens new window))
# SDK Module Versions
Module | Android version | iOS Version |
---|---|---|
11.0.2 | 11.0.0 | |
ti.cloudpush | 7.1.0 | n/a |
ti.map | 5.0.1 | 5.0.0 |
ti.webdialog | 2.0.0 | 3.0.0 |
ti.playservices | 17.5.0 | n/a |
ti.identity | 3.0.2 | 4.0.0 |
urlSession | n/a | 4.0.0 |
ti.coremotion | n/a | 4.0.0 |
ti.applesignin | n/a | 3.0.0 |
ti.cloud | 3.2.11 | 3.2.11 |
hyperloop | 7.0.1 |