The Art World in Your Pocket or Your Trendy Tech Company's Tote, Artsy's mobile app.

Overview

Meta

This is an Artsy OSS project. Other mobile projects are Energy and Eidolon, with the retired Emission and Emergence.

Don't know what Artsy is? Check out this overview and more, or read our objc.io on team culture.

Want to know more about Eigen? Read the mobile blog posts, or eigen's specifically.

Getting Started

Get set up here. Further documentation can be found in the documentation folder.

Deployment

For how we deploy, check out the dedicated documentation:

Thanks

Thanks to all our contributors.

License

MIT License. See LICENSE.

About Artsy

This project is the work of engineers at Artsy, the world's leading and largest online art marketplace and platform for discovering art. One of our core Engineering Principles is being Open Source by Default which means we strive to share as many details of our work as possible.

You can learn more about this work from our blog and by following @ArtsyOpenSource or explore our public data by checking out our API. If you're interested in a career at Artsy, read through our job postings!

Comments
  • dyld crash at launch

    dyld crash at launch

    • A colleague ran into a situation where the app would crash on launch. Important to note is that she was also seeing it with other apps, such as LinkedIn.app.
    • A restart of her device ‘fixed’ the issue.
    • These crashes were not being reported to HockeyApp, meaning it was definitely happening very early in the process.
    • Extracting the crash reports directly from the device revealed a dyld error.
    • Checking iTunesConnect for crash reports revealed that we had ~80 similar crash reports.

    TL;DR

    This appears to happen when the device is out of memory, a restart of the device ‘fixes’ it. Presumably this neat trick does so as well.

    Info about the errors

    Dyld Error Message:
    Dyld Message: Library not loaded: @rpath/CocoaLumberjack.framework/CocoaLumberjack
      Referenced from: /var/mobile/Containers/Bundle/Application/D693664B-F6D0-43CB-A839-358E15CAF9E6/Artsy.app/Artsy
      Reason: no suitable image found.  Did find:
        /private/var/mobile/Containers/Bundle/Application/D693664B-F6D0-43CB-A839-358E15CAF9E6/Artsy.app/Frameworks/CocoaLumberjack.framework/CocoaLumberjack:
        mremap_encrypted() => -1, errno=12 for /private/var/mobile/Containers/Bundle/Application/D693664B-F6D0-43CB-A839-358E15CAF9E6/Artsy.app/Frameworks/CocoaLumberjack.framework/CocoaLumberjack
    
        /private/var/mobile/Containers/Bundle/Application/D693664B-F6D0-43CB-A839-358E15CAF9E6/Artsy.app/Frameworks/CocoaLumberjack.framework/CocoaLumberjack:
        mremap_encrypted() => -1, errno=12 for /private/var/mobile/Containers/Bundle/Application/D693664B-F6D0-43CB-A839-358E15CAF9E6/Artsy.app/Frameworks/CocoaLumberjack.framework/CocoaLumberjack
    
        /private/var/mobile/Containers/Bundle/Application/D693664B-F6D0-43CB-A839-358E15CAF9E6/Artsy.app/Frameworks/C
      Dyld Version: 370.1
    
    • The error message and codes are always the same.
    • The error is not specific to a framework, it happens with various frameworks.
    • It appears to have started from iOS 9.1 and up (but that could very well be iOS 9).

    Known affected versions

    These are the various versions for which we have crash reports.

    iOS versions

    ~/D/dyld crash » ack -h 'OS Version:' **/*.crash | sort | uniq
    OS Version:          iOS 9.1 (13B143)
    OS Version:          iOS 9.2 (13C75)
    OS Version:          iOS 9.2.1 (13D15)
    OS Version:          iOS 9.2.1 (13D20)
    OS Version:          iOS 9.3 (13E5214d)
    OS Version:          iOS 9.3 (13E5225a)
    

    dyld versions

    ~/D/dyld crash » ack -h 'Dyld Version:' **/*.crash | sort | uniq
      Dyld Version: 370.1
      Dyld Version: 370.6
      Dyld Version: 390.7
    

    Device versions

    ~/D/dyld crash » ack -h 'Hardware Model:' **/*.crash | sort | uniq
    Hardware Model:      iPad3,4
    Hardware Model:      iPad4,4
    Hardware Model:      iPad4,7
    Hardware Model:      iPad5,3
    Hardware Model:      iPad5,4
    Hardware Model:      iPad6,7
    Hardware Model:      iPad6,8
    Hardware Model:      iPhone6,1
    Hardware Model:      iPhone7,1
    Hardware Model:      iPhone7,2
    Hardware Model:      iPhone8,1
    Hardware Model:      iPhone8,2
    

    Retracing

    1. The error is raised here in dyld.
    2. Only place where mremap_encrypted could return -1 is here.
    3. vn_getpath calls build_path, which in turn has a few possible locations where it could be returning -1:
      • https://github.com/opensource-apple/xnu/blob/977178fc3e01a280624e2095838cb9530763cda9/bsd/vfs/vfs_cache.c#L404
      • https://github.com/opensource-apple/xnu/blob/977178fc3e01a280624e2095838cb9530763cda9/bsd/vfs/vfs_cache.c#L446
      • https://github.com/opensource-apple/xnu/blob/977178fc3e01a280624e2095838cb9530763cda9/bsd/vfs/vfs_cache.c#L509
    4. But trying to hunt that further down would take a lot more time, suffice to say that:
      • if mremap_encrypted returns -1, it most likely corresponds to ERESTART: https://github.com/opensource-apple/xnu/blob/2fa84067f6cdeb23267f877ca4fd26201316da1b/bsd/sys/errno.h#L270
      • if errno is 12, it most likely corresponds to ENOMEM: https://github.com/opensource-apple/xnu/blob/2fa84067f6cdeb23267f877ca4fd26201316da1b/bsd/sys/errno.h#L102

    Caveats

    Alas, the latest dyld sources to be released (at the time of writing) appear to be for version 360.18.

    Taking a cursory look at the decompiled code for ImageLoaderMachOCompressed::registerEncryption from a firmware image for iOS 9.2 for iPad3,4, does not appear to have any real changes.

    ~/t/ios-9.2-iPad3,4 » unzip iPad3,4_9.2_13C75_Restore.ipsw 
    Archive:  iPad3,4_9.2_13C75_Restore.ipsw
      inflating: 058-25903-078.dmg       
      inflating: 058-26242-078.dmg       
      inflating: 058-26268-078.dmg
    […]
    
    ~/t/ios-9.2-iPad3,4 » ~/Code/ObjectiveC/Debugging/xpwn/dmg/dmg extract 058-26268-078.dmg extracted.dmg -k 7ccd940dfda4b304c87050997e9fd70b458f21b5f3845262d985730b23f41e84aa25dae3
    Writing out data..
    […]
    
    ~/t/ios-9.2-iPad3,4 » open extracted.dmg
    ~/t/ios-9.2-iPad3,4 » hopper -e /Volumes/Castlerock13C75.P101OS/usr/lib/dyld
    
    int ImageLoaderMachOCompressed::registerEncryption(encryption_info_command const*, ImageLoader::LinkContext const&)(void * arg0, void * arg1) {
        r0 = arg0;
        r7 = (sp - 0x4 - 0x4 - 0x4 - 0x4 - 0x4) + 0xc;
        sp = sp - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4;
        r6 = arg1;
        r8 = r2;
        r4 = r0;
        if (r6 != 0x0) {
                r5 = 0x0;
                do {
                        r2 = *(*r4 + 0xe8);
                        if ((r2)(r4, r5, r2) != 0x0) goto (null);
                        r5 = r5 + 0x1;
                } while (true);
                r1 = r5;
                r2 = *(*r4 + 0x104);
                r0 = (r2)(r4, r1, r2);
                r10 = r6 + 0x8;
                asm{ ldm.w      sl, {r1, r5, sl} };
                r2 = *(r8 + 0xb2);
                r8 = *(r0 + 0x4);
                r6 = r0 + r1;
                r11 = *(r0 + 0x8);
                if (r2 != 0x0) {
                        dyld::log("                      0x%08lX->0x%08lX configured for FairPlay decryption\n");
                }
                r0 = _mremap_encrypted();
                r5 = r0;
                if (r5 != 0x0) {
                        r0 = ___error();
                        r3 = *(r4 + 0x4);
                        r2 = *r0;
                        r1 = r5;
                        r0 = dyld::throwf("mremap_encrypted() => %d, errno=%d for %s\n");
                        // …
                }
        }
        return r0;
    }
    

    Conclusion

    The crash at launch definitely feels like a very bad experience and I feel like iOS should handle this more gracefully. Maybe show an alert? Will have a think about this and possibly file a radar.

    I’m not sure what/if we can do about this. We could probably improve it somewhat by trimming some framework fat from the bundle, but I don’t think these are large anyways.

    It would be interesting to know if such failures occurred prior to iOS 9 and if they were labelled differently.

    Status

    • A couple of radar tickets have already been filed:
      • http://www.openradar.me/radar?id=4952667885404160 (mine)
      • http://www.openradar.me/radar?id=5054516256833536
      • http://www.openradar.me/radar?id=4992459683659776
    • A DTS ticket has been filed http://twitter.com/senior/status/707996353964728321
    • A guess has been made as to the issue being a jetsam change https://twitter.com/Catfish_Man/status/707955795493687296 (jetsam is the process in which the kernel basically kills apps to free up memory)
    Crash 
    opened by alloy 76
  • Adds Sentry for Error handling

    Adds Sentry for Error handling

    This adds Sentry, replacing Hockey for crash reporting, as we're standardising on Sentry across Artsy.

    • Adds the Sentry Pod, this is their main supported one, but they do have a non-Swift version too
    • Adds new CocoaPods Keys, these can be found in the team 1password
    • Adds a new analytical provider (in the app, the one in ARAnayltics is for the old SDK)
    • Adds uploading dSYMs to Sentry during deployment

    TODO because I want to give it a final look over tomorrow.

    Might need to do this too: https://blog.sentry.io/2017/05/01/release-commits.html

    opened by orta 47
  • Notification types and proposed schedule

    Notification types and proposed schedule

    All users, trial or not

    1. Fair Preview now open--> 12pm local time suggested copy:"Fair X Preview is now open, "x" works now on view
    2. Auction now open--> 9pm local time suggested copy: "Auction X is now open, bid on works from Artist Name 1, Artist Name 2, and more"
    3. Auction closing soon--> 1 hr before auction closes suggested copy: "Last chance to bid in "Auction X"

    Per User, logged in user

    1. Outbid at auction--> immediately suggested copy: "You've been outbid in "Auction X" Increase max bid now"
    2. New Works by artist you follow--> 10am local time suggested copy: "X" new works by Artist Name 1, Artist Name 2, and more"
    opened by katarinabatina 41
  • @ashfurrow => Related artworks.

    @ashfurrow => Related artworks.

    This fixes #113.

    So I decided to take the if-else block out of ARArtworkRelatedArtworksView and make that a controller concern (still to do). The controller then simply adds the sections for the right context and the view doesn’t need to know about it.

    Right now my biggest question is about the sale update, it’s not really clear to me how this is working. I assumed it was so that when you’re looking at an auction lot, it keeps the bids up-to-date? But besides it setting a property (saleArtwork) I don’t see how it would do that. Any hints?

    opened by alloy 34
  • @alloy => Fixes iPad Sharing

    @alloy => Fixes iPad Sharing

    Fixes #367 with a technique discussed on that issue.

    Remaining work:

    • [x] Write tests.
    • [x] Get the share sheet to be present properly (see screenshot below).

    ios simulator screen shot may 12 2015 10 11 48 pm

    It's soooo tiny right at the bottom.

    opened by ashfurrow 30
  • Notifications VC: New Works by Artist You Follow (Bell)

    Notifications VC: New Works by Artist You Follow (Bell)

    This design does not differ too greatly from what is currently served up by the microgravity view accessed through the YOU VC but in order to increase reliability of the view coming from push it makes sense to make this change.

    Included are specs for the view across device types and corresponding zero states. The zero state of this view could have a greatly improved user experience but in the spirit of keeping the scope small we'll stick with this for now.

    image


    DEV TODO:

    • [x] Switch for native / web
    • [x] Basic view - almost there now
    • [x] Empty view
    • [x] Network model
    • [x] Mark as read functionality
    • [x] Snapshot tests for VC
    • [x] Tests for network model
    • [x] Disable rotation
    • [x] Fix padding on embedded model VC
    • [x] iPad padding and spacing
    • [x] Artist linking
    opened by katarinabatina 29
  • [Danger] Support showing the build times when something goes above a threshold

    [Danger] Support showing the build times when something goes above a threshold

    There's been a lot of talk in the community about ways to speed up builds, notably thatthinginswift and from bryan irace. These offer one-off ways to check when you think something is slow.

    Realistically though, what happens is a long tail of small methods that add up and slowly consume your sanity - till it looks like code Injection is the only way to work productively.

    Luckily we have Danger, this PR is adding the ability for us to find out in our CI whether we're introducing code that is taking a long time to compile - either from pods or our app.

    Incase you were wondering, Eigen's swift build time wasn't terrible:

    ~/d/r/Rainforest (master) ⏛  pbpaste | egrep '\.[0-9]ms' | sort -t "." -k 1 -n | tail -10
    62.2ms    /Users/orta/dev/ios/apps/eigen/Artsy/View_Controllers/Live_Auctions/Views/LiveAuctionToolbarView.swift:49:10    func setupUsingState(lotState: LotState)
    71.1ms    /Users/orta/dev/ios/apps/eigen/Artsy/View_Controllers/Live_Auctions/LiveAuctionLotSetViewController.swift:29:19    @objc override func viewDidLoad()
    73.2ms    /Users/orta/dev/ios/apps/eigen/Artsy/Views/Auction/AuctionTitleView.swift:90:10    func titleView() -> UIView
    79.0ms    /Users/orta/dev/ios/apps/eigen/Artsy/View_Controllers/Auction/AuctionViewController.swift:123:10    @objc dynamic func setupForSale(saleViewModel: SaleViewModel)
    85.2ms    /Users/orta/dev/ios/apps/eigen/Artsy/View_Controllers/Auction/RefinementOptionsViewController+Private.swift:63:10    func stackView() -> ORStackView
    86.8ms    /Users/orta/dev/ios/apps/eigen/Artsy/App/ARHockeyFeedbackDelegate.swift:19:10    @objc func showFeedback(image: UIImage? = default)
    92.0ms    /Users/orta/dev/ios/apps/eigen/Artsy/Views/Auction/AuctionBannerView.swift:41:18    private func setupViews()
    188.3ms    /Users/orta/dev/ios/apps/eigen/Pods/Starscream/Source/WebSocket.swift:528:18    private func processRawMessage(buffer: UnsafePointer<UInt8>, bufferLen: Int)
    215.7ms    /Users/orta/dev/ios/apps/eigen/Pods/Starscream/Source/WebSocket.swift:528:18    private func processRawMessage(buffer: UnsafePointer<UInt8>, bufferLen: Int)
    551.7ms    /Users/orta/dev/ios/apps/eigen/Artsy/View_Controllers/Auction/AuctionViewController.swift:176:10    @objc dynamic func showRefineTappedAnimated(animated: Bool)
    

    But as mad-eye moody says, Constant Vigilance.

    opened by orta 28
  • [RFC] New dependency: Easy Peasy State Management

    [RFC] New dependency: Easy Peasy State Management

    New Dependency

    Name: easy-peasy URL: https://github.com/ctrlplusb/easy-peasy

    Focus

    Easy Peasy is a popular state management solution built on battle tested redux. It provides a modern API and comes with everything one needs to quickly manage inter-component state without needing to write everything from scratch. It has first class TypeScript support, gives us access to the redux middleware system, comes with an immer-based state update patterns, and proves some excellent (and simple) abstractions around observing actions within a system and acting on them without having to write mountains of glue code.

    Example from docs:

    const store = createStore({
      todos: {
        items: ['Create store', 'Wrap application', 'Use store'],
        add: action((state, payload) => {
          state.items.push(payload)
        })
      }
    });
    
    function App() {
      return (
        <StoreProvider store={store}>
          <TodoList />
        </StoreProvider>
      );
    }
    
    function TodoList() {
      const todos = useStoreState(state => state.todos.items)
      const add = useStoreActions(actions => actions.todos.add)
    
      return (
        <div>
          {todos.map((todo, idx) => <div key={idx}>{todo}</div>)}
          <AddTodo onAdd={add} />
        </div>
      )
    }
    

    Going forward Eigen would benefit from a consistent, hooks-based batteries-included state management pattern.

    Check List

    • [x] Have read over the source code, and we can maintain it
    • [x] Has had a release in the last year, or looks done and stable

    Alternatives

    There are quite a few alternatives in the react state management space. We could use redux directly, but the common complaint is that it's too verbose. We could also use react's context directly, but that would mean a lack of consistency, needing to hand-roll perf optimizations, no middleware, etc.

    RFC 
    opened by damassi 25
  • More stringent JSON parsing 📱

    More stringent JSON parsing 📱

    Howdy! So @dblock pointed out that an errant null returned from Metaphysics could still crash the app, so I added some regression tests and got some advice on Twitter about how to deal better with Objective-C JSON parsing. The only parts of our app that parse JSON manually are the ones that use GraphQL (and causality web socket stuff, which is handled by Swift optionals) so it definitely makes sense to test them and make them more robust. I looked for other signs of keypath access that didn't check for NSNull but didn't find any.

    I'm sending the PR to the 3.2.5-release branch because Apple will likely require us to submit a fresh binary anyway, and there's no reason that 3.2.5 shouldn't benefit from the better JSON parsing. I'm testing this on-device but my iOS 10 device is totally out of juice; I will mark the PR with an 📱 once it's been tested on-device.

    opened by ashfurrow 25
  • Sale Information Modal

    Sale Information Modal

    Part of #1035

    • [x] UI #1154
    • [x] Networking #1156

    Coming from an Auction Sale View or from the Live Bidding UI a user needs to access the core information about the sale

    coming from image

    huge oversight on my part omiting this from my initial breakdown of issues for native auction sale views, my apologies image

    for a reference as to how the sticky labels are supposed to operate on the FAQ please reference this example http://cl.ly/1F263X2q461r

    Auctions 
    opened by katarinabatina 25
  • Transition `_cents` fields to `display_.._dollars` fields (for non USD auctions)

    Transition `_cents` fields to `display_.._dollars` fields (for non USD auctions)

    In order to enable non USD auctions, recent PR's in gravity (https://github.com/artsy/gravity/pull/9179 as an example), has added JSON fields to help currency formatting.

    So, any field relating to bidding that was of the form _cents (such as estimate_cents), now will also include a display_estimate_dollars field. This field (a string), will include any currency information, as well as proper formatting/rounding.

    This makes it easier to actually put on a non USD auction, as clients can become 'dumber' and just render these fields directly, rather than doing a divide by 100 and add a $ sign, type thing.

    This is fully backwards-compatible (it's just extra JSON) so no rush, but it would be nice (and I think net code deletion for you guys) to switch to this.

    Here's an example of how Force was updated to use it: https://github.com/artsy/force/pull/3334

    Will open this issue in Eidolon as well.

    Thanks guys! Let me know if you have questions.

    Auctions 
    opened by mzikherman 22
  • build(deps-dev): bump json5 from 2.2.0 to 2.2.2

    build(deps-dev): bump json5 from 2.2.0 to 2.2.2

    Bumps json5 from 2.2.0 to 2.2.2.

    Release notes

    Sourced from json5's releases.

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Changelog

    Sourced from json5's changelog.

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Commits
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • d720b4f Improve readme (e.g. explain JSON5 better!) (#291)
    • 910ce25 docs: fix spelling of Aseem
    • 2aab4dd test: require tap as t in cli tests
    • 6d42686 test: remove mocha syntax from tests
    • 4798b9d docs: update installation and usage for modules
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 1
  • ci: android specific releases

    ci: android specific releases

    This PR resolves MOPLAT-427

    Description

    Follow-up to: https://github.com/artsy/eigen/pull/7284 https://github.com/artsy/eigen/pull/7353

    Allow releasing specific past versions on Android.

    • On uploading a beta to the playstore we will also upload the signed aab to s3
    • On promoting a beta to prod we will allow selection/download from s3 and then upload the selected build to the play store

    TODO:

    • [ ] Test upload is working properly
    • [ ] Test promotion is working properly (using alpha lane not prod 😬 )

    PR Checklist

    • [ ] I tested my changes on iOS / Android.
    • [ ] I added screenshots or videos to illustrate my changes.
    • [ ] I added Tests and Stories for my changes.
    • [ ] I added an app state migration.
    • [ ] I hid my changes behind a feature flag.
    • [ ] I have prefixed changes that need to be tested during a release QA with [NEEDS EXTERNAL QA] on the changelog.

    To the reviewers 👀

    • [ ] I would like at least one of the reviewers to run this PR on the simulator or device.
    Changelog updates

    Changelog updates

    Cross-platform user-facing changes

    iOS user-facing changes

    Android user-facing changes

    Dev changes

    • Allow releasing specific builds on Android - Brian

    Need help with something? Have a look at our docs, or get in touch with us.

    Jira Synced 
    opened by brainbicycle 2
  • build(deps): bump fast-json-patch from 3.0.0-1 to 3.1.1

    build(deps): bump fast-json-patch from 3.0.0-1 to 3.1.1

    Bumps fast-json-patch from 3.0.0-1 to 3.1.1.

    Release notes

    Sourced from fast-json-patch's releases.

    3.1.1

    Security Fix for Prototype Pollution - huntr.dev #262

    Bug fixes and ES6 modules

    Use ES6 Modules

    • package now exports non-bundled ES module Starcounter-Jack/JSON-Patch#232
    • main still points to CommonJS module for backward compatibility
    • README recommends use of named ES imports

    List of changes https://github.com/Starcounter-Jack/JSON-Patch/compare/v2.2.1...3.0.0-0

    Commits
    Maintainer changes

    This version was pushed to npm by mountain-jack, a new releaser for fast-json-patch since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 1
  • feat: add ability to scroll screen to top when tab is pressed

    feat: add ability to scroll screen to top when tab is pressed

    This PR resolves []

    Description

    PR Checklist

    • [ ] I tested my changes on iOS / Android.
    • [ ] I added screenshots or videos to illustrate my changes.
    • [ ] I added Tests and Stories for my changes.
    • [ ] I added an app state migration.
    • [ ] I hid my changes behind a feature flag.
    • [ ] I have prefixed changes that need to be tested during a release QA with [NEEDS EXTERNAL QA] on the changelog.

    To the reviewers 👀

    • [ ] I would like at least one of the reviewers to run this PR on the simulator or device.
    Changelog updates

    Changelog updates

    Cross-platform user-facing changes

    iOS user-facing changes

    Android user-facing changes

    Dev changes

    • Add ability to scroll screen to top when tab is pressed - dimatretyak

    Need help with something? Have a look at our docs, or get in touch with us.

    opened by dimatretyak 0
  • feat: changelog wip

    feat: changelog wip

    This PR resolves []

    Description

    pairing from mobile office hours @MrSltun @pvinis @brainbicycle

    PR Checklist

    • [ ] I tested my changes on iOS / Android.
    • [ ] I added screenshots or videos to illustrate my changes.
    • [ ] I added Tests and Stories for my changes.
    • [ ] I added an app state migration.
    • [ ] I hid my changes behind a feature flag.
    • [ ] I have prefixed changes that need to be tested during a release QA with [NEEDS EXTERNAL QA] on the changelog.

    To the reviewers 👀

    • [ ] I would like at least one of the reviewers to run this PR on the simulator or device.
    Changelog updates

    Changelog updates

    Cross-platform user-facing changes

    iOS user-facing changes

    Android user-facing changes

    Dev changes

    Need help with something? Have a look at our docs, or get in touch with us.

    opened by gkartalis 1
Releases(6.4.0-2020.03.27.19)
Owner
Artsy
Artsy.net Team
Artsy
GitHub in your pocket. Built with React Native

GitPoint GitHub in your pocket. Built with React Native. Table of Contents Introduction Features Feedback Contributors Build Process Backers Sponsors

GitPoint 4.6k Jan 1, 2023
A minimal iOS app that displays 3d graphic art in AR.

AR Art Attractors A minimal iOS AR(Augumented Reality) app that displays 3D graphic arts in AR. It uses attractor systems. An attractor is a set of st

Yasuhito Nagatomo 21 Nov 4, 2022
The source code to the civic tech project Öppna Skolplattformen.

Give us a ⭐ if you appreciate what we do! Öppna skolplattformen We are parents who got fed up with Skolplattformen, the City of Stockholm's school adm

Skolplattformen.org 784 Dec 29, 2022
Codepath prework project (Hello World app)

Hello World App Description TODO:// A Hello World App App Walk-though TODO:// Add the URL to your animated app walk-though gif in the image tag below.

null 0 Jan 17, 2022
A Hello World safari iOS extension

Hello_world_extension This is a Hello World chrome/ios_safari extension. How it works: When we click on the extension, it pop up a textarea prompt. In

Monika Kumari 0 Nov 18, 2021
Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone.

scrcpy-mobile Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone. Currently only supports control

Ethan 140 Jan 2, 2023
This is a simple mobile app which is connect to the Twitter API

Project 3 - My Twitter My Twitter is a basic twitter app to read your tweets. Time spent on two parts: 8.5 hours spent in total Twitter - Part II This

Alem 1 Dec 14, 2022
This is a basic mobile app that allows the user to tap a button to change the color of a label.

MYAPP App Description `This is a basic mobile app that allows the user to tap a button to change the color of a label. App Walk-though Required User S

null 0 Nov 27, 2021
CodePath-iOS-Prework - Prework project for Intro to Mobile App Development course on CodePath

CodePath iOS Prework App Description This app has an input field, text, and seve

Russell Elliott 0 Feb 2, 2022
BoldContacts mobile app for people with visual/cognitive/motor disabilities

BoldContacts mobile app BoldContacts™ is a mobile app that helps you browse your contacts and connect with them. BoldContacts is intended for people w

SixArm 25 Dec 15, 2022
A simple Hacker News mobile client

A simple Hacker News mobile client. Overview This app was built with the Hacker News API This is one of my first apps outside of a tut

Antonio Vega Ochoa 0 Nov 29, 2021
Restaurant - Educational application from the Apple Mobile Development Course for MDA

Restaurant Educational application from the Apple Mobile Development Course for

NIKOLAY NIKITIN 0 Aug 8, 2022
The Bitwarden mobile application is written in C# with Xamarin Android, Xamarin iOS, and Xamarin Forms.

Bitwarden Mobile Application The Bitwarden mobile application is written in C# with Xamarin Android, Xamarin iOS, and Xamarin Forms. Build/Run Require

Bitwarden 4.2k Dec 29, 2022
MicrofrontendGenerator - Script for creating micro frontends for Mobile in a simple and easy way

Introdução Template para a criação de SDK iOS. Existem duas opções de template:

Julio Fernandes Jr 4 Nov 2, 2022
Puma - A set of build utilities to automate mobile application development and deployment

Puma → https://github.com/onmyway133/Swiftlane Puma is a set of build utilities

Puma Swift 5 Oct 8, 2022
Runtime Mobile Security (RMS) 📱🔥 - is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime

Runtime Mobile Security (RMS) ?? ?? by @mobilesecurity_ Runtime Mobile Security (RMS), powered by FRIDA, is a powerful web interface that helps you to

Mobile Security 2k Dec 29, 2022
📱Objection - runtime mobile exploration

objection is a runtime mobile exploration toolkit, powered by Frida, built to help you assess the security posture of your mobile applications, without needing a jailbreak.

SensePost 5.6k Jan 7, 2023
Displays your HomeKit temperature sensors in your menu bar

Temperature Glance Displays your HomeKit temperature sensors in your menu bar Screenshot Note This is a very simple app that I made for myself but dec

Fernando Bunn 15 Nov 14, 2022
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Introduction Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the latest

Respresso 10 Nov 8, 2022