Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add first class support to @ionic/react for Next JS SSR + Partial page pre-rendering #29690

Open
3 tasks done
laurencefass opened this issue Jul 5, 2024 · 2 comments
Open
3 tasks done
Labels

Comments

@laurencefass
Copy link

laurencefass commented Jul 5, 2024

Prerequisites

Describe the Feature Request

Im a Next JS developer and recently started using capacitor. NextJS Capacitor integration is flawless and "just works". Now I need a decent mobile theme.

I have been able to wrap my root layout with a client IonAppProvider, but it appears all pages need to be client rendered because of content. This wont work without 'use client'.

import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from "@ionic/react";

export default function Page() {
    return <IonPage id="main-content">
        <IonHeader>
            <IonToolbar>
                <IonButtons slot="start">
                    <IonMenuButton></IonMenuButton>
                </IonButtons>
                <IonTitle>Menu</IonTitle>
            </IonToolbar>
        </IonHeader>
        <IonContent className="ion-padding">
            <h1>Server Component</h1>
            Ionic renders on the server
        </IonContent>
    </IonPage>
}

Given the existing prevalence and the growing importannce of SSR and in particular partial page pre-rendering techniques across different frameworks are there any plans to make Ionic more isomorphic so it "just works" on server and client? Is that even possible?

Could it also be made more router agnostic so it works with next and doesnt require a <RouterOutlet />?

Describe the Use Case

Server side rendering and Partial Page pre-rendering.

Describe Preferred Solution

Next JS (14+) and Ionic integration without reliance on the React Router integration.

Describe Alternatives

No response

Related Code

No response

Additional Information

No response

@ionitron-bot ionitron-bot bot added the triage label Jul 5, 2024
@laurencefass laurencefass changed the title Add first class support for server side rendering. Add first class support for Next JS SSR + Partial page pre-rendering Jul 5, 2024
@laurencefass laurencefass changed the title Add first class support for Next JS SSR + Partial page pre-rendering Add first class support to @ionic/react for Next JS SSR + Partial page pre-rendering Jul 5, 2024
@christian-bromann
Copy link
Member

@laurencefass thanks for raising this issue.

We are currently actively working on supporting Next.js SSR + Partial re-rendering support on Stencil which will enable this feature for the Ionic framework. I recommend to follow these issues to get updates on the developments:

@laurencefass
Copy link
Author

laurencefass commented Jul 7, 2024

thanks!

worth mention:

I also asked: "Could it also be made more router agnostic so it works with next and doesnt require a <RouterOutlet />?_"

It doesnt.

Navigation with IonMenu works without having installed React Router. Next JS routing from IonMenu <Link> anchors appears to just work i.e. Im able to navigate my entire Next 14 app router site with no React Router nor RouterOutlet, and the history works too. Only additional work needed is to include callbacks to close the IonMenu via an event where this seems automatic using ReactRouter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants