Titanium SDK 10.0.0.GA
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.
⚠️ Titanium SDK 10.0.0 will be the last major release of the produce. Titanium SDK will no longer be supported beyond March 2022.
Community Credits
Hans Knöchel
- TIMOB-28376 - fragments in children of list view and tableview header/footerview (ef5c95d)
- remove unused event (56ddf95)
- Revert "perf(ios): use new API for rendering view to image" (91c00ba)
Michael Gangolf
- TIMOB-28348 - text alignment justify (851b4f6)
- TIMOB-28333 - rgba(int,int,int) parity (d36c5c7)
- add missing parameter in NotificationChannel (fa17daf)
Sergey Volkov
- "requestPermissions" and Geolocation APIs return Promise (971e71e)
- TIMOB-24549 - native Promise API (ea75a0f)
BREAKING CHANGES
- 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-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
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-28367 - Ti.UI.ProgressBar should smoothly animate value changes
- 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-28208 - Several memory leaks in Titanium
- 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)
Features
Multiple platforms
- TIMOB-24549 - TiAPI: Add support for Promises (ea75a0f) (23541b3) (bbb48f8)
- TIMOB-26352 - CLI: node_modules in project root should be handled properly
- TIMOB-28302 - add checkbox style to Ti.UI.Switch (446d215)
- TIMOB-28317 - add Ti.UI.OptionBar (260f65b)
- TIMOB-28328 - Update to recommend installing @appcd/plugin-webpack via appcd pm rather than from npm
- TIMOB-28340 - Return Promise for Ti.UI.Window open() and close()
- TIMOB-28364 - TiAPI: Return Promises for async Ti.* Geolocation APIs
- TIMOB-28372 - Remove native module verification
Android platform
- TIMOB-24735 - implement ATTRIBUTE_UNDERLINE_COLOR functionality (645c91e)
- TIMOB-25954 - Add "Ti.UI.ButtonBar" support (5a6be04)
- TIMOB-26263 - Add "MaterialButton" support to "Ti.UI.Button" (f835bba)
- TIMOB-28082 - Update "CardView" to support material theme (a828779)
- TIMOB-28083 - Update dialogs to support material theme
- TIMOB-28086 - Update "Toolbar" to support material theme (1c1431d)
- TIMOB-28286 - Touch events should fire synchronously
- TIMOB-28298 - Material widget support
- TIMOB-28299 - Add new material theme styles to "TextField" and "TextArea" (4d81389) (ed22a7d)
- TIMOB-28300 - Add material "chip" style to Ti.UI.Switch (4295acc)
- TIMOB-28301 - Use the material DayNight theme by default (86a704f)
- TIMOB-28326 - Number-based "itemId" is transformed into string in ListView
- TIMOB-28336 - Update V8 runtime to 8.8 (738b2c2) (be490ba)
- TIMOB-28348 - Add TEXT_ALIGNMENT_JUSTIFY support (851b4f6)
- TIMOB-28351 - Update ProgressBars/ActivityIndicators to use material theme (b1c5d0a)
- TIMOB-28353 - Update Date/Time picker dialogs to use material theme (6fbe014)
- TIMOB-28369 - Add Ti.UI.overrideUserInterfaceStyle property
- TIMOB-28370 - Add "title" support to Ti.UI.Switch slider style
- TIMOB-28390 - Change Ti.UI.SearchBar to use native SearchView (9637ac1)
- TIMOB-28402 - Implement delete event for ListView and TableView (6b60f5f)
- "requestPermissions" and Geolocation APIs return Promise (971e71e)
- add "?attr/color" string support (4dde745)
- add npm packages to android apps (7ea9d0e)
- add outlined CardView support (dc3b279)
- change button theme to not all-caps (a664bc8)
- expose Ti.Media.AudioPlayer.audioSessionId as read-only property (d8c64af)
- fetchSemanticColor() support dynamic light/dark change (0b07d89)
- have Ti.Database.DB.executeAllAsync return a Promise (41e83be)
- scale top tab style to fit icon (8d2831d)
- have Ti.Database.DB.executeAsync return a Promise (4b03ac6)
- make Geolocation getCurrentHeading/Position return Promises (fcf6d0a)
- return Promise from Ti.UI.Window.close() (d67537f)
- return Promise from Ti.UI.Window.open() (2fda671)
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 Ti.UI.Window.open()/close() (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
| 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 | 7.0.1 |