Git Product home page Git Product logo

apphub's Introduction

AppHub

apphub-ios is an iOS client for AppHub.

AppHub lets you instantly update React Native apps without resubmitting to the App Store.

Special thanks to BrowserStack by providing generous testing support and resources.

Features

  • Instantly update app code and images without resubmitting to TestFlight or the App Store.
  • Manage compatability between multiple native and JavaScript versions of your app.
  • Download updates in the background, or while your app is executing.
  • Seamlessly "hot swap" updates during app use.
  • Require that testers and users are on the latest version of your app.

Getting Started

The AppHub Developer Dashboard is a service which hosts and manages versions of your React Native app. Sign up with GitHub to get started.

Image of AppHub Dashboard

Once you sign up, the dashboard will walk you through incorporating the AppHub SDK into your React Native app.

Hosting your own AppHub Server

Some developers wish to configure their own backend to host and serve builds to mobile clients. This is an advanced feature; most developers choose to use AppHub hosting and the AppHub developer dashboard.

See the AppHub docs for full documentation on self-hosting.

Developer Resources

Interested in contributing to AppHub?

We are hiring! Visit https://apphub.io/jobs to learn more about working on the AppHub project.

Supporters

Thank you to BrowserStack for CI services.

apphub's People

Contributors

arbesfeld avatar bramsoffchain avatar orta avatar pecheriere avatar ptmt avatar richardgill avatar tonyxiao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apphub's Issues

App + Extension bundling

I'd like to be able to update both the App and Share Extension on it, both are using React Native.

I think I'd just need to use NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"com.something.etc.etc"]; somewhere?

If you have any suggestions or tips I would appreciate it. Thanks!

Add cocoapod integration

Avoids manual build configuration, similar to how react native itself integrates with projects

pod 'React', :path => '../node_modules/react-native', :subspecs => [
  'Core',
  'RCTImage',
  'RCTNetwork',
  'RCTText',
  'RCTWebSocket',
  # Add any other subspecs you want to use in your project
]

Also allowing compiling from source (with Cocoapods) will make debugging easier as well, rather than pre-compiled framework.

AppHubTestUtils Group: Error

Not sure how I broke this but my project has been working for a while now without uploading any new builds. I recently however, added a bunch of third party frameworks through cocoa pods, everything continued to work fine (testing and building locally on my phone). However, as soon as I decided this new version was ready to go, I ran the build script in the root of my project.

node_modules/.bin/apphub build -o build.zip

All of a sudden, my project doesn't build anymore. I keep getting
"cp: /Users/codeNpaper/Library/Developer/Xcode/DerivedData/trible-awrnadcirzvpsogljvduukttyuvj/Build/Intermediates/ArchiveIntermediates/trible/IntermediateBuildFilesPath/UninstalledProducts/iphoneos//usr/local/include/: No such file or directory"

Blank w/ Apple Watch?

Been enjoying apphub, but it's not working anymore as we have made a Watch extension. Is this a bug or technical limitation? Thank you.

duplicate symbol _kReachabilityChangedNotification

    /Users/X/Library/Developer/Xcode/DerivedData/project/Build/Products/Debug-iphonesimulator/libAppHub.a(AHReachability.o)
ld: 1 duplicate symbol for architecture x86_64
clang-real: error: linker command failed with exit code 1 (use -v to see invocation)
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1

The variable name is clashing with Reachability pod.

Add support to the CLI for generating Android builds

The AppHub CLI is currently hard-coded to iOS. We should add support for Android builds as well.

https://github.com/AppHubPlatform/apphub-ios/blob/master/cli/index.js#L48

The iOS build process zips a directory that contains the file contents like so:

build/
   main.ios.jsbundle
   Info.plist
   assets/

I imagine we could do similar for Android:

build/
    main.android.jsbundle
    build.gradle
    assets

In the future, we can consider a build format that support both iOS/Android in a single zip.

We also have to make sure that the backend can support the newer Android builds.

AppHub Android support?

The description for this repo mentions Android, however the instructions for creating a new build do not mention Android, nor do the quick start instructions (but there are Java instructions for Configuration (Native SDKs) article). There is a separate branch marked android that hasn't been touched in months.

I can't find any announcements or discussion indicating either way.

Apologies for the loose interpretation of "issue", but I am choosing to place this here as it will be indexed by Google and is likely to get a response that will help others answer the same question.

Crash related to RCTNativeAppEventEmitter

Hey,

When my users open the app and there's an update pending, I get a crash that's originated in the sendAppEventWithName call in your AppHubReactModule code.
I read a bit about it and it seems like others also experience some crashes when using sendAppEventWithName instead of sendDeviceEventWithName.

Do you know smtng about it? Or alternatively on the crash I've described.

Thanks,
Guy

Add a way to force the app to update if the user never restarts their phone or exits the app

Currently, if the user never restarts the app, updated versions loaded from AppHub will never get run. Since certainly some people I know keep their iPhones on perpetually and never fully exit apps, this means they could be waiting a long time between updates.

My boss @TobyAbel recently raised this by email with @benthehenten asking whether there was any built-in way to deal with this problem (there isn't) and suggesting that otherwise we can roll our own logic to quit the app from the background so that it can update. Ben agreed we'd need to handle such a case manually. But I think there's actually a fair bit of nuance here and it would be good to hash out how to do this publicly and then - if it is indeed possible - to add a method to the library that implements this logic.

Interface-wise, I'm imagining being able to add something like

[AppHub restartAndLoadNewBuildWhenInactiveForMinutes: 60];

to my AppDelegate.m in order to have the app request background execution time to kill itself whenever there is a new build waiting to be run and it has been inactive for at least an hour.

This seems like it's probably pretty easy for somebody familiar with the native framework's API to bash out, but tricky for every React Native developer to need to roll themselves, which to my eyes justifies including it in the SDK. Thoughts?

Also, does anybody know whether doing this would even be allowed per Apple's rules? I've read contradictory things on the internet about the acceptability of calling exit(0). https://developer.apple.com/library/ios/qa/qa1561/_index.html is pretty explicit about it being a thing that should not be done, but I've read people claim to have successfully submitted apps to the app store that call it. Thoughts?

And if we can't implement killing the app from the background, what would be the nicest way to reinitialise the React Native part of it from the background instead, and can that similarly be nicely wrapped up in a method in this SDK?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.