As of Gradio==5.15, multi-page apps are now supported in Gradio! Here's the syntax:
import gradio as gr
with gr.Blocks() as demo:
name = gr.Textbox(label="Name")
...
with demo.route("Settings", "/settings"):
num = gr.Number()
....
demo.launch()