kreynolds

kreynolds

I’ve been exploring elixir and phoenix the last couple of weeks and built an API with phoenix but am having trouble connecting it to a react frontend. I tried this approach which more or less worked. Navigating to the root serves up the static files and react router takes over from there but if I navigate directly to a url phx router cant find a defined route and I get a “no route found for GET /login” page.

Is there a current guide or some pointers you guys can give me for best practices when connecting to more than a single page app?

Showing Posts 1 to 3

isaac-rstor

isaac-rstor

I’ve only done product demos, but I’ve had a lot of success with react frontend statically served using a static plug with API endpoints defined in plug, dispensing with most of Phoenix (plug underlies most Phoenix routes)

outlog

outlog

You’ll want a “catchall” in your router..

what urls are you using in the react app?

say you are using /admin and the controller is PageController index

  scope "/admin", MyApp.Web do
    pipe_through(:browser)
    get("/*path", PageController, :index)
  end

then hitting /admin/login will fire up the react app..

if you haven’t “scoped” you react with /admin or /app or similar I think you’ll need to be explicit eg.

  scope "/", MyApp.Web do
    pipe_through(:browser)

    get("/", PageController, :index)
    get("/login", PageController, :index)
   #etc
  end
kreynolds

kreynolds OP

I’m sorry if I’m asking obvious questions I’m pretty new to both backend and phoenix, most of my previous experience with backend work was C# and even that was limited.

@isaac-rstor Could you expand on this a little? Right now I’m using plug_static_index_html

  plug(Plug.Static.IndexHtml, at: "/")
  plug(
    Plug.Static,
    at: "/",
    from: "priv/pms-fe/build/",
    only: ~w(index.html favicon.ico static service-worker.js)
  )

to display my generated react scripts at the root, is there a way to route everything to this static directory and then redirect just the /api requests to my api controllers? I tried using a wildcard in the at: argument but couldn’t come up with anything.

@outlog Yeah that makes sense to me, I tried something similar but right now I’m not using a controller to display the react app, I experimented with setting up a view that generated an index.html I could hook into with react but couldn’t figure out a good way to integrate my generated js without bundling it all into an app.js I guess.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews