Comments (6)
This has been split into 2 issues. Firstly, the client shouldn’t break when being imported on the server. This can be tracked here #9. This has been resolved as of 0.70, there's a nextjs example in this repository.
This issue will be for adding the ability to retrieve flags on the server. The difficulty here is the bulletTrain init function has a success callback.
One option would be to have the init function return a promise with the initial flags. However, the problem is a bit more complex than that as with SSR you may want to include an identity in your initial fetch to flags. For this to work on next you’d need to use a cookie implementation that can be accessed from both the client and server. Rather than bloat the client I’ll add an example react next app on how to do this.
from flagsmith-js-client.
Resolved
from flagsmith-js-client.
Resolved
from flagsmith-js-client.
When using the client with react, I would expect to be able to render from the server (initial render - we use Next.js and this is what happens).
Ideally, SSR would load the feature flags just like when using the nodejs client. But just being no-op on the server-side (when there is no ; window` global) would be enough. As long just requiring/importing the client does not throw an exception, it would be good.
from flagsmith-js-client.
This has now been implemented in the latest 0.7x.x version of the client, an example of SSR with nextjs can be found here.
https://github.com/SolidStateGroup/bullet-train-js-client/tree/master/examples/nextjs
It was a bit trickier than I thought, in order to make this possible, the client needed a way to restore state on the client. The readme in the above example should explain everything.
Any questions, feel free to reopen.
from flagsmith-js-client.
To people stumbling across this, as of 0.80.0, you will need to do.
import bulletTrain from 'bullet-train-client/isomorphic';
This has been reflected in the nextjs example in this repository.
from flagsmith-js-client.
Related Issues (20)
- isLoading never updates to false HOT 2
- Flagsmith's `loadingState.error` is not respect actual error state HOT 11
- [Bug] - NextJS >= 13.0.0 SSR `useFlagsmith` state not matching the state that is passed to the provider. HOT 16
- flagsmith/react only works in React 18 HOT 3
- [Bug] - TypeError: Cannot read properties of null (reading 'getValue') HOT 5
- Flagsmith's 'useFlags' doesn't return actual cached flags when request failed HOT 2
- Rollup Name for react HOT 5
- Inconsistent license information HOT 2
- Caching with multiple instance doesn't work HOT 6
- Typing issue in react.tsx: 'flagsmith' is possibly 'null' HOT 3
- useFlags() race condition HOT 8
- Different environments not working HOT 5
- Localstorage cache is not being wiped out in some edge cases HOT 3
- Support `getValue` fallback without `json` flag HOT 2
- useFlags not updating values in react18/Nextjs App Router
- 3.23.0 seems to have broken something HOT 4
- Intermittent Flakiness in Feature Flags on Safari/MacOS HOT 2
- Flags are null when the cacheFlags option is true HOT 3
- Typescript compiler errror `Cannot find name 'F'.` when compiling flagsmith in Angular project HOT 3
- Bundle ES(flagsmith-es) and combine with standard CJS module (flagsmith)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flagsmith-js-client.