Skip to end of metadata
Go to start of metadata

Titanium SDK 9.3.0.GA - 14 December 2020

About this release

Titanium SDK 9.3.0 is a minor release of the SDK, addressing high-priority issues from previous releases.

As of this release, Titanium SDK 9.2.x will not receive updates more than six months after the release of 9.3.0 (2021-05-14). Any needed fixes will be in 9.3.x or later supported releases within the 9.x branch. See Axway Appcelerator Deprecation Policy and Nominal Lifetimes documents for details.


With the release of Titanium SDK 9.0.0, we no longer support Node.js 8.X. Node 10.13.0 is the new minimum supported version.


Titanium SDK 9.3.0 is primarily focused on providing support for Android 11.

Community Credits


Android platform

  • TIMOB-28045 - Android 11 Support
  • TIMOB-18069 - make ListSection.getItemCount() and/or getContentCount() public
  • TIMOB-24983 - Add "HTTPClient.responseHeaders" support (feature parity with iOS)
  • TIMOB-25556 - Extend drawerLockMode to set Gravity
  • TIMOB-25854 - Grant WebView permissions for Audio/Video WebRTC streams
  • TIMOB-25991 - RefreshControl in ListView only works when dragging content
  • TIMOB-27077 - Rewrite Ti.UI.TableView to use RecyclerView
  • TIMOB-27138 - Add photo/video capture support to WebView
  • TIMOB-27201 - Update "Ti.Filesystem.File" to support unimplemented APIs when wrapping a "content://" URL
  • TIMOB-27714 - Add "Material Components" theme support (eb46ca0)
  • TIMOB-27743 - Remove hidden API usage from SDK
  • TIMOB-27787 - Add C/C++ debugging to SDK test app builds
  • TIMOB-27838 - Style default tableViewSection headerTitle using XML
  • TIMOB-27859 - Add "badge" support to TabGroup
  • TIMOB-27873 - Remove "nineoldandroids" library from SDK
  • TIMOB-27887 - Support WebAssembly in V8
  • TIMOB-27934 - Update "ti.playservices" module to use 17.5.0
  • TIMOB-27948 - Use of wrong string operator in string comparison in TiJSService
  • TIMOB-27970 - Update V8 runtime to 8.4
  • TIMOB-28046 - Compile with SDK version 30 (Android 11)
  • TIMOB-28047 - Target API Level 30 (Android 11) by default (4490c3e)
  • TIMOB-28049 - Investigate "ACCESS_BACKGROUND_LOCATION" handling on Android 11
  • TIMOB-28050 - Investigate "package visibility" handling on Android 11
  • TIMOB-28051 - Add foreground service type constants for "camera" and "microphone" (8fcbd4a) (0e98584)
  • TIMOB-28057 - Modify WebView to use scoped storage for <input/> file selection
  • TIMOB-28058 - Change Ti.Filesystem "temp" APIs to use app's cache folder
  • TIMOB-28059 - Modify Ti.Media APIs to use scoped storage
  • TIMOB-28080 - Add "tapjacking" prevention features (34cbeea) (413da3e)
  • TIMOB-28084 - use material theme by default (00e2816)
  • TIMOB-28087 - Add "NoTitleBar" and "Fullscreen" themes which derive from custom app theme (00e2816)
  • TIMOB-28088 - Rewrite Ti.UI.ListView to use RecyclerView
  • TIMOB-28102 - Update module Kotlin language support to 1.4.x (5dc0872)
  • TIMOB-28140 - WebView should request location permission when HTML uses geolocation API
  • TIMOB-28146 - Ti.Filesystem.File rename() should support an absolute path in same directory
  • TIMOB-28173 - Update gradle to 6.7
  • TIMOB-28182 - Only add WRITE_EXTERNAL_STORAGE permission when needed
  • TIMOB-28183 - Add Ti.Media.requestPhotoGalleryPermissions() support
  • TIMOB-28214 - Remove dead "TiAuthenticator" Java code to avoid security warnings
  • TIMOB-28223 - Use vector graphics for list/table icons
  • TIMOB-28230 - Add Ti.Filesystem.externalCacheDirectory support
  • TIMOB-28231 - Change Ti.Filesystem.externalStorageDirectory to use scoped storage
  • TIMOB-28269 - Amend session event behaviour
  • MOD-2588 - add passcode fallback to ti.identity (7e7934d)

iOS platform

  • TIMOB-27984 - allow multiple photo selection (8b53023)
  • TIMOB-28195 - Add node-ios-device v1 support for Node 14
  • add iphone 12 models to Node.js os shim (69bf699)
  • add new constants for Ti.Media.VIDEO_MEDIA_TYPE_ (d85d6f8)

Multiple platforms

  • add "" build hook (372bf70) (7186384)
  • emit '' build hook during module build before launching test app (8778f3f) (403d7e2)

Bug Fixes

Android platform

  • TIMOB-15015 - TableView.headerView cannot be set after setting data
  • TIMOB-16498 - Undesired tableView separatorColor is appearing in footerView
  • TIMOB-24874 - Selected row does not stay highlighted when using a TableView.
  • TIMOB-25333 - SearchBar height should default to Ti.UI.SIZE like iOS instead of FILL
  • TIMOB-26602 - Ti.Media.takePicture() will wrongly assign mp4 extension to image file if camera is configured for MEDIA_TYPE_VIDEO
  • TIMOB-26887 - TableView "headerTitle" and "footerTitle" cannot be changed after creation
  • TIMOB-27481 - Navigating back from camera overlay can wrongly close the app
  • TIMOB-27796 - TableViewSection does not scroll after a certain point
  • TIMOB-27948 - string reference equality in service (5ba35d3)
  • TIMOB-28027 - Build fails as duplicate string with "app_name" in i18n strings.xml file (98ff0e7) (d8d442e)
  • TIMOB-28048 - RefreshControl in TableView only works when dragging content
  • TIMOB-28079 - ACA module no longer loaded first on startup as of 8.1.0
  • TIMOB-28081 - App build fails if it includes an Apache "commons-logging" library
  • TIMOB-28084 - Modal/Translucent window ignores <navbar-hidden/> setting in "tiapp.xml"
  • TIMOB-28105 - AudioRecorder "recording" and "stopped" properties return the wrong state values (340bc36) (8e8d160)
  • TIMOB-28149 - App builds fail if it includes "Java-WebSocket" library
  • TIMOB-28161 - Modules built with 9.1.0 and using deprecated getter/setter property methods will crash on 9.0.x apps (6e025c5)
  • TIMOB-28162 - TableViewRow does not scale to height of parent
  • TIMOB-28163 - TableViewRow ignores borderRadius
  • TIMOB-28164 - TableViewRow displays incorrect background upon press
  • TIMOB-28165 - TableViewRow does not activate ripple effect from child views
  • TIMOB-28166 - TableViewRow does not apply opacity to child views
  • TIMOB-28167 - ListViewItem does not activate ripple effect from child views
  • TIMOB-28176 - createTempDirectory() does not create a directory
  • TIMOB-28177 - createTempFile() should create file under Ti.Filesystem.tempDirectory
  • TIMOB-28178 - Canceling out of Ti.Media.openPhotoGallery() causes a crash as of 9.1.0 (0e284e5)
  • TIMOB-28189 - Opening TabGroup crashes when using AppCompat theme as of 9.3.0 (6403da2)
  • TIMOB-28193 - Selecting multiple photos/videos via openPhotoGallery() can cause a crash as of 9.1.0 (0b1116f)
  • TIMOB-28212 - Listview modifies other rows on scroll
  • TIMOB-28220 - tintColor/activeTintColor or titleColor/activeTitleColor not respected for tabgroup with style TABS_STYLE_BOTTOM_NAVIGATION (f640850)
  • TIMOB-28222 - Ti.Android.R.transition doesn't exist (2773c51)
  • TIMOB-28240 - TableViewRow unable to change colour of row after a set time (Regression)
  • TIMOB-28246 - Ti.Media.previewImage() fails to display in-memory blobs as of 9.1.0 (984f811)
  • TIMOB-28252 - Modules built before 9.3.0 will return empty string instead of null
  • TIMOB-28271 - The searchBar border not shown in tableview/listview
  • TIMOB-28276 - ListView/TableView "headerView" may not show when setting height as of 9.3.0
  • TIMOB-28283 - Hyperloop based requires fail to load when using "remote" encryption policy
  • add accessor for Ti.Media.fullscreen property, default initialPlaybackTime to 0 (204827d)
  • allow overriding of toString() (f20ed51)
  • amend chevron vector icon color and size (8fde5bb)
  • amend icon color and size (8e63037)
  • amend size of more icon (ae23408)
  • amend Ti.UI.Shortcut implementation (975af13)
  • debug snapshot generation (dcfd0c7)
  • default to newer scalingMode constant default value (c151ff0)
  • draw outer border path correctly (e8c6d54)
  • formatting (db0cd77)
  • formatToParts() on Android 4.4 (2a2f0dc)
  • match static value for Ti.Media.MEDIA_TYPE_VIDEO to iOS (b0f6527)
  • null out Ti.UI.Window's navigationWindow property before close event (bdce8ae)
  • remove Ti.Media.VideoPlayer.contentURL property (5bf7826)
  • remove unnecessary v8 refs (4122858)
  • return empty array rather than null for Ti.Media.availableCameras if no cameras (48006b6)
  • snapshot template (3eab6b7)
  • start zip read, close zipfile when done (bdf7d36)
  • update more icon into down chevron (569dc77)
  • use manifest shortcuts for staticItems (79102ee)
  • window toString() (d1fd590)

Multiple platforms

  • TIMOB-28200 - Angular: Project created from template fails build with type errors
  • set prompt on project dir option (f5a4391)
  • return back userInfo.gid not guid (a70bbe3)

iOS platform

  • TIMOB-13903 - Reading TableView's "sectionCount" property crashes app (149eb4a)
  • TIMOB-27935 - TableViewRow does not return getRect methods
  • TIMOB-28111 - TabGroup focus event firing unexpectedly (5fa704d)
  • TIMOB-28148 - app crashes when updating tableview
  • TIMOB-28160 - "unrecognized selector sent to instance" logged for errors from native side
  • TIMOB-28207 - Packaging fails when Xcode path contains a space
  • TIMOB-28211 - The color property of Ti.UI.Button does not work when used in navbar (66e8d37)
  • TIMOB-28218 - Ti.UI.Clipboard example usage crashes on macOS
  • TIMOB-28219 - Ti.UI.Clipboard#remove() doesn't exist, but is documented
  • TIMOB-28221 - Default value of property Ti.Media.VideoPlayer.pictureInPictureEnabled should be true (ba7e5aa)
  • TIMOB-28232 - Several memory leaks in Titanium
  • TIMOB-28227 - Ti.UI.dateTimeColor is crashing on mac
  • fix Ti.Filesystem.getAsset and getFile on devices (3b2865d)
  • fix typo on Ti.Media.MUSIC_PLAYER_STATE_SEEK_FORWARD (de780ec)
  • gaurd code for MediaModule on xcode 11 to avoid compile issues (4144c96)
  • get rid of removed constants/properties (8a9a05e)
  • handle adding Ti.UI.Shortcut when existing array is nil (f967cf9)
  • modify BOOL to bool for return types to fix JS representation (43042cc)
  • set Ti.Codec.CHARSET_ISO_LATIN_1 to 'latin1' (4123b9b)
  • shortcut guard in Ti.UI module (7f44d8d)

SDK Module Versions


ModuleAndroid versioniOS version
  • No labels