Flex v4.0.0 Release Notes

Release Date: 2020-03-24 // about 4 years ago
  • ๐Ÿš€ This release has been the product of months of daily work. Most of FLEX was rewritten from the ground up. If you want to show your appreciation, I have a GitHub Sponsors profile with a range of tiers where you can donate to me on a monthly basis. I also have Cash App ($tannerbennett). Reach out to me on Twitter if you have any questions or concerns about anything!

    (This is by no means a complete list of changes)

    Misc

    • โฌ‡๏ธ Drops support for iOS 8 โ€” if you need to support iOS 8, use FLEX 3
    • Tabs! Every screen now has a toolbar you can use to view the list of open tabs and switch between them.
      • Background a tab by swiping down to dismiss the view controller (yes, even if you're not on iOS 13, try it)
      • Close a tab by pressing the "Done" button or by deleting it from the tabs list
    • Bookmarks! Bookmark objects to save them for later
      • Hit the + button in the tabs list to open a tab from a bookmark
    • ๐Ÿ†• New icons for the FLEX toolbar, taken from SFSymbols (yay @3x)
    • ๐ŸŒฒ System log is back from the dead: iOS 10 largely broke the system log feature with the addition of os_log. FLEX now forces NSLog() to use ASL so you don't get a log full of useless internal junk
    • โž• Added various singletons to the main menu screen
    • Dark mode improvements
    • โš™ Run queries on SQLite databases (thanks @LesykMelnychuk)
    • Most screens are now searchable, including lists of object references and the keychain
    • ๐Ÿ’ป File browser now shows a list of classes when you select a mach-o file
    • More public APIs have been exposed
    • โž• Added a Swift example project which makes use of some new public APIs

    FLEX Toolbar

    • Long press on the Menu button to show the list of open tabs
    • Long press on the Views button after selecting a view to show a list of view controllers at that point
    • ๐Ÿ Long press on the Select button to show a list of all windows and scenes; tap a window to adjust it's level
    • โž• Added a Recent button which opens the most recently backgrounded tab

    FLEXObjectExplorer

    • ๐Ÿ†• New APIs for customizing "shortcuts" that are displayed for any given object or class
    • ๐Ÿ“‡ Uses a monospace font for displaying metadata
    • โž• Adds context menus for metadata rows on iOS 13, useful for copying various metadata properties
    • Protocol conformances are listed at the bottom, as well as instance size and image of origin
    • โž• Added various helpful shortcuts to a number of classes
    • Fine-tuned the shortcuts for various UIKit classes
    • Swipe left or right to change your position in the class hierarchy
    • Tapping on a property or ivar now takes you to the value; press the detail button to edit instead
    • โž• Added a section index control to aid in quickly jumping to a specific metadata section
    • โž• Added a toolbar with quick access to helpful toggles or options
      • Toggles for visibility of method overrides, property-backing ivars, and property-backing methods
      • Quickly copy the object's description or address or bookmark it
      • Quickly access the list of bookmarks or open tabs
    • ๐Ÿ‘Œ Support NSDecimalNumber setters
    • โž• Added option to view a list of subclasses when exploring a class object

    View Explorer

    • ๐Ÿšš Swipe left or right on the toolbar's selected view box quickly to move your selection higher or deeper into the view hierarchy
    • โž• Added a 3D reveal-like view explorer: explore an exploded representation of the view hierarchy right on your device!
    • Background colors of views are more accurately indicated
    • Translucency is now correct
    • nil background colors don't show a color indicator at all

    ๐Ÿ’ป Runtime Browser

    • Replaces the System Libraries and App Classes screens
    • Browse the runtime using a key-path-like syntax: bundle.class.method
      • Accepts wildcards, like *.*View* which will list all classes that contain View
      • Currently only supports searching for methods, properties and ivars soon to come
      • Search for an instance method with -methodName, a class method with +methodName, or either by prefixing your query with a wildcard
      • For example, UIKit*.*Controller.*foo searches for any method containing foo in any class ending with Controller in any loaded bundle starting with UIKit

    Method Calling

    • โž• Added a "paste" button to argument input accessory views, useful for pasting an address
    • โž• Added support for char * and SEL parameters

    Network History

    • Now prompts you to turn it on before taking you to the screen
    • Easy access to the "clear" button in the toolbar
    • iOS 13 users can blacklist domains by 3D touching on requests
    • ๐Ÿ›ฐ JSON payloads are now displayed as NSDictionary/NSArray when you try to view them