A powerful API for enhanced native experiences
Portals provides a powerful cross-platform API to expose native functionality for embedding rich web apps in a controlled manner, a robust web-to-native communication bridge—and coming soon, cloud services for real-time app updates and more. Interested in testing it out early? Make sure to drop us a note.
import IonicPortals
class HomeViewController: UIViewController {  override func loadView() {    let portal = Portal(      name: "myPortal",       startDir: "web_app",      initialContext: ["startingRoute": "/home"]    )        self.view = PortalUIView(portal: portal)  }}
class ProfileFragment : PortalFragment {    constructor() : super()    constructor(portal: Portal?) : super(portal)    companion object {        @JvmStatic        fun newInstance(): ProfileFragment {            val portal: Portal = PortalBuilder("myPortal")                .addPlugin(ShopAPIPlugin::class.java)                .setInitialContext(mapOf("startingRoute" to "home"))                .setStartDir("web_app")                .create()            return ProfileFragment(portal)        }    }}
import ShopAPI from './ShopAPIPlugin';import Portals from '@ionic/portals';
const App: React.FC<InitialContext> = () => {  const [sessionInfo, setSession] = useState(null);  const [startingRoute, setInitialRoute] = useState(null);
  useEffect(() => {    const { context, sessionInfo } = await Promise.all(      Portals.getInitialContext());      ShopAPI.getSessionInfo());    );    setInitialRoute(context.startingRoute);    setSessionInfo(sessionInfo);  }, []);
  // ...